تعليمات تثبيت NGINX ModSecurity



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

Source: https://habr.com/ru/post/ar437032/


All Articles