الدليل الشامل لحماية ووردبريس WordPress Security

WebCraker

العبد الفقير إلى الله
طاقم الإدارة
9 مارس 2008
5,640
50
48
Egypt
support-ar.com

مقدمة


هل تساءلت يوماً ما إن كانت الووردبريس برنامج محمي بشكل كافي؟ الإجابة نعم. حيث أن الووردبريس مبنية على أحدث التقنيات الأمنية وأيضا يصدر تحديثات وسد للثغرات الأمنية بشكل دوري. وتتم مراقبتها وصيانتها بواسطة مجموعة كبيرة من المطورين الذين يهتمون بشدة بالحماية.

إن كانت WordPress آمنة إذن فلماذا قمنا بعمل هذا الدليل حول تأمين وحماية ووردبريس؟ الحقيقة هى أن جزأ كبير من حماية موقعك يقع على عاتقك كمدير موقع وأيضا يحتاج متابعة مستمرة ، يتضمن ذلك عمل جدران نارية وتتبع الاختراقات وكشفها وتتبع أى تغييرات تحدث بدون تدخلك وأى وصول غير مسموح به للملفات او قواعد البيانات وإخفاء العلومات الحساسة والكثير من ذلك.
تعمل تقريبا أكثر من 30% من مواقع الانترنت على الووردبريس وهذه الشعبية الكبيرة جعلت الووردبريس هدفاً للهاكرز ومجرمي الإنترنت.
ولزاماً منا على مساعدة مالكى المواقع لحماية أنفسهم تم عمل هذا الدليل لمعرفة الطرق التي يمكنك بها حماية موقعك من الهجمات وحتى لا تكون فريسة سهلة للاختراق.

حماية الملفات وقواعد البيانات


قبل تنصيب ووردبريس
يجب دائما قبل تنصيب نسخة وودبريس جديدة استخدام أحدث نسخة، قم بتحميلها من الموقع الرسمي

  1. قم بتغيير بادئة الجداول لقاعدة البيانات
  2. استخدام أكواد AUTH_KEY جديدة
1) تغيير بادئة الجداول
يتم تعديلها فى عميلة التنصيب وأيضا فى ملف الكونفيج wp-config.php تجد السطر التالي
كود:
$table_prefix  = 'wp_';
يمكنك تعديلها لتصبح شىء مختلف كالتالي
كود:
$table_prefix  = 'website1_';
مع العلم ان هذه الطريقة أيضا تتيح لك استخدام نفس قاعدة البيانات لتنصيب أكثر من ووردبريس على نفس الموقع (فى حال كان المستضيف يسمح لك بعدد قليل من قواعد البيانات)

ماذا إن كان موقعى فعلا تم تنصيبه قبل فترة وليس جديد؟
إذا لم يكن لديك خبرة كافية لتغيير بادئة الجداول يدويا يمكنك استخدام اضافة Change Table Prefix

2) استخدام أكواد AUTH_KEY جديدة
هذه مفاتيح سرية تحمي جلسات المستخدم عن طريق تشفير ملفات الارتباط (Cookies)، أيضا قبل بدأ التنصيب يمكنك إنشاء مفاتيح جديدة واستخدامها ويمكنك تغيير هذه المفاتيح حتى بعد الانتهاء من التنصيب
يمكنك استخدام الرابط التالي لإنشاء مفاتيح سرية جديدة

https://api.wordpress.org/secret-key/1.1/salt/
ثم قم بإستبادالها فى ملف wp-config.php

هذه المفاتيح يكون لها هذا الشكل
كود:
define('AUTH_KEY',         '-I *qo0Yw?.2~Ho+GNc.~ZT3p-[47^4kFrfH#{B@oUucCKw0}7_)Cm{yO59EW9eI');
define('SECURE_AUTH_KEY',  '^bAH} CSru9k11oSSJP]lwdm-Lz$MOGL-D8(zeq+Q5DIEQJ;F|1wcsOM:vSg`ek+');
define('LOGGED_IN_KEY',    '{O;cR{a+Q4oq*|qwSi>5MN#~KF-7Y+kqOxj<bh3[}roQt<bS_8VL R>>yw-|z{=O');
define('NONCE_KEY',        '+6TSUX9slyhb2..MrBb^Nk_cID/ejuWbHSbE uS%cfOHt~YCrfx0E?AcKIko$2sa');
define('AUTH_SALT',        'ti&~t1PueV]YbjZMZ+Sm*|ZJ&q2!vz~d1P;M%No<,#}C^%DL|p+4I2<Ts(Ui$xJR');
define('SECURE_AUTH_SALT', 'Uk^i[)!-Jx{eF|#b`(M5HaIa;+AYxYH0JlQ&#9)>c[4~sQ-nss)f)}~j.5?()6<l');
define('LOGGED_IN_SALT',   '$6)-..?7pEjL_WuCGfrje:/+9eI|;</++oO0]!:#S(gF|PHRfy})2:&OHI%{Uf.*');
define('NONCE_SALT',       'f;jR]zy!xE$xvA|EJY;m(kp_m-T9v2Q-612.%[Wof`=s10R.q8;+zg{=B4tLP Hi');

تأكد أن تقوم بتغيير هذه المفاتيح كل فترة احترازياً أو ليتم تسجيل خروج كافة الأعضاء.

ما بعد تنصيب الووردبريس

بعد الانتهاء من تنصيب الووردبريس، يجب أن تقوم بحذف المدير الذي قمت بإنشاءه فى عميلة التنصيب وإنشاء عضوية ادارية جديدة بالإضافة إلى العضويات الأخرى المراد إضافتها.
يجب أن تتجنب استخدام الاسماء الإدارية الشائعة مثل admin او administrator والتي يتم استخدامها بكثرة فى عمليات تنصيب الووردبريس وغيرها.

- تغيير العضو الإداري admin من خلال phpmyadmin من خلال جدول wp_users يتم تغيير الاسم admin وتعديله إلى اى شىء آخر كما تحب كما بالصورة

attachment.php


- قم بإلغاء تفعيل إشعارات pingbacks و trackbacks من لوحة تحكم الووردبريس من Settings ثم Comments، لأنها قد تستخدم فى هجمات حجب الخدمة DDoS Attack
- قٌم بعد ذلك بحماية هذه الملفات من الاختراق وذلك عن طريق وضع الكود التالي فى بداية ملف .htaccess الرئيسي بموقعك

كود:
#Deny Directory Listing
Options - Indexes
#Block sensitive files
<files.htaccess>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>

منع الوصول غير المسموح به لبعض الملفات الهامة داخل مجلد الادمن wp-admin ويتم ذلك عن طريق وضع الكود التالي داخل ملف .htaccess الموجود داخل مجلد /wp-admin

كود:
#Block installation files
<files install.php>
Order allow,deny
Deny from all
</files>
<files setup-config.php>
Order allow,deny
Deny from all
</files>

- تأكد من التشييك على ملف robots.txt الموجود داخل المجلد الرئيسي لموقعك فقد يحتوى على بيانات حساسة، تأكد من أنك لم تضع مسار ملفات او مجلدات لا تريدها ان تظهر للعلن.

3) تعديل تصاريح الملفات والمجلدات
يجب التأكد من سلامة التصاريح للملفات والجلدات لأنه التصاريح الخطأ قد تكون أحد العوامل المسببة لأختراق موقعك.
يمكنك التعديل تصاريح الملفات والمجلدات من خلال مدير المجلدات File Manager الموجود فى السى بانل CPanel أو من خلال برنامج FTP

  • التصريح السليم للمجلدات هو 755
  • التصريح السليم للملفات هو 644
لكن هناك ملفين يجب ان يتم تغيير التصاريح لهم للحد من الوصول لهم ومن أجل الحماية:

  1. قم بتغيير تصريح ملف wp-config.php إلى 600
  2. قم بتغيير تصريح الملف .htaccess إلى 604
4) منع تشغيل ملفات php فى بعض المجلدات
رغم أن لوحة تحكم الووردبريس تمنع رفع ملفات بامتداد php إلا انه يجب الاحتياط والغاء تشغيل روابط php بشكل مباشر من بعض المجلدات مثل wp-content والمجلدات الفرعية داخله

لعمل ذلك نقوم بالتعديل على ملف .htaccess الموجود داخل مجلد wp-content ووضع الكود التالي فى أوله

كود:
<FilesMatch ".*\.(pl|cgi|py|shtml|php|sh|perl|php3|php5|phtml)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

هذا يجعل فى حال اختراق الملفات ورفع أى أكواد خبيثة داخل مجلد wp-content لا يمكن طلبها بشكل مباشر من المتصفح

(فى حال كان لديك اى اضافات تخص الكاش، يجب ان تقوم بإفراغ الكاش بعد كل تعديل على ملف .htaccess)

5) تعطيل تحرير الملفات من لوحة التحكم
هذه تعتبر نقطة حماية اضافية للحد من الاستخدام غير المسموح به وعدم تعديل الملفات فى حال اختراق اى عضوية ادارية وأيضا للحد من عبث أو خطأ أحد الإداريين.
لتفعيل هذه الخاصية يتم اضافة السطر التالي داخل ملف wp-config.php
كود:
define( 'DISALLOW_FILE_MODS', true );
أيضا هناك خيار آخر يمكنك اضافته فقط بعد الانتهاء من انشاء الموقع ويستخدم لمنع اضافة أى ثيمات او اضافات جديدة
يتم ذلك عن طريق اضافة السطر التالي داخل ملف wp-config.php
كود:
define( 'DISALLOW_FILE_MODS', true );
لا تنسي أن تقوم بتعطيل هذا السطر فى حال التعديل على الموقع سواء أردت تركيب إضافات أو ثيمات عن طريق وضع // فى بداية السطر او تعديل true إلى false فى السطر المُضاف.


6) استخدم شبكة محتوى CDN كـ DNS
طبعا نعرف جميعا أهمية استخدام شبكة محتوى أو ما نسميها CDN اختصاراً لـ Content Delievery Network، فاستخدامها يمكن أن يُحسن من سرعة موقعك بشكل ملحوظ وايضا من حماية الموقع عن طريق عدة نقاط منها:


  • تفعيل جدار ناري يتم تحديثه باستمرار ضد الاستخدامات الخبيثة وهجمات حجب الخدمة DDoS
  • منع هجمات Brute force attacks لأنها تسخدم شبكة سيرفرات موزعة جغرافيا مما يقلل من تأثير مثل هذه الهجمات، وأيضا يتم تطبيق قواعد للحد من مثل هذه الهجمات وكشفها تلقائيا. عادة ما تكون هذه الهجمات متعلقة بهجمات DoS, DDoS أو Distributed attack
  • إخفاء عنون IP الحقيقي للخادم المستضيف لموقعك مما يمنع الهجمات المباشرة على المستضيف الحقيقي لموقعك
أنصح بإستخدام CloudFlare كـ CDN لموقعك، ذلك سُيحسن حماية وسرعة تصفح موقعك. خدمة كلاود فلير متوفرة مع كافة خطط الاستضافة المقدمة من استضافة الدعم العربي ويمكن تفعيلها مباشرة من لوحة التحكم CPanel.

7) النسخ الإحتياطي لموقعك
يجب التأكد من النسخ الاحتياطي الكامل لموقعك وقواعد البيانات سواء من جانبك أو من جانب الإستضافة. قد لا تحتاج إلى استرجاع نسخة احتياطية أبداً ولكن لابد الأخذ فى الاعتبار أنه قد يتوقف تواجد واستمرارية موقعك على استرجاع نسخة احتياطية فى أحد الأيام بسبب خطأ فنى او اختراق أو اى سبب كان.

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

ما أنصح به لخدمة النسخ الإحتياطي:

  1. الاحتفاظ بعدد 3 نسخ احتياطية لموقعك
  2. الاحتفاظ بالنسخ الاحتياطية بصيغتين مختلفتين
  3. الاحتفاظ بنسخة احتياطية واحدة على الأقل خارجية
فى حال حدوث أزمات او كوارث، فإنه قد يكون من غير المفيد أن تكون كافة النسخ الاحتياطية فى نفس المكان أو نفس الصيغ. عموما تأكد ان تقوم بتحديث النسخ الاحتياطية دائما بشكل دوري.

تأمين تسجيل الدخول والجلسات Sessions

8) تفعيل البروتوكول الآمن HTTPS
تفعيل استخدام شهادة حماية SSL لموقعك أو ما يسمى بالبروتوكول الآمن للحماية من هجمات MITM (Man-in-the-Middle)، يتم استخدام شهادة حماية عندنا يتعلق الموضوع بنقل وتشفير بيانات حساسة او بيانات العملاء بين زوار الموقع والخادم.
لتفعيل البروتوكول الآن تقوم بتغيير الرابط من http إلى https من لوحة تحكم الووردبريس وأيضا يجب ان يتم تركيب شهادة حماية على سيرفر الاستضافة الخاصة بك. قد يتم تقديم شهادة الحماية مجاناً من شركة الاستضافة وقد تحتاج إلى شرائها من مزود الخدمة لديك أو أى شركة معروفة.

لدينا فى استضافة الدعم العربي نقدم شهادة حماية SSL مجانية مع كافة خطط الاستضافة مقدمة من cPanel (powered by Sectigo).

لابد من التأكد أولا ان لديك شهادة حماية مفعلة على استضافة موقعك، قم بعدها تقوم بوضع الكود التالي فى ملف wp-config.php
كود:
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
بعدها للتقليل من أخطاء شهادة الحماية كأخطاء Mixed content وغيرها يفضل تركيب اضافة Really Simple SSL

9) تغيير مسار مجلد الأدمن wp-admin
يتم التعرف اوتوماتيكاً على مجلد الأدمن بعد معرفة ان الموقع تم بناءه بواسطة ووردبريس ومن ثم تأتى مرحلة تجربة اختراق الموقع بعدة طرق منها تجربة كلمات مرور كثيرة bruteforce attack.
لذلك تغيير مسار مجلد الأدمن يضيف طبقة حماية اضافية لموقعك، يمكن عمل ذلك بواسطة العديد من الإضافات الموجودة على موقع ووردبريس وننصح بهذه الإضافة WPS Hide Login

10) تحديد عدد محاولات تسجيل الدخول
يمكن أن يتم حظر تسجيل الدخول لمدة دقائق او ساعات أو حظر دائم فى حال تم تجربة تسجيل الدخول لعدة مرات معينة يتم تحديدها مسبقاً. هذا يمنع البوتات من استكمال هجمات Brute force attack لأنه فى حال التجربة عدد معين من المرات تسجيل الدخول يتم حظر الايبى من الدخول وبذلك يتم ايقاف الهجوم أو جعله أصعب.

هذه الخاصية موجودة بالفعل فى إضافة الحماية Wordfence، وأيضا تتوفر هذه الميزة فى هذه الإضافات:

  • Limit Login Attempts (miniorange)
  • Limit Login Attempts Reloaded
  • Loginizer
أيضا توجد هذه الخاصية فى إضافات الفيروول (الجدار الناري)


11) استخدم إضافة فيروول Firewall
ليس المقصود هنا عمل جداري ناري على لوحة التحكم wp-admin ولكن المقصود به فحص وتحليل كافة الطلبات المقدمة للموقع WAF (Web Application Firewall)، تقريبا نفس طريقة عمل إضافة ModSecurity على سيرفرات CPanel حيث يتم اضافة قواعد Rules فى حال مطابقتها للطلب يتم حظرها. يُستخدم الجدار الناري هذا فى منع محاولات اختراق مثل SQL Injection و هجمات Brutforce والاستغلال الخبيث وغيرها الكثير.


توجد إضافات كثيرة لعمل الجدار الناري Firewall منها :

  • Wordfence Security
  • All in one security and firewall
  • iThemes Security
12) استخدام Security Headers
يمكن تحسين أمان موقعك من خلال تحسين Headers التي يتم إرسالها من خادم الاستضافة إلى المتصفح.
يمكنك البدأ بأول خيار X-Frame-Options الذي يمنع فتح صفحات موقعك فى إطار خارجى iframe
عن طريق اضافة السطر التالي إلى ملف .htaccess لموقعكـ، فأنت بذلك تخبر المتصفحات أن الاطارات أو الفريم iframe يمكنك فتحه فقط من داخل اسم النطاق الحالى:
كود:
 Header set X-Frame-Options SAMEORIGIN
إذن ماذا لو أردت السماح لنطاق آخر بفتح الموقع فى فريم ؟
استخدم الكود التالي للسماح لهذا النطاق وحظر البقية
كود:
Header set X-Frame-Options "ALLOW-FROM https://example.com/"
لزيادة أمان الموقع ضد هجمات XSS (Cross site scripting) على المتصفحات القديمة
كود:
Header set X-XSS-Protection "1; mode=block"
لا أريد ان أطيل عليكم بشرح تعليمات الـ Security Headers لأنها طويلة وتحتاج شرح مطول، لذلك البحث فى جوجل عن htaccess Security Headers لمزيد من المعلومات بالتفصيل
وايضا يمكنك استخدام هذه الإضافة HTTP Headers فهى أفضل وأسرع وتعطيك ان شاء الله تقييم A فما فوق وبالأسفل صور لموقع قمت بالعمل عليه يمكنك مراجعة الصور للمزيد من المعلومات والإرشاد

attachment.php


attachment.php

بعدين نرجع لقائمة الخيارات مرة أخرى ونختار الخيار التالي
attachment.php

قم بتعديل قيمة X-Powered-By لأى شىء على كيفك
attachment.php

لعمل اختبار يمكنك فتح الموقع التالي والتجربة
https://securityheaders.com
وإن شاء الله تحصل على نتيجة A أو A+ كما بالصورة
(الموقع اللى تم الشرح عليه هو موقع المقال )
attachment.php







>> هذا الموضوع جاري العمل عليه ... ويتم تحديثه بإستمرار حتى يتم حذف هذا السطر يكون بذلك تم الانتهاء منه <<

(يمكنك الرد على هذا الموضوع و التسجيل فى الإشعارات حتى يصلك تحديثات هذا الموضوع)


الشرح مترجم من الكتاب الموجود بالمرفقات فى حال كنت جيدًا فى اللغة الانجليزية يمكنك تحميله وقرائته 21_Tips_WP_Ebook_EN WordPress security.pdf
 

المرفقات

  • wordpress change admin password.png
    wordpress change admin password.png
    112 KB · المشاهدات: 959
  • http-headers.jpg
    http-headers.jpg
    42.2 KB · المشاهدات: 635
  • security-headers.jpg
    security-headers.jpg
    58.4 KB · المشاهدات: 636
  • http-headers-2.jpg
    http-headers-2.jpg
    56.1 KB · المشاهدات: 748
  • http-headers-3.jpg
    http-headers-3.jpg
    45.1 KB · المشاهدات: 793
  • http-headers-4.jpg
    http-headers-4.jpg
    24.8 KB · المشاهدات: 758
  • 21_Tips_WP_Ebook_EN WordPress security.pdf
    961.2 KB · المشاهدات: 697
التعديل الأخير:

Mighty Dr.Wolf

[ أعضاء فى القلب ]
19 ديسمبر 2012
35
7
8
35
المانيا
اشكرك جزيل الشكر وبارك الله بك ووفقك
شي جميل والله
وشكرا لاهتماكم بالموضوع
انتظر باقي الدروس بفارغ الصبر


لدي سوال لحضرتك

https://api.wordpress.org/secret-key/1.1/salt/
ثم قم بإستبادالها فى ملف wp-config.php



بصراحه لم افهم هذه الجملة بالخط الاحمر فوق "؟ واين تذهب معلومات قاعدة البيانات ؟


تحيتي
 

WebCraker

العبد الفقير إلى الله
طاقم الإدارة
9 مارس 2008
5,640
50
48
Egypt
support-ar.com
اشكرك جزيل الشكر وبارك الله بك ووفقك
شي جميل والله
وشكرا لاهتماكم بالموضوع
انتظر باقي الدروس بفارغ الصبر

لدي سوال لحضرتك

https://api.wordpress.org/secret-key/1.1/salt/
ثم قم بإستبادالها فى ملف wp-config.php

بصراحه لم افهم هذه الجملة بالخط الاحمر فوق "؟ واين تذهب معلومات قاعدة البيانات ؟

تحيتي
بارك الله فيك على المتابعة سعدت بردك ومتابعتكـ،

لمن تضغط على الرابط يجيك عدة أكواد تشفير جديدة قم بنسخها واستبدال الأكواد هذه فقط فى ملف الكونفيج حق الووردبريس وليس استبدال كامل ملف الكونفيج

كما فى الصورة التالية (فى المرفقات)
 

المرفقات

  • wordpress secret-key salt.png
    wordpress secret-key salt.png
    89.9 KB · المشاهدات: 207

Mighty Dr.Wolf

[ أعضاء فى القلب ]
19 ديسمبر 2012
35
7
8
35
المانيا
شكرا لحضرتك
الان فهمت
بارك الله بك ووفقك
تحيتي لكم
وبانتظار جديدكم
 

WebCraker

العبد الفقير إلى الله
طاقم الإدارة
9 مارس 2008
5,640
50
48
Egypt
support-ar.com
تم تحديث الموضوع واضافة جزأ من الشرح بخصوص الـ security headers واعذرونا للأنقطاع بنكمل ان شاء الله خلال شهر رمضان
ومبارك عليكم الشهر
 

Mighty Dr.Wolf

[ أعضاء فى القلب ]
19 ديسمبر 2012
35
7
8
35
المانيا
تم تحديث الموضوع واضافة جزأ من الشرح بخصوص الـ security headers واعذرونا للأنقطاع بنكمل ان شاء الله خلال شهر رمضان
ومبارك عليكم الشهر

الله يبارك بيك
ويارب يتقبل الصيام والقيام وصالح الاعمال يارب

وشكرا لمواصلتك الموضوع وعدم تركه
متابع باذن الله معكم
تحيتي
 

WebCraker

العبد الفقير إلى الله
طاقم الإدارة
9 مارس 2008
5,640
50
48
Egypt
support-ar.com
المعذرة للإنشغال وعدم تكملة الشرح بالوقت الحالي

الشرح مترجم من الكتاب الموجود بالمرفقات فى حال كنت جيدًا فى اللغة الانجليزية يمكنك تحميله وقرائته 21_Tips_WP_Ebook_EN WordPress security.pdf
 

Mighty Dr.Wolf

[ أعضاء فى القلب ]
19 ديسمبر 2012
35
7
8
35
المانيا
المعذرة للإنشغال وعدم تكملة الشرح بالوقت الحالي

الشرح مترجم من الكتاب الموجود بالمرفقات فى حال كنت جيدًا فى اللغة الانجليزية يمكنك تحميله وقرائته 21_tips_wp_ebook_en wordpress security.pdf

بارك الله فيك ووفقك اخي الكريم
شكرا لحضرتك

نحن من يجب أن نعتذر لتقصيرنا ولقلة دعمنا للمعهد
سوف احمل المرفق بإذن الله عند عودتي للبيت
شكرا لك
تقبل تحيتي