nginx mit ModSecurity und OWASP CRS

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
burnersk
Beiträge: 125
Registriert: 22.10.2008 21:32:16
Lizenz eigener Beiträge: MIT Lizenz

nginx mit ModSecurity und OWASP CRS

Beitrag von burnersk » 25.09.2015 12:27:04

Ich habe bislang ModSecurity mit nginx in "einfacher Variante" verwendet. Also nur eine modsecurity.conf (mit Regeln in der Datei) und "gut".

Nun möchte ich ModSecurity "ausbauen" und das OWASP CRS verwenden. Die Installationsanleitung ist an sich gut geschrieben (für Apache) nur ist das Problem bei nginx, dass ich nicht mehrere Konfigurationen laden kann. Außerdem hab ich auch keine "include"-Anweisung im ModSecurity Konfigurationssyntax gefunden, mit der ich das nachbauen könnte.

Wie richte ich die ModSecurity OWASP CSR unter Debian für nginx ein ohne alle aktivierten Regel in meine modsecurity.conf kopieren zu müssen?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: nginx mit ModSecurity und OWASP CRS

Beitrag von rendegast » 25.09.2015 14:58:25

in apache:

Code: Alles auswählen

<IfModule security2_module>
        Include /usr/share/modsecurity-crs/*.conf
        Include /usr/share/modsecurity-crs/activated_rules/*.conf
</IfModule>
wobei in activated_rules/ zumindest die base_rules/ verlinkt sein sollen.

modsecurity-standalone Config-Template für nginx:

Code: Alles auswählen

location / {
           ModSecurityEnabled on;
           ModSecurityConfig modsecurity.conf;
Du könntest erstmal ausprobieren, ob 'ModSecurityConfig' ein "pfad/*.conf" versteht.
Wenn das nicht klappt, ob es additiv ist

Code: Alles auswählen

           ModSecurityConfig AA.conf;
           ModSecurityConfig BB.conf;
           ModSecurityConfig CC.conf;
vielleicht als

Code: Alles auswählen

           ModSecurityConfig AA.conf BB.conf CC.conf;

resp.
           ModSecurityConfig AA.conf \
                                          BB.conf \
                                          CC.conf;
oder
           ModSecurityConfig
                                          AA.conf
                                          BB.conf
                                          CC.conf
                                          ;
Das wäre eine relativ leicht änderbare Liste.


Dann würde ich aber bevorzugen, die Links in activated_rules/ zu setzen
mit anschließendem

Code: Alles auswählen

cat modsecurity.conf_0 /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf  /usr/share/modsecurity-crs/activated_rules/*.conf > modsecurity.conf
Damit das nicht vergessen wird, könnte Debianincron auf /usr/share/modsecurity-crs/activated_rules/ angesetzt werden, der das 'cat' macht und ein evtl. SIGHUP an nginx sendet.




Was ist mit den *_rules/modsecurity_*.data ?
Nach dem activated_rules/README (zielend auf apache) werden sie genauso nach activated_rules/ verlinkt,
liegen "neben" ihren entsprechenden *.conf-Dateien.
Bei meiner 'cat'-Variante müßten sie dann in das Verzeichnis mit der per 'ModSecurityConfig' eingebundenen modsecurity.conf verlinkt werden, also

Code: Alles auswählen

find /usr/share/modsecurity-crs/activated_rules -name "*.data" -exec ln -sfv  ..........

oder einfach pro forma
find /usr/share/modsecurity-crs -type f -name "*.data" -exec ln -sfv {} . \;
(ohne spezielle Verlinkung nach activated_rules/, 
die Regeln einer eingebundenen *.conf sollten sich dann schon bedienen)
Sind ja nur eine handvoll:

Code: Alles auswählen

$ find -type f -name "*.data" | sort 
./base_rules/modsecurity_35_bad_robots.data
./base_rules/modsecurity_35_scanners.data
./base_rules/modsecurity_40_generic_attacks.data
./base_rules/modsecurity_50_outbound.data
./base_rules/modsecurity_50_outbound_malware.data
./optional_rules/modsecurity_42_comment_spam.data
./slr_rules/modsecurity_46_slr_et_joomla.data
./slr_rules/modsecurity_46_slr_et_lfi.data
./slr_rules/modsecurity_46_slr_et_phpbb.data
./slr_rules/modsecurity_46_slr_et_rfi.data
./slr_rules/modsecurity_46_slr_et_sqli.data
./slr_rules/modsecurity_46_slr_et_wordpress.data
./slr_rules/modsecurity_46_slr_et_xss.data
Zuletzt geändert von rendegast am 25.09.2015 15:09:27, insgesamt 2-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

burnersk
Beiträge: 125
Registriert: 22.10.2008 21:32:16
Lizenz eigener Beiträge: MIT Lizenz

Re: nginx mit ModSecurity und OWASP CRS

Beitrag von burnersk » 25.09.2015 15:04:17

Ich hatte schon mal mehrere ModSecurityConfig angegeben. Das hatte irgendwie nicht funktioniert. Ich probiere es aber noch einmal.

Aktuell hab ich ein Shell-Script, was mir die modsecurity.conf für nginx zusammen cat'et und die Pfade für *.data fixed.

Btw... ist es normal, dass ein Request ohne ModSecurity 0.140 ms braucht und der gleiche mit ModSecurity 11.800 ms? Ist schon ne krasse Veränderung. Arbeitet ModSecurity evtl. bei nginx nicht als persistenter "Prozess" innerhalb nginx?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: nginx mit ModSecurity und OWASP CRS

Beitrag von rendegast » 25.09.2015 15:19:23

Ist dieses den obligatorisch?
(Nach modsecurity-2.9.0/tests/regression/nginx/conf/nginx.conf.template scheinbar nicht)
proxy_pass http://localhost:8011;
proxy_read_timeout 180s;
("proxy_pass" ist im modsecurity.tar.gz nicht enthalten, also eine reine nginx-Option)
This configures ModSecurity as an Nginx request handler. The updated request flow is now: request -> modsecurity handler -> backend.
You will need to modify the @backend definition to point to your correct back-end web application that Nginx is proxying to. (obsolet)
Starting with ModSecurity 2.7.2 the ModSecurityPass option was removed.
(https://github.com/SpiderLabs/ModSecuri ... nce-Manual)
Das, verbunden mit der Bezeichnung "modsecurity-standalone" scheint mir auf eine Proxy-Technik zu deuten.
Mach doch mal
netstat -tpaun

pstree -pal
ob nginx einen weiteren Port öffnet oder separaten modsecurity-Prozeß startet.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten