---
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**

curl -X GET "http://localhost/index.html?id=3\";DROP%20database%20users;"

## 5. I a partir d'aqui?
El futur es vostre ...