
توفر هذه المقالة إرشادات حول تثبيت الوحدة النمطية الديناميكية 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