W artykule Nginx – integracja z ModSecurity 3.0 przedstawiony został proces konfiguracji Nginx, ModSecurity 3.0 oraz reguł testowych. W środowisku produkcyjnym należy oczywiście używać reguł, które faktycznie chronią przed złośliwym ruchem, takich jak np. bezpłatny zestaw reguł OWASP.
Archiwum z regułami OWASP należy pobrać z repozytorium GitHub, a następnie rozpakować
root@debian:/# cd /opt/ root@debian:/opt# wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz root@debian:/opt# tar -xzvf v3.0.0.tar.gz
Po rozpakowaniu niezbędne jest przygotowanie pliku konfiguracyjnego. Można również skorzystać z gotowego pliku konfiguracyjnego.
root@debian:/opt# cd owasp-modsecurity-crs-3.0.0/ root@debian:/opt# cp crs-setup.conf.example crs-setup.conf
W następnym kroku należy zmodyfikować plik konfiguracyjny modułu ModSecurity /etc/nginx/modsec/main.conf oraz dodać wpisy ładujące reguły OWASP.
/etc/nginx/modsec/main.conf # From https://github.com/SpiderLabs/ModSecurity/blob/master/\ # modsecurity.conf-recommended # # Edit to set SecRuleEngine On Include "/etc/nginx/modsec/modsecurity.conf" Include "/opt/owasp-modsecurity-crs-3.0.0/crs-setup.conf" Include "/opt/owasp-modsecurity-crs-3.0.0/rules/*.conf" # Basic test rule SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403"
Pod wprowadzeniu zmian niezbędne jest dokonanie restartu serwera Nginx.
systemctl restart nginx
W przypadku wystąpienia błędu:
2018/03/13 14:18:56 [emerg] 26130#26130: "modsecurity_rules_file" directive Rules error. File: /opt/owasp-modsecurity-crs-3.0.0/crs-setup.conf. Line: 96. Column: 43. SecCollectionTimeout is not yet supported. in /etc/nginx/sites-enabled/default:6
Należy zmodyfikować plik /opt/owasp-modsecurity-crs-3.0.0/crs-setup.conf i zakomentować linie:
#SecCollectionTimeout 600
Po dodaniu reguł można przeprowadzić testy
curl -H "User-Agent: Nikto" http://localhost/
Jeśli wszystko przebiegło pomyślnie, reguły OWASP w ModSecurity powinny automatycznie zablokować żądania z User-Agent: Nikto (skaner stron www) wyświetlając komunikat 403 – Forbidden.
403 Forbidden 403 Forbidden
nginx
Dodaj komentarz