
توفر هذه المقالة إرشادات حول تثبيت الوحدة النمطية الديناميكية ModSecurity على خادم الويب NGINX كجدار حماية لتطبيق الويب (WAF). تعمل NGINX في
وضع الوكيل العكسي . تم العمل على توزيع Linux -
CentOS 7 . تم ضبط الوحدة النمطية على أنها "ديناميكية" بحيث تظل الخدمة مرنة في التكوين. يتم استخدام
دليل التثبيت
الرسمي NGINX .
1. التثبيت المسبق للمكونات
لكي تعمل الخدمة بشكل صحيح ، يجب تثبيت مكتبات إضافية للعمل. ستكون هناك حاجة إلى مكتبات لإنشاء مشروع من التعليمات البرمجية المصدر. من المفترض أن يكون لدى المستخدم نظام محدث (
# yum update ).
yum install install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev
2. بدء تثبيت الخدمة
من أجل عدم وجود مشاكل عند بدء الخدمة باستخدام أمر
خدمة nginx start ، يتم تثبيت إصدار من المستودع الرسمي على GitHub.
قم
بإنشاء الملف
/etc/yum.repos.d/nginx.repo الذي تريد إضافة إصدار التوزيع إليه. بدون تحديد إصدار NGINX ، يتم سحب الإصدار الأخير الذي تم إطلاقه على الموقع.
[nginx-1.13.7] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
بعد ذلك ، فقط تثبيت
yum install nginx
3. تجميع الوحدة

للبدء ، انتقل إلى الدليل المناسب:
cd /home/user/Downloads
قم بتنزيل الوحدة من الفرع الرئيسي على جيثب:
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity.git
بعد ذلك ، انتقل إلى المجلد باستخدام جدار الحماية وتجميع التعليمات البرمجية المصدر:
cd ModSecurity git submodule init git submodule update ./build.sh ./configure make make install
4. تثبيت الموصل
لكي يكون النظام بأكمله مرنًا ، سيتم تثبيت موصل لتوصيل
NGINX و ModSecurity . هذا يعني أن الوحدة لن تكون سلكية في رمز الخادم ، ولكنها ستكون مكونًا ديناميكيًا فقط ، مما سيسمح بحذفها في أي وقت ، وتغيير الرمز ، إلخ.
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
5. إعادة بناء خادم الويب
لكي يعمل NGINX مع الموصل الذي سيتم توصيل الوحدة به ، تحتاج إلى إعادة إنشاء الخادم. للقيام بذلك ، تعرف أولاً على إصدار NGINX المثبت:
nginx –v
يجب أن يكون الإخراج مثل هذا (حسب الإصدار)
إصدار nginx: nginx / 1.13.7بعد ذلك ، قم بتنزيل الإصدار المناسب من الموقع الرسمي حتى لا يكون هناك أي خطأ عند بدء الخدمة وتجميع معلمة معينة:
cd .. wget http://nginx.org/download/nginx-1.13.7.tar.gz tar zxvf nginx-1.13.7.tar.gz cd nginx-1.13.7 ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx make modules
بعد ذلك ، انسخ ملف الوحدة النمطية إلى مجلد خدمة الويب:
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules
قبل إضافة أول كتلة في
/etc/nginx/nginx.conf :
load_module modules/ngx_http_modsecurity_module.so;
6. ملف التكوين وحدة
يقدم المطورون قواعدهم الأساسية لحماية مورد ويب. تجدر الإشارة إلى أنه بعد تثبيتها ، لا ينبغي لأحد أن يعتمد على مستوى لائق ، لأن المبدعين يتركون حرية التهيئة وقواعد الكتابة الكاملة من قبل المستخدم ، مما يحدهم من إضافة القواعد الأساسية إلى ملف التكوين القياسي.
mkdir /etc/nginx/modsec cd /etc/nginx/modsec sudo wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended sudo mv modsecurity.conf-recommended modsecurity.conf
في ملف
modsecurity.conf ، استبدل SecRuleEngine DetectionOnly بـ
SecRuleEngine Onبعد ذلك ، قم بإنشاء ملف
/etc/nginx/modsec/main.conf وإضافته إليه:
# Include the recommended configuration Include /etc/nginx/modsec/modsecurity.conf
7. قواعد OWASP
ليس سراً أن
OWASP هي شركة رائدة في قضايا أمان الويب. لديهم مجموعة خاصة بهم لهذه الوحدة ، والتي ، مثل المشروع ، مفتوحة للمستخدمين. لذلك ، قم بتثبيته كمجموعة أساسية من القواعد:
cd /usr/local wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz tar -xzvf v3.0.0.tar.gz mv owasp-modsecurity-crs-3.0.0 /usr/local cd /usr/local/owasp-modsecurity-crs-3.0.0 cp crs-setup.conf.example crs-setup.conf
في
/etc/nginx/modsec/main.conf ، أضف ما يلي:
# OWASP CRS v3 rules Include /usr/local/owasp-modsecurity-crs-3.0.0/crs-setup.conf Include /usr/local/owasp-modsecurity-crs-3.0.0/rules/*.conf
8. الانتهاء من العمل
في الملف
/etc/nginx/conf.d/proxy.conf ، أضف
server { listen 80; modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf; # If you have proxy location / { proxy_pass http://192.168.xx; } }
9. الصحة تحقق
للتحقق من مكونات خدمة الويب ، ما عليك سوى تشغيلها وعرض الأخطاء. غالبًا ، ستحتاج إلى إزالة القاعدة المسؤولة عن التحقق من مكان استخدام وحدة نمطية أخرى (
GeoIP ، على سبيل المثال). لذلك ، يمكنك إزالة هذه القاعدة بأمان.
rm /usr/local/owasp-modsecurity-crs-3.0.0/rules/REQUEST-910-IP-REPUTATION.conf
خطأ ذات الصلة
يونيكود هو ممكن أيضا. حتى لا تتداخل مع الخدمة ، فإننا ببساطة نعلقها في ملف التكوين (
في النهاية ).
#SecUnicodeMapFile unicode.mapping 20127
استخدم الأداة المساعدة
curl لاختبار الخادم. سيظهر إذا عاد التطبيق. إذا كان كل شيء صحيحًا ، فسيأتي إليك خيار رمز
200 موافق curl -I 127.0.0.1
للتحقق من تشغيل آليات الحماية ، يمكنك استخدام أي أداة مساعدة مصممة لهذا الغرض. يقترح استخدام
nikto كتوصيات :
nikto -host localhost
لبدء الخادم:
service nginx start