كيفية تأمين موقع ووردبريس عبر طبقة اتصال آمنة SSH
يوجد ثابتان تستطيع تعريفهما في ملف wp-config.php لتفعيل “طبقة المقابس الآمنة” Secure Socket Layer اختصارًا SSL من أجل الاتصال بموقعك وإدارته والتحكم به بأمان. لا يكفي أن تعرف هذين المتغيرين ضمن ملف إضافة ما بل يجب تعريفهما ضمن ملف wp-config.php ويجب أن تضبط مسبقًا SSL على خادمك قبل أن يعمل موقعك بسلاسة مع هذين المتحولين عند ضبط قيمتهما للقيمة True.
ملاحظة: توقف استخدام الثابت FORCE_SSL_LOGIN في الإصدار 4.0 من ووردبريس. من فضلك استخدم الثابت FORCE_SSL_ADMIN.
فرض تسجيل الدخول والوصول للوحة التحكم باستخدام SSL
يُمكن ضبط الثابت FORCE_SSL_ADMIN إلى القيمة True ضمن الملف wp-config.php لإجبار إتمام جلسات المدير وجميع عمليات تسجيل الدخول عبر SSL.
define('FORCE_SSL_ADMIN', true);
استخدام خادم وكيل
إن كان موقع ووردبريس مُستضافًا خلف خادم وكيل عكسي reverse proxy يوفر SSL لكن الموقع نفسه مُستضاف بدون SSL، سوف تُسبب هذه الإعدادات حلقة إعادة توجيه غير منتهية للطلبات، ولتجنب ذلك يجب عليك ضبط ووردبريس ليتعرف على ترويسة HTTP_X_FORWARDED_PROTO (على فرض أنك ضبطت الخادم الوكيل بشكل صحيح لضبط هذه الترويسة).
انظر مثلًا:
define('FORCE_SSL_ADMIN', true); // in some setups HTTP_X_FORWARDED_PROTO might contain // a comma-separated list e.g. http,https // so check for https existence if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
ضبط SSL لحالات مخصصة ولإصدارات ووردبريس قديمة
تتضمن بقية هذا المقال معلومات مخصصةً لمن يستخدم إصدارًا قديمًا من ووردبريس (يجب عليك التحديث لآخر إصدار) أو في حال كان تثبيت SSL لديك مختلف (مثلًا شهادة SSL لنطاق مختلف).
تريد أحيانًا أن تعمل صفحة wp-admin بكاملها ضمن اتصال آمن باستخدام بروتوكول https حيث أن آلية العمل كالتالي:
- اضبط استضافتين افتراضيتين Virtual Host بنفس الرابط (رابط المدونة) أحدهما آمن والآخر ليس آمنًا.
- ضمن الاستضافة الافتراضية المؤمنة عليك ضبط قواعد إعادة الكتابة التي توجه الزيارات لصفحات الموقع الغير إدارية إلى الموقع غير المؤمن.
- ضمن الاستضافة الافتراضية غير المؤمنة عليك ضبط قواعد إعادة الكتابة التي توجه زيارات صفحات المدير إلى الاستضافة المؤمنة.
- عليك استخدام مرشح (استخدم إضافة) يعمل على انتخاب الروابط ضمن صفحات المدير وعند تفعيله يُعيد كتابة روابط صفحات المدير باستخدام https وهذا يُغير ملفات تعريف الارتباط لتعمل فقط مع الاتصالات المُشفرة.
إن المحتوى التعليمي التالي مُخصص للإصدار 1.5 من ووردبريس وخادم Apache الذي يُفعل وحدة mod_rewrite باستخدام قواعد إعادة الكتابة في ملف httpd.conf الذي يُمكن تعديله بسهولة ليتناسب مع خيارات الاستضافة الأخرى.
الاستضافات الافتراضية
تحتاج استضافةً افتراضيةً مُعدّةً للخادم المؤمن إضافةً إلى موقع غير مؤمن، وفي هذا المثال فإن الاستضافة الافتراضية المؤمنة تستخدم نفس المسار الرئيسي للاستضافة غير المؤمنة، وافتراضيًا تستطيع استخدام استضافة باسم مختلف مثل wpadmin.mysite.com وربطها مع المسار الرئيسي للخادم.
اطلب من فضلك من مزود الخدمة لديك ضبط استضافة افتراضية مؤمنة أو إن كان لديك تحكم كامل بالاستضافة تستطيع ضبطها بنفسك. انتبه أنك لا تستطيع استخدام استضافة افتراضية معتمدةً على الاسم لتعريف خوادم SSL مختلفة.
قواعد إعادة الكتابة للاستضافة غير المؤمنة
أضف القاعدة التالية ضمن ملف .htaccess أو ملف httpd.conf لتوجيهك تلقائيًا للاستضافة المؤمنة عند تصفح الرابط http://mysite.com/wp-admin أو http://mysite.com/wp-login.php.
يجب أن تُضيف القواعد قبل كتلة قواعد ووردبريس:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\ HTTP/ [NC] RewriteCond %{HTTPS} !=on [NC] RewriteRule ^/?(wp-admin/|wp-login\.php) https://mysite.com%{REQUEST_URI}%{QUERY_STRING} [R=301,QSA,L]
إن كنت تستخدم قواعد إعادة الكتابة للروابط الدائمة عندها يجب أن يرد هذا السطر قبلها:
RewriteRule ^.*$ - [S=40]
إن استخدام THE_REQUEST أمر مهم جدًا لأنه يضمن إعادة كتابة فقط طلبات http.
قواعد إعادة الكتابة للاستضافة المؤمنة (اختياري)
قواعد إعادة الكتابة هذه اختيارية فهي تعطل الوصول العلني للموقع عبر اتصال مؤمن، وإن كنت تريد البقاء مُسجلًا دخولك للقسم العام من موقعك باستخدام الإضافة في الأسفل يجب ألا تُضيف هذه القواعد لأن الإضافة تُعطل ملفات تعريف الارتباط ضمن الاتصالات غير المشفرة.
يجب أن تمتلك الاستضافة الافتراضية المؤمنة قاعدتين ضمن ملف .htaccess أو ضمن ملف تعريف الاستضافة الافتراضية (ألق نظرة على كيفية استخدام الروابط الدائمة لمزيد من المعلومات حول قواعد إعادة الكتابة):
RewriteRule !^/wp-admin/(.*) - [C] RewriteRule ^/(.*) http://www.mysite.com/$1 [QSA,L]
تستثني القاعدة الأولى مسار wp-admin من القاعدة الثانية التي توجه زيارات الموقع المؤمن إلى الموقع غير المؤمن للحفاظ على تجربة مريحة للمستخدم.
ضبط رابط ووردبريس
لكي تعمل بعض إضافات ووردبريس ولأسباب أخرى أيضًا عليك ضبط رابط ووردبريس ضمن الخيارات ليستخدم بروتوكول https، وذلك من خلال ضبط الرابط على الشكل التالي https://mysite.com. يجب ألا تُغير رابط المدونة.
إليك مثال عن ضبط Stanzas:
<VirtualHost nnn.nnn.nnn.nnn:443> ServerName www.mysite.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/thissite.crt SSLCertificateKeyFile /etc/apache2/ssl/thissite.pem SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown DocumentRoot /var/www/mysite <IfModule mod_rewrite.c> RewriteEngine On RewriteRule !^/wp-(admin|includes)/(.*) - [C] RewriteRule ^/(.*) http://www.mysite.com/$1 [QSA,L] </IfModule> ... </VirtualHost> # Insecure site <VirtualHost *> ServerName www.mysite.com DocumentRoot /var/www/ii/mysite <Directory /var/www/ii/mysite > <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^wp-admin/(.*) https://www.mysite.com/wp-admin/$1 [C] RewriteRule ^.*$ - [S=40] RewriteRule ^feed/(feed|rdf|rss|rss2|atom)/?$ /index.php?&feed=$1 [QSA,L] ... </IfModule> </Directory> ... </VirtualHost>
ملاحظة: الإعدادات التالية غير متوافقة 100% مع إصدار ووردبريس 2.8 وما بعده حيث يستخدم ووردبريس 2.8 ملفات من مجلد wp-includes. يُمكن أن تُسبب إعادة التوجيه التي تنفذها أول مجموعة من القواعد بعض التحذيرات الأمنية لبعض المستخدمين. ألق نظرةً على الرابط لمزيد من المعلومات.
قواعد إعادة الكتابة لتسجيل الدخول والتسجيل
إن استخدام SSL للتسجيل بالموقع ولمن أنشأ حسابه في أو سجل دخوله إلى الموقع أمر جيد، لذا عليك الاطلاع على قواعد إعادة الكتابة التالية.
مثال غير مؤمن:
RewriteRule ^/wp-(admin|login|register)(.*) https://www.mysite.com/wp-$1$2 [C]
مثال مؤمن:
RewriteRule !^/wp-(admin|login|register)(.*) - [C]
قواعد إعادة الكتابة لتشغيل الموقع على المنفذ 443 أو المنفذ 80
انظر مثال قواعد إعادة الكتابة لتشغيل الموقع على المنفذ 443 أو المنفذ 80:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # For a site running on port 443 or else (http over ssl) RewriteCond %{SERVER_PORT} !^80$ RewriteRule !^wp-(admin|login|register)(.*) - [C] RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L] # For a site running on port 80 (http) RewriteCond %{SERVER_PORT} ^80$ RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2 [L] RewriteCond %{SERVER_PORT} ^80$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
الملخص
هذه الطريقة لا تُصلح المشاكل الأمنية المتأصلة في ووردبريس ولا تحميك ضد هجوم رجل في الوسط man-in-the-middle attacks أو من أي مخاطر أخرى يُمكن أن توقف الاتصال المؤمن لكنها تُصعب على المخترقين سرقة ملفات تعريف الارتباط و/أو ترويسة التحقق لاستخدامها وانتحال شخصيتك والدخول للموقع إلى لوحة التحكم، كما أنها تُضعف قدرة المهاجم على الاطلاع على محتواك وهو أمر مهم للمدونات القانونية التي تتضمن مسودات تحتاج حماية صارمة.
التحقق
تُشير السجلات ضمن الخادم إلى أن جميع طلبات GET و POST تعمل ضمن اتصال SSL وجميع الزيارات للوحة تحكم ووردبريس للاستضافة غير المؤمنة توجه إلى الاستضافة المؤمنة.
عينة من سجل POST:
[Thu Apr 28 09:34:33 2005] [info] Subsequent (No.5) HTTPS request received for child 6 (server foo.com:443) xx.xxx.xxx.xxx - - [28/Apr/2005:09:34:33 -0500] "POST /wp-admin/post.php HTTP/1.1" 302 - "https://foo.com/wp-admin/post.php?acti on=edit&post=71" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3"
تستطيع التأكد بمزيد من الاختبارات باستخدام أدوات تحليل للشبكة ومتتبع رزم.
القيود
يفترض الكاتب أنه إن خزّن المستخدم ملفات تعريف الارتباط ضمن متصفحه ليتذكر كلمة المرور (غير معتمد على حقول النموذج إنما عند استخدام طرق تحقق خارجية) ثم زار الرابط http://mysite.com/wp-admin سوف تُرسل الحزم دون تشفير ويُمكن اعتراض ترويسة التحقق وملفات تعريف الارتباط، لذلك ولضمان أعلى درجة أمان يجب على المستخدم استخدام https أو الدخول دائمًا عند بداية كل جلسة.
ترجمة -وبتصرف- للمقال Administration Over SSL من موقع ووردبريس.
اترك تعليقاً