--- title: Web Application Firewall tags: daw, M8 --- # Aplicació web tallafocs (WAF) * [vincle a font en MarkDown](https://hackmd.io/@JdaXaviQ/Ski1lyBbc) --- ## 1. Què és una WAF? Una WAF és una aplicació que està pensada per a protegir un servidor web dels atacs que es produeixen a nivell de capa OSI d'aplicació (nivell 7 OSI). Les WAF funcionen analitzant el transit HTTP i permeten detectar i eventualment bloquejar les peticions sospitoses d'incloure algún tipus d'atac, com ara podrien ser: SQL injection, intrusió en fitxers locals, cross-site scripting, etc. La principal diferència amb un firewall estàndar com iptables, és que aquests treballen a nivell de xarxa i transport, capes 3 i 4 respectivament de l'esquema OSI i com acavem de veure les WAF actuen a la capa 7 (aplicació), i tenen en compte el contingut de les peticions (requests) i les respostes (responses) HTTP. Existeixen diverses solucions WAF, algunes basades en hardware i d'altres en software, nosaltres, pel moment ens limitarem a veure una solució software que s'integra amb el popular servidor web Apache2; en concret em refereixo al mòdul **ModSecurity**. ## 2. Instal·lació de ModSecurity a Ubuntu. ``` $ sudo apt install libapache2-mod-security2 $ sudo a2enmod security2 $ sudo systemctl restart apache2 ``` ## 3. Configuració de ModSecurity. En una instal·lació estàndard, el fitxer /etc/apache2/mods-enabled/security2.conf conté una línia per incloure tots els fitxer de configuració del directori /etc/modsecurity/ i és precisament a aquest directori on realitzarem la configuració de la nostra WAF. * El primer pas si no tenim el nostre propi fitxer de configuració es copiar el fitxer per defecte que ens proporciona modSecurity. ``` $ sudo cp sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf ``` * A continuació necessitem escriure les regles de detecció d'atacs. Per sort hi ha un fitxer de regles molt popular que podem fer servir per a començar, l'**OWASP Core Rule Set (CRS)**. El podem baixar directament de GitHub amb la comanda: ``` wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz ``` * I finalment el descomprimim a /etc/apache2/modsecurity-crs/ * Desprès renombrem el fitxer /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf.example a crs-setup.conf. * Ara hem de fer que aquestes regles siguin llegides pel mòdul modSecurity, per això hem de modificar el fitxer: /etc//apache2/mods-enabled/security2.conf i canviar la linia: * IncludeOptional /usr/share/modsecurity-crs/*.load * per aquestes dues: * IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf * IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf * ## 4. Testing ModSecurity. En aquest punt tenim el nostre modSecurity actiu però només registra els atacs al loggin, si volem que també bloquegi les peticions hem de modificar el fitxer: /etc/modsecurity/modsecurity.conf i activar la directiva **SecRuleEngine On** ![](https://i.imgur.com/gkNSD5o.png) curl -X GET "http://localhost/index.html?id=3\";DROP%20database%20users;" ![](https://i.imgur.com/4iMP67e.png) ## 5. I a partir d'aqui? El futur es vostre ...