من أهم الأمور الواجب تواجدها على الخادم الخاص بك هي الأمور التي تقوم بحماية الموارد على الخادم من التخريب او الإختراق. وعلى الرغم من أن حماية الخادم بشكل كامل هو امر مستحيل، يتوجب علينا القيام بكل ما هو لازم لمنع التخريب والإختراق.
من الجدير بالذكر أن خادم OpenLitespeed d يدعم ModSecurity 3 ولا يدعم ModSecurity 2.
أجزاء المقال:
- تثبيت خادم Open Litespeed مع php 7.4 و php 8.0
- تثبيت محرك قواعد البيانات MariaDB
- ضبط الإعدادات الأولية لخادم Open Litespeed
- تثبيت ModSecurity لتأمين المواقع على الخادم
- ضبط قالب Litespeed لإنشاء المواقع بشكل تلقائي
- ضبط الجدار الناري CSF
- تثبيت موقعك الأول على الخادم
ما هو ModSecurity
برنامج ModSecurity عبارة عن جدار ناري مفتوح المصدر يقوم بالعمل من خلال خوادم الويب مثل OpenLitespeed. هذا الجدار الناري يقوم بصد عدد من العمليات الخبيثة بطريقة أذكى من الجدار الناري العادي حيث أن هذا الجدار الناري يقوم على تحليل أمور معقدة أكثر بطريقة منطقية أكثر من الجدار الناري العادي.
تثبيت ModSecurity
من أسهل الطرق التي يتم من خلالها تثبيت ModSecurity من خلال الطرفية:
yum install ols-modsecurity
إلى هنا نقوم قد قمنا بتثبيت ModSecurity بنجاح، ولكنه لا يعمل ولا يوجد فيه أي تعليمات للعمل عليها. هنا سنقوم بتثبيت بعض القوانين والتعليمات التي يجب أن يعمل من خلالها هذا الجدار الناري.
هناك العديد من مزودي تعليمات ModSecurity بشكل مدفوع أو مجاني، وهناك ما هو أفضل من غيره ولك الحرية في إختيار الموزع الخاص بك وتطويع هذا الشرح ليناسب الملفات التي قمت بتثبيتها. هنا، سوف نستخدم التعليمات الخاصة بـ OWASP وهي تعليمات مفتوحة المصدر.
تثبيت التعليمات البرمجية الخاصة بـ OWASP
قم بعمل مجلد جديد لوضع التعليمات البرمجية فيه:
mkdir -p /usr/local/lsws/modsec/owasp
ثم قم بالإنتقال إلى المسار السابق:
cd /usr/local/lsws/modsec/owasp/
قم بالعثور على النسخة الاخيرة من التعليمات البرمجية في الرابط التالي:
https://github.com/SpiderLabs/owasp-modsecurity-crs/releases
ثم قم بتنزيل النسخة على الخادم من خلال الأمر التالي:
wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/refs/tags/v3.2.0.zip
ثم قم بإستخراج الملف الذت تم تنزيله. مثال على أمر الإستخراج:
unzip v3.2.0.zip
قم الآن بحذف الملف المضغوط، وبعدها قم بإعادة تسمية المجلد الموجود لديك الى إسم مناسب كما في الصورة التالية:
rm -rf v3.2.0.zip mv owasp-modsecurity-crs-3.2.0/ crs320
قم بالدخول الى المجلد الذي قمنا بإعادة تسميته، ومن ثم قم بإعادة تسمية ملف الإعدادات من الاسم “crs-setup.conf.example” الى “crs-setup.conf”:
cd crs320/ mv crs-setup.conf.example crs-setup.conf
الآن نقوم بالدخول إلى مجلد التعليمات البرمجية وتفعيل التعليمات من خلال إعادة تسمية الملفات، ومن قم بالعودة الى المجلد السابق:
cd rules mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf cd ..
تأكد أنك موجود في المسار الصحيح. المسار الذي يجب أن تكون فيه هو:
/usr/local/lsws/modsec/owasp/crs320
ثم قم بعمل ملف إعدادات جديد من خلال الأمر التالي:
vi owasp-master.conf
وقم بلصق التالي فيه:
include /usr/local/lsws/modsec/owasp/crs320/crs-setup.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-901-INITIALIZATION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-905-COMMON-EXCEPTIONS.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-910-IP-REPUTATION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-911-METHOD-ENFORCEMENT.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-912-DOS-PROTECTION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-913-SCANNER-DETECTION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-921-PROTOCOL-ATTACK.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/REQUEST-949-BLOCKING-EVALUATION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-950-DATA-LEAKAGES.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-959-BLOCKING-EVALUATION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-980-CORRELATION.conf include /usr/local/lsws/modsec/owasp/crs320/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
ضبط OpenLitespeed ليقوم بإستخدام ModSecurity
قم بالدخول الى لوحة التحكم الخاصة بخادم OpenLitespeed، ثم قم بالإنتقال الى Server Configuration، ثم الى Modules، ثم قم بعمل Module جديد:
قم بضبط الإعدادات حسب الصورة التالية:
1- الإسم: يجب أن يكون كالتالي بالضبط:
mod_security
2- إعدادات الجدار الناري:
modsecurity on modsecurity_rules `SecRuleEngine On` modsecurity_rules_file /usr/local/lsws/modsec/owasp/crs320/owasp-master.conf
3- قم بتفعيل الإضافة من خلال إختيار yes.
عند الإنتهاء، قم بالضغط على زر الحفظ في الطرف الأيمن الأعلى.
تفعيل ModSecurity على المواقع
حتى عند تفعيل ModSecurity على الخادم، لن يتم تفعيله على المواقع. بالتالي، يجب تفعيل هذه الإضافة على كل موقع بشكل منفصل. للتفعيل، يجب الدخول إلى إعدادات الموقع المراد تفعيل الإضافة عليه من خلال الإنتقال الى Virtual Hosts ومن ثم الدخول إلى إعدادات الموقع:
من داخل صفحة الإعدادات، يجب عليك الإنتقال الى Modules، ثم الضغط على زر إضافة:
ومن هنا يمكنك تفعيل الإضافة كما هو موضح في الصورة التالية:
بعد التفعيل، يمكنك الآن إعادة تشغيل الخادم لتطبيق التغييرات.
إختبار ModSecurity
يمكننا وبكل سهولة أن نختبر أداء الجدار الناري من خلال محاولة طلب رابط خبيث في الخادم. على سبيل المثال:
https://new.linuxarabia.co/aphpfilethatdonotexist.php?something=../../etc
عند محاولة دخول الرابط، سوف تشاهد صفحة فيها خطأ 403 كما في الصورة التالية:
التخلص من مشاكل الإكتشاف الخاطئ
مثله مثل أي شيء في العالم، هذا الجدار الناري قد يتعارض مع برامجك، أو قد يقوم بعمل إكتشاف خاطئ لبعض الموارد على أنها خبيثة. على سبيل المثال، تحرير موقع WordPress من خلال الإضافة Elementor قد تتسبب في إكتشاف خاطئ لعملية خبيثة. في هذه الحالة، يمكننا تعطيل أحد قوانين أو تعليمات الـ ModSecurity حتى لا تتعارض مع عملنا.
بشكل عام، العثور على الخلل صعب بعض الشيء ويحتاج الى خبرة، ولكن لحسن الحظ، هناك دائما طريقة سهلة. من أسهل الطرق للتعرف على التعليمات التي تسبب المشكلة، يمكنك أن تتسبب بالمشكلة وفي نفس الوقت أن تقوم بمتابعة سجلات الخادم. مثلا، يمكننا البدء في تتبع سجلات الخادم من خلال تنفيذ الأمر التالي في الطرفية:
tail -f /usr/local/lsws/logs/error.log
وبعد تنفيذ هذا الامر نقوم بتنفيذ العملية التي تسببت بخطأ 403. في الطرفية يجب أن نرى شيء مشابه للتالي:
في الصورة السابقة يوجد عدد كبير من المعلومات التقنية، ولكن ما يهمنا في هذه المرحلة هو هوية التعليمات البرمجية التي تسببت لنا في المشكلة. هنا، كانت الهوية هي 930100.
يمكنك الآن القيام يإيقاف التعليمات البرمجية من خلال الإنتقال الى “Server Configuration” ثم الى “Modules” ومن ثم الإنتقال الى تحرير “mod_security”. من هناك يمكنك إضافة التالي مباشرة بعد “SecRuleEngine On”:
SecRuleRemoveById 930100
من المفضل في هذا النوع من الأخطاء عدم تطبيق التعطيل على الخادم بأكلمة، بل تعطيل التعليمات البرمجية في الموقع الذي حصلت فيه المشكلة فقط.