Skip to main content

5 نصائح مهمة لحماية ووردبريس

بواسطة معاذ أشملي- wait... مشاهدة/ 23 تعليق
5 نصائح مهمة لحماية ووردبريس
2016-12-20

السلام عليكم ورحمة الله وبركاته

اليوم وبعد غياب طويل عن ساحة التدوين اريد ان اتطرق الى بعض النصائح ستساعدكم على زيادة حماية ووردبريس بشكل جيد , وايضا ما جعلني اقوم بهذه التدوينة بعض محاولات الاختراق التي تعرضت لها من قبل, ولا اخفي عليكم فان امر الاختراق لاي مدونة في اسضافة مشتركة (يعني توجد معك مواقع كتيرة في السيرفر) ليس بعيد المنال, مثل الوضع الذي انا فيه الان, المهم انا قمت ببعض الاحتياطات ربما تفيدكم. الان ندخل في صلب الموضوع

اولا قبل ان تطبق اي شيئ من هذه النصائح يجب عليك ان تعرف انا هناك اختلاف بين الاستضافت كل استضافة تقوم باعداداتها الخاص وبعض هذه النصائح قد تسبب لمشاكل مثل forbidden 403 error او 500 internal server error لهذا يجب عليك الحذر واخد نسخة احتياطية لملفات موقع وليس القاعدة لان الامر يتعلق بالملفات فقط

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 عن طريق الوسائط فلن تشتغل وهناك طريقتين لمنع الملفات من التنفيد

ملاحظة يجب عليك اولا انشاء ملف htaccess داخل مجلد uploads غالبا ما يكون على المسار التالي لموقعك :

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/

اعدادات الاضافة :

Login LockDown - مجلة ووردبريس

كما تلاحظون من خلال الصورة فهذه هي الاعدادات التي استعملها

Max Login Retries : عدد المحاولات لتسجيل الدخول يستسحن تكون ثلاتة

Retry Time Period Restriction : هنا نقوم بتحديد المدة التي يمكن خلالها محاولات تسجيل الدخول الثلاتة من نفس (IP) التي حددنها فوق

Lockout Length : هنا نقوم بمنع او حضر تسجيل الدخول ل (IP) الذي قام بالمحاولات الثلاتة الفاشلة لمدة ساعة

Lockout Invalid Usernames ? هذه الخاصية ستقوم بالمنع ايضا في حالة كان اسم العضو خطاء

Mask Login Errors ? هنا نقوم باخفاء اخطاء تسجيل الدخول

هذا كل ما في الامر بالنسبة لهذه الاضافة

نصائح اخيرة

  1. لا تستعمل باسورد cpanel في ملفات wp-config.php للاتصال بقواعد البيانات
  2. لا تضع مجلدات او ملفات مهمة في ملف robots.txt
  3. لا تتهاون في ترقية ووردبريس والاضافات

نهاية الارسال

هناك طرق اخرى للحماية لم اذكرها مثل عمل باسورد لمجلد wp-admin فقد تطرق لها العديد من الاخوة في الانترنت. الى هنا نكون قد اتممنا هذا الشرح المتواضع واعذروني على التقصير في عرض تدوينات فالوقت اصبح ضيق جدا هذه الايام واذا كان هناك اي استفسار او نقص في الشرح يرجى وضع تعليق ؟ ولا تنسوا الاشتراك في قائمتنا البريدية ولكم جزيل الشكر

5 نصائح مهمة لحماية ووردبريس بواسطة مجلة ووردبريس, يمكنك نقل ومشاركة التدوينة مع ذكر المصدر الأصلي للموضوع ، مع رابطه, التدوينة مرخصة بموجب المشاع الابداعي Creative Commons A-NC-SA 3.0.

التعليقات23 تعليق

المرجوا الانتظار لتحميل التعليقات...
عرض التعليقات
اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


شروط التعليق :

1 - المرجوا الابتعاد عن كتابة تعليقات بنمط (يعطيك العافية)، (روعة)، (ممتاز)، (مشكوووور)، (ابداع).

2 - زاوية التعليقات هي جزء مكمّل للموضوع الذي قرأته للتو. حاول أن تحصر تعليقك في صلب الموضوع حتى نستثمر هذا التعليق لكسب المزيد من الفائدة سواءً عن طريق مناقشة الموضوع أو عن طريق إضافة معلومات مكمّلة أو إبداء ملاحظات أخرى في نفس السياق.