====== WAF: Web Application Firewall ======
Un WAF o Web Application Firewall és un tipus particular de //firewall// que monitoritza el contingut del servei web HTTP, permetent bloquejar l'accés en cas que es detectin atacs com [[SQL injection]], cross-site-scripting (XSS), i similars.
{{ waf.png?550 }}
Referencies
* [[Proxy Invers]]
* [[https://dementium2.com/administrador-neto/12-mejores-firewalls-de-aplicaciones-web-waf/|12 mejores aplicaciones WAF]] incloent versions //hardware// i //software//.
* [[https://diegooo.com/aws-athena-consulta-de-registro-cloudfront-y-waf/|WAF en AWS Cloud]]
{{tag> #FpInfor #Ciber #Ceti #CiberMp03 #CetiMp03 #Asix #AsixMp17 web server mod_security waf firewall }}
\\
===== mod_security en Apache =====
Farem una pràctica amb Apache2 en Ubuntu LTS i amb el clàssic mod_security.
Referències:
* [[https://adalmau.notion.site/LAB-3-9-WAF-Web-Application-Firewall-19d81908114e4af79327e44ee799d1a1#5ceb0c600d794b039cbb217a985fc061|LAB mod_security amb Nginx i Docker d'Anton Dalmau]]
* [[https://owasp.org/www-project-modsecurity-core-rule-set/|OWASP CRS - Code Rule Set]]
* [[https://resources.infosecinstitute.com/topic/analyzing-mod-security-logs/|Com analitzar els logs de mod_security]]
* [[https://www.linuxbabe.com/security/modsecurity-apache-debian-ubuntu|mod_security en Ubuntu]] un tutorial més complert.
==== Instal·lació ====
* Crea una màquina Ubuntu LTS. Pots utilitzar [[Vagrant]].
* Instal·la Apache2 i **libapache2-mod-security2**
* Activa mod_security amb$ sudo a2enmod security2
* Activa la configuració estàndard de OWASP a la carpeta ''/etc/modsecurity'':# cp modsecurity.conf-recommended modsecurity.conf
* Reinicia Apache
==== Monitoritzant el trànsit ====
* Visita la pàgina principal via IP (no amb nom de domini).
* Mira els logs d'Apache. Veus algun arxiu especial? Què hi ha? (a grans trets)
* Quanta informació hi ha aparegut amb una sola request?
* De què se'ns informa a ''errors.log''?
* Si apareix algun advertiment, quina severitat té?
* Fes una pàgina amb un formulari (només cal el HTML, sense PHP ni processament) a /var/www/html
* Intenta un atac de [[SQL injection]] com per exemple:dades' OR 1=1; --
* De moment hauria de permetre enviar les dades igualment (està en mode //DectectionOnly//).
* Mira els logs d'Apache. Quina severitat té ara l'avís?
==== Bloqueig d'atacs ====
* Activem la política de bloqueig enlloc de només monitorització. Anem a ''/etc/modsecurity/modsecurity.conf'' i canviem:SecRuleEngine DetectionOnly
per SecRuleEngine On
* Reinicia Apache
* Comprova ara què passa si intentes diversos atacs de SQL injection. Com et bloqueja l'atac?
\\
===== Exercici =====
Si has fet el 1r exerici de [[SQL injection]], pots modificar el Dockerfile que apareix al repositori per tal que l'Apache inclogui el ''mod_security''. Seguint les passes d'aquest tutorial hauria de ser molt similar.
Modifica-ho en el teu repositori on has fet el //fork// del projecte.
\\