Erinevus lehekülje "Modsecurity" redaktsioonide vahel

Allikas: Kuutõrvaja
139. rida: 139. rida:
 
* http://blog.supportpro.com/2009/08/mod_security-intro/
 
* http://blog.supportpro.com/2009/08/mod_security-intro/
 
http://www.thebitsource.com/infrastructure-operations/web-application/securing-apache-web-servers-modsecurity/
 
http://www.thebitsource.com/infrastructure-operations/web-application/securing-apache-web-servers-modsecurity/
 +
 +
http://www.askapache.com/htaccess/mod_security-htaccess-tricks.html

Redaktsioon: 25. veebruar 2011, kell 03:34


Sissejuhatus

ModSecurity, on nn veebiteenuse tulemüür (Web Application Firewall - WAF) ja IDS/IPS lahendus. Tegemist on tarkvaraga, mis filtreerib veebilehtedele tehtavaid päringuid ja üritab tõkestada nii rünnakuid serverile kui ka lehe näotustamise katseid.

Install ja seadistus

FreeBSDs asub moodul portsude www/mod_security harus Gentoo ...

httpd.conf

Siin on tarvilik laadida moodul ja seejärel konfiguratsioonifail

LoadModule security_module    modules/mod_security.so
AddModule mod_security.c
Include /etc/apache2/modsecurity.conf

modsecurity.conf sisu

 <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"
 
    SecUploadDir /tmp
    SecUploadKeepFiles Off
 
    # Only record the interesting stuff
    SecAuditEngine RelevantOnly
    # Uncomment below to record responses with unusual statuses
    # SecAuditLogRelevantStatus ^5
    # modsecurity peamine logifail
    SecAuditLog /var/log/apache2/modsec_audit.log
 
    # You normally won't need debug logging
    SecFilterDebugLevel 0
    # modsecurity debug logi
    SecFilterDebugLog /var/log/apache2/modsec_debug.log
 
    # lokaalne exclude list, ehk siis tühistame mõningad liiga karmid reeglid (süntaks toodud allpool)
    Include /etc/apache2/modsecurity/exclude.conf
 
    # Gotroot.com'i http://www.gotroot.com/ 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>

põhireeglid rules.conf ilmselt kõige mõistlikum. Hetkel küljes ka rootkits.conf, mis peaks tõkestama kõiksugu failide includemised jmt.

badips on 7000~ rida IP numbreid, mida võiks põhimõtteliselt tulemüüri või kuhugi toppida ja ei pea apache regexides kasutama). Ilmselt on mõistlik badips.conf fail küljes hoida juhul kui soov vähendada DDoSi võimalust, kahjuks kõiki maailma halbu aadresse blokeerida ei jõua.

/var/log/httpd/modsec_audit.log failist saab jälgida, kelle ta ära blokib. Tundub, et üsna hoogsalt üritatakse spämmi edastada. 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).

modsecurity/exclude.conf

<Directory /www/html>
SecFilterRemove 300018
</Directory>

<Directory /lasteaed/www/html>
SecFilterRemove 300018
</Directory>

<Directory /muistne/www/html/>
SecFilterRemove 300018
</Directory>

Reegleid saab mõne veebi piires keelata ka näiteks .htaccess fail sisuga

  SecFilterEngine Off
  SecFilterScanPOST Off

Märkmeid kasutamisest

rakendamisel default reeglitega tõstis normaalse koormuse juures loadi tunduvalt. Siis kommenteerisin välja suure hulga reegleid, mis spämmisaatmise vastu võitlevad (regexpi kontrollid) ja load jäi 1 ja 1.5 kanti.

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.

Enamus filtreid rakenduvad HTTP GET päringutele, keelatud on m.h. järgnev:

  • teistele veebilehtedele viitamine täispika URLiga, nagu page=http://www.example.com/
  • SQL käsurea esinemine, nagu: "select * from"
  • UNIXi käskude esinemine, nagu: wget, uname
  • PHP koodi või funktsioonide esinemine, nagu: <?php, exec, fopen

HTTP POST meetodiga saab edastada pikemaid tekste ja faile, mille puhul on raske kindlaks teha, kas tegemist on rünnakuga või näiteks Linuxi installeerimisjuhendiga, mistõttu selle meetodi päringute puhul tõkestatakse ainult liiklus, mis vastab täpselt mingi tuntud ründe mustrile.

Lisaks rakenduvad kõigile ülejäänud HTTP päringu päiseridadele filtrid, mis kontrollivad, et need vastaksid standarditele ja ei sisaldaks midagi lubamatut. Normaalse veebiliikluse puhul need reeglid aga probleeme ei peaks tekitama.

Tõkestatud liikluse tunnuseks on veakood 403 ja veebilehe asemel ekraanil näidatav kiri pealkirjaga "Forbidden".

http://www.thebitsource.com/infrastructure-operations/web-application/securing-apache-web-servers-modsecurity/

http://www.askapache.com/htaccess/mod_security-htaccess-tricks.html