5 نصائح مهمة لحماية ووردبريس
السلام عليكم ورحمة الله وبركاته
اليوم وبعد غياب طويل عن ساحة التدوين اريد ان اتطرق الى بعض النصائح ستساعدكم على زيادة حماية ووردبريس بشكل جيد , وايضا ما جعلني اقوم بهذه التدوينة بعض محاولات الاختراق التي تعرضت لها من قبل, ولا اخفي عليكم فان امر الاختراق لاي مدونة في اسضافة مشتركة (يعني توجد معك مواقع كتيرة في السيرفر) ليس بعيد المنال, مثل الوضع الذي انا فيه الان, المهم انا قمت ببعض الاحتياطات ربما تفيدكم. الان ندخل في صلب الموضوع
1 – تعطيل محرر الاضافات والقوالب
يمكنك في ووردبريس من تعطيل محرر القوالب والاضافة بواسطة كود بسيط, لكن السؤال هو لماذا اعطلها ؟ سوف تعطلها لسببين وهما :
السبب الأول : تمنع من اخترق حساب الأدمين للووردبريس من تعديل القوالب والاضافات وبهذه الطريقة تضمن عدم التلاعب بملفات القوالب والاضافات وقد تحدثنا عنها في التصاريح
السبب الثاني : وهو انك لست في حاجة لهذه المحرارات اصلا لانها بسيطة بشكل عادي جدا ولا اظن ان شخص يستعملها في تحرير قوالبه او اضافاته ويمكنك الاستغناء عنها باستعمال محرر الاكواد الموجود في cpanel او محرر النصوص Notepad++
المهم اذا اردت تعطيلها فما عليك سوى اضافة الكود التالي الى ملف wp-config.php وبهذا تمنع اي استغلال لمحرارات Editor
define( ‘DISALLOW_FILE_EDIT’, true );
2 – حماية بواسطة htaccess
هنا سنعرض بعض الطرق التي تساعدك ايضا في حماية ووردبريس وبطبيعة الحال سأعرض فقط الامور المهمة والتي لن تتسبب لك في اي مشاكل بنسبة لموقعك توجد طرق كتير لكن ليست مضومنة لاختلاف اعدادات الاستضافات
حماية htaccess و wp-config.php
هنا سنقوم بحماية هذه الملفات من القرائة بواسطة تغرات في الاضافات او ملفات الشل بالنسبة لثغرات فقد تكون auth pypass او local file include .مثلا لو وجدت تغرة في اضافة معينة تسمح بقرائة الملفات بالشكل التالي :
http://sitename.com/wp-content/plugins/anyname/options.php?page=../../../wp-config.php
هنا سيكون الدور الفعال للهيتاكسس htaccess بمنع قرائة الملف وعرض خطاء forbidden 403 error يعني لاداعي من الخوف في حالة كانت الاضافة مصابة ولكن تتهاون في ترقية اضافاتك كلما وجد هناك تحديثات لها
الكود الذي سنسنتعمل لحماية wp-config.php و htaccess :
<Files .htaccess> order allow,deny deny from all satisfy all </Files><Files wp-config.php> order allow,deny deny from all satisfy all </Files>
لا تنسى اذا كانت لديك نطاقات فرعية مركب عليها نسخة اخرى من ووردبريس ان تقوم بهذه الخطوات لها ايضا
منع تصفح مجلدات الموقع
هذه الطريقة لها دور مهم وهو منع اي زائر يحاول تصفح مجلد معين عن طريق المتصفح هنا ستعرض صفحة خطاء 403 لمن يحاول تصفح اي مجلد واهميتهما تكمن في حالة كنت تضع ملفات مهمة في مجلد معين ولا تريد شخص الحصول عليها, والامر بسيط للغاية كل ما عليك هو اضافة هذا الكود التالي في ملف htaccess :
Options -Indexes
منع تنفيد ملفات في مجلد معين
ان لم تهتم لجميع النصائح التي ذكرت والتي ساذكر بعد هذه ان شاء الله فلا تضيع تطبيق هذه الطريقة . الطريقة تعتمد على منع تشغيل اي سكريبت سواء php او cgi او perl في مجلد معين. يعني هذه الطريقة ستفيدك في حالة قام احد من الوصول الى حساب المدير (admin) في ووردبريس هنا حتى لو حاول رفع ملفات php, cgi او perl عن طريق الوسائط فلن تشتغل وهناك طريقتين لمنع الملفات من التنفيد
http://sitename.com/wp-content/uploads
الطريقة الاولى بمنع cgi-script من التنفيد في مجلد معين وذالك بتحديد صيغ هذه الملفات في ملف htaccess بالشكل التالي :
Options -ExecCGI AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
على فكرة يمكنك استعمال Options -ExecCGI بدون تحديد الملفات بواسطة AddHandler وسيتم تعطيل اي ملف يشكل خطر
الطريقة الثانية بعرض صيغ ملفات معينة كنص عادي (plain-text) وفي هذا الحالة ان تم رفع ملف php وتم استعراضه من المتصفح فانه سيعرض اكواد php كما لونك تريد تحرير ملف php. كل ما عليك هو اضافة الكود التالي الى ملف htaccess :
AddType text/plain .php .pl .py .jsp .asp .htm .shtml .sh .cgi
الطريقة الثانية هي الافضل لان الطريقة الاولى سيتم عرض اخطاء كتيرة في ملف error_log بالنسبة لي افضل الاولى وانت اختر ما تشاء منها وما يناسبك
منع تنفيد سلسلة من التغراث المحتملة
كما نعلم فالعديد من المخترقين يستعملون بعض الطرق والادوات لتحليل الثغرات الموجودة في موقعك هنا سوف نقوم بمنعهم قبل اختراق الموقع هنا سنستعمل هذه الكود :
RewriteCond %{REQUEST_METHOD} (GET|POST) [NC] RewriteCond %{QUERY_STRING} ^(.*)(%3C|RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)?javascript(%3A|:)(.*)$ [NC,OR] RewriteCond %{QUERY_STRING} ^(.*)document\.location\.href(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)http(%3A|:)(/|%2F){2}(.*)$ [NC,OR] ## المرجوا الحظر من هذه القاعدة , يمكن ان تتسبب في بعض مشاكل التوجيه ## RewriteCond %{QUERY_STRING} ^(.*)base64_encode(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)GLOBALS(=|[|%[0-9A-Z]{0,2})(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)_REQUEST(=|[|%[0-9A-Z]{0,2})(.*)$ [OR] RewriteCond %{QUERY_STRING} ^(.*)(SELECT(%20|\+)|UNION(%20|\+)ALL|INSERT(%20|\+)|DELETE(%20|\+)|CHAR\(|UPDATE(%20|\+)|REPLACE(%20|\+)|LIMIT(%20|\+))(.*)$ [NC] RewriteRule (.*) – [F]
كما تلاحظون في الكود فهو يحتوي على بعض الاكواد التي تدل على بعض طرق الاختراق مثل XSS و SQL-Injection
منع المخترق من تطبيق اوامر في حالة تم اختراقك بالفعل
هذا سينفعك في حالة وقع الفأس في الرأس اي اذا قام المخترق بالولوج الى موقعك ورفع سكريبتات لتنفيد الاوامر (أكود خبيثة لادري لما اقول له هذا الاسم 🙂 في الحقيقة هو معروف بالشل لدى العرب وحتى الاجانب) في هذه الحالة هذا الكود سيقوم بمنع تنفيد العديد من الاوامر . لكن قد يتسبب لك بمشاكل مع ووردبريس يجب عليك اختباره وحذف القواعد التي تسبب لك مشاكل
الكود ستجده في ملف نصي هنا
لا تنسى تغيير /home/user/ باسم المستخدم الخاص بك في cpanel قبل نسخ الكود في ملف htaccess
3 – إخفاء الأخطاء البرمجية ل PHP
بالنسبة لاخفاء الاخطاء البرمجية الغرض منها هو حماية اسم المستخدم الخاص بك خصوص لمستعملي cpanel فمكا نعلم ان اسم المستخدم يكون هو مسار الموقع مثال :
/home/mouad
وقد يستعمل هذا الاخير في ما يعرف بال (BruteForce) لكسر الباسورد الخاص بك في الاستضافة. المهم هناك ثلات طرق لاخفائ هذه الاخطاء البرمجية وقد قمت بتجربتها كلها ونجت معي طريقة واحدة وهي التي سأذكرها لكم واذكر الطرق الاخرى ايضا مع اني حاولت استعملها لاكنها لم تنجح معي
الطرق التي ساذكر هنا قمت بايجدها في موقع Perishable Press
الطريقة الاولى باستعمال php.ini
هذه الطريقة الوحيدة التي اشتغلت معي على استضافة hostgator وهي سهلة التطبيق الان كل ما عليك هو تتبع الخطوات التالية :
اولا قم بانشاء ملف باسم php_error.log حيث هذا الملف سيتم كتابة كل الاخطاء التي تقع في الموقع داخله دون عرضها في المتصفح ولا تنسى ان تعطيه التصريح 644 لكي يسمح بالكتابة عليه
ثانيا نقوم بانشاء ملف php.ini والذي دوره تعطيل هذه الأخطاء وارسالها الى الملف الذي انشئنا من قبل php_error.log . الام قم بنسخ الكود التالي داخل ملف php.ini :
display_startup_errors = false display_errors = false html_errors = false log_errors = true ignore_repeated_errors = false ignore_repeated_source = false report_memleaks = true track_errors = true docref_root = 0 docref_ext = 0 error_reporting = 999999999 log_errors_max_len = 0 error_log = /home/user/public_html/php_error.log
الان قم بتغيير اليوزر في السطر 14 الى اسم المسخدم الخاص بك او بمعنى اخر غير المسار الى المسار المتواجد به ملف php_error.log بعد ذالك قم بحفظ الملف
ثالتا نقوم باضافة قاعدة لملف htaccess لكي يتم إخفاء الاخطاء في جميع مجلدات الموقع وحتى النطاقات الفرعية سيشملها الاخفاء . هنا سنستعمل موديل suPHP لكن ليست كل الاستضافات تقوم بتفعيل, اذا لم يكون مفعل لديك سيحصل خطاء 500 inetrnal server error فيهذه الحالة ستضطر لنسخ ملف php.ini في جميع مجلدات موقعك والامر صعب بطبيعة الحال جرب الحلول التي سنذكرها لاحقا. الان كل ما عليك هو اضافة الكود التالي الى ملف htaccess :
suPHP_ConfigPath /home/user/public_html
رابعا بعد الانتهاء من الخطوات السابقة سنقوم بحماية ملف php.ini و php_error.log عن طريق اضافة قواعد لحماية في ملف htaccess بالشكل التالي :
<Files php.ini> order allow,deny deny from all satisfy all </Files><Files php_error.log> order allow,deny deny from all satisfy all </Files>
الطريقة الثاني لاخفاء الاخطاء بواسطة htaccess
هذه الطريقة تعتمد على ملف htaccess فقط لكن لا اظنها ستستغل في الاستضافات المشتركة حسبة ما قرأت في احدى المواقع المهم الطريقة سهلة اذا اردت اخفاء الاخطاء كل ما عليك هو اضافة القواعد التالية الى ملف htaccess :
php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off
واذا اردت ان تقوم بتسجيل الاخطاء في ملف معين قم بانشاء ملف باسم php_error.log واضافة القواعد التالية في ملف htaccess :
php_flag log_errors on php_value error_log /home/user/public_html/php_error.log
اذا تشتغلت مع الطريقة بدون مشاكل فلا تنسى ان تقوم بحماية الملف php_error.log باضافة القاعدة التالية :
<Files .htaccess> order allow,deny deny from all satisfy all </Files>
الطريقة الثالتة عن طريق wp-config.php
هذه الطريقة ايضا لم تنجح معي وهي تعتمد على ادراج اكواد php عادية وليست خاصة فقط للوردبريس يعني ممكن نستعملها في اي سكريبت كل ما عليك هو اضافة الاكواد التالية الى ملف wp-config.php وانت حظك اذا اشتغلت :
@ini_set(‘log_errors’,’On’); @ini_set(‘display_errors’,’Off’); @ini_set(‘error_log’,’/home/user/public_html/php_error.log’);
المهم لا تنسى تغيير user الى اسم المستخدم الخاص بك او بمعنى اخر ضع المسار الكامل للملف php_error.log
هذا كل ما يتعلق بإخفاء اخطاء php البرمجية وانصحك بتجربة الطرق الاخيرة قبل استعمال الطريقة الاولى بواسطة php.ini
4 – منع محاولات تسجيل الدخول بواسطة Brute-Force
هنا سنقوم بحماية لوحة تحكم وردبريس بمنع المخترقين من تنفيد عملية bruteforce للحصول على باسوور مدير سكريبت ووردبريس وهناك اضافات عديدة لهذه الغرض انا اقترح عليكم الاضافة Login LockDown الاضافة عن تجربة تقوم بدورها الكامل واعداداتها سهلة جدا
صفحة الاضافة على ووردبريس : http://wordpress.org/extend/plugins/login-lockdown/
اعدادات الاضافة :
كما تلاحظون من خلال الصورة فهذه هي الاعدادات التي استعملها
Max Login Retries : عدد المحاولات لتسجيل الدخول يستسحن تكون ثلاتة
Retry Time Period Restriction : هنا نقوم بتحديد المدة التي يمكن خلالها محاولات تسجيل الدخول الثلاتة من نفس (IP) التي حددنها فوق
Lockout Length : هنا نقوم بمنع او حضر تسجيل الدخول ل (IP) الذي قام بالمحاولات الثلاتة الفاشلة لمدة ساعة
Lockout Invalid Usernames ? هذه الخاصية ستقوم بالمنع ايضا في حالة كان اسم العضو خطاء
Mask Login Errors ? هنا نقوم باخفاء اخطاء تسجيل الدخول
هذا كل ما في الامر بالنسبة لهذه الاضافة
نصائح اخيرة
- لا تستعمل باسورد cpanel في ملفات wp-config.php للاتصال بقواعد البيانات
- لا تضع مجلدات او ملفات مهمة في ملف robots.txt
- لا تتهاون في ترقية ووردبريس والاضافات
نهاية الارسال
هناك طرق اخرى للحماية لم اذكرها مثل عمل باسورد لمجلد wp-admin فقد تطرق لها العديد من الاخوة في الانترنت. الى هنا نكون قد اتممنا هذا الشرح المتواضع واعذروني على التقصير في عرض تدوينات فالوقت اصبح ضيق جدا هذه الايام واذا كان هناك اي استفسار او نقص في الشرح يرجى وضع تعليق ؟ ولا تنسوا الاشتراك في قائمتنا البريدية ولكم جزيل الشكر
التعليقات - 5 نصائح مهمة لحماية ووردبريس : 23 تعليق