Modsecurity
ModSecurity
On Apache jaoks kirutatud IDS/IPS lahendus mis võimaldab päringuid reeglite alusel filtreerida ning ebasoovitavate ja eelnevalt defineeritud mustrite esimise korral blokeerida
Install ja seadistus
TODO
modsecurity.conf
#LoadModule security_module modules/mod_security.so #AddModule mod_security.c <IfModule mod_security.c> # Enable ModSecurity SecFilterEngine On # Reject requests with status 403 SecFilterDefaultAction "deny,log,status:403" # Some sane defaults SecFilterScanPOST On SecFilterCheckURLEncoding On SecFilterCheckUnicodeEncoding Off # Accept almost all byte values SecFilterForceByteRange 1 255 # Server masking is optional # SecServerSignature "Microsoft-IIS/5.0" # Designate a directory for temporary files # storage. It is a good idea to change the # value below to a private directory, just as # an additional measure against race conditions SecUploadDir /tmp SecUploadKeepFiles Off # Only record the interesting stuff SecAuditEngine RelevantOnly # Uncomment below to record responses with unusual statuses # SecAuditLogRelevantStatus ^5 SecAuditLog /var/log/apache2/modsec_audit.log # You normally won't need debug logging SecFilterDebugLevel 0 SecFilterDebugLog /var/log/apache2/modsec_debug.log # lokaalne exclude list Include /etc/apache2/modsecurity/exclude.conf # Gotroot.com'i reeglid # exclude list Include /etc/apache2/modsecurity/gotroot_exclude.conf # application protection Include /etc/apache2/modsecurity/rules.conf #rootkits Include /etc/apache2/modsecurity/rootkits.conf </IfModule>
modsecurity/exclude.conf
<Directory /www/html> SecFilterRemove 300018 </Directory> <Directory /lasteaed/www/html> SecFilterRemove 300018 </Directory> <Directory /muistne/www/html/> SecFilterRemove 300018 </Directory>
Märkmeid kasutamisest
rakendamisel viskas praeguse (normaalse) koormuse juures loadi 20-le. Siis kommenteerisin välja suure hulga reegleid, mis spämmisaatmise vastu võitlevad (regexpi kontrollid) ja load jäi 1 ja 1.5 kanti.
Ilmselt on mõistlik badips.conf fail küljes hoida, et vähendada DDoSi võimalust pisutki, põhireeglid rules.conf kah ilmselt mõistlik. Hetkel küljes ka rootkits.conf, mis peaks tõkestama kõiksugu failide includemised jmt.
/var/log/httpd/modsec_audit.log failist saab jälgida, kelle ta ära blokib. Tundub, et üsna hoogsalt üritatakse mingit spämmi vms edastada.
Apache 1.3 puhul tasub mod_security kompileerida libpcre abil ja panin apache libpcre sisse laadima - nii ei kasutata enam apache 1.3 seesmist regexi mootorit mis on pcre-st kordades aeglasem.
Ühtlasi jätsin alles reeglid: rules.conf ja rootkits.conf (badips oli 7000 rida IP numbreid, mida võiks põhimõtteliselt tulemüüri või kuhugi toppida ja ei pea apache regexides kasutama).
Seejärel on masina load 0.4 - 0.8 kandis püsinud. Ehk võib siis käima jätta niimoodi.
PS. Kui keegi kurdab, et tal asjad ei tööta, siis tuleks auditi logist uurida ja vajadusel /etc/apache/modsecurity/exclude.conf-is sealsete näidete alusel vastavad ID-d välja lülitada (per LocationMatch või Directory vms).
Reegleid saab mõne veebi piires keelata ka näiteks .htaccess fail sisuga
SecFilterEngine Off SecFilterScanPOST Off