تسجيل الدخول / التسجيل

تثبيت ModSecurity على OpenLitespeed

شارك هذا المقال على:

من أهم الأمور الواجب تواجدها على الخادم الخاص بك هي الأمور التي تقوم بحماية الموارد على الخادم من التخريب او الإختراق. وعلى الرغم من أن حماية الخادم بشكل كامل هو امر مستحيل، يتوجب علينا القيام بكل ما هو لازم لمنع التخريب والإختراق.

من الجدير بالذكر أن خادم OpenLitespeed d يدعم ModSecurity 3 ولا يدعم ModSecurity 2.

أجزاء المقال:

ما هو 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

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

ahmad

ahmad

مؤسس لينيكس العرب ومدير منصّة بسّام للتواصل الإجتماعي

اترك تعليقاً

تواصل معنا

أحدث المقالات

تابع جديدنا

إشترك في نشرتنا الشهرية

لا نقوم بإرسال بريد مزعج، فقط المقالات الحديثة