Come configurare ModSecurity con Apache su Debian/Ubuntu
Il server web Apache è altamente personalizzabile e può essere configurato in diversi modi per soddisfare le tue esigenze. Esistono molti moduli di terze parti che puoi utilizzare per configurare Apache secondo le tue preferenze.
ModSecurity è un WAF (Web Application Firewall) open source nativo del server web Apache. Inizialmente era solo un modulo Apache, ma nel corso dell'anno è cresciuto fino a diventare un firewall per app Web a tutti gli effetti. Ora è supportato da Nginx e persino da IIS.
ModSecurity controlla le richieste in entrata al server web rispetto a un insieme di regole predefinite. In genere, fornisce una serie di regole note come CRS (Core Rule Set) che proteggono un sito Web da una serie di attacchi alle applicazioni Web come SQL injection, XSS e session dirottamento tra gli altri exploit.
Il firewall per applicazioni ModSecurity costituisce parte integrante della conformità PCI DSS nella protezione dei siti da attacchi esterni. Quando il modulo è abilitato, attiva un "403 Forbidden Error" che implica semplicemente che non disponi di autorizzazioni sufficienti per accedere alla risorsa sul server web.
In questa guida ti mostreremo come impostare e configurare ModSecurity per funzionare con Apache su Debian e Ubuntu Linux.
Passaggio 1: installa ModSecurity su Ubuntu
Il primo passo è installare ModSecurity. Inizieremo innanzitutto aggiornando l'elenco dei pacchetti come segue:
sudo apt update
Successivamente, installa il pacchetto ModSecurity insieme ad altre dipendenze e librerie.
sudo apt install libapache2-mod-security2
Successivamente, abilita il modulo.
sudo a2enmod security2
Quindi riavviare il server web Apache per applicare le modifiche.
sudo systemctl restart apache2
A questo punto, ModSecurity è installato con successo. Ora configuriamolo.
Passaggio 2: configura ModSecurity in Ubuntu
Per impostazione predefinita, ModSecurity è configurato solo per rilevare e registrare attività sospette. Dobbiamo fare un ulteriore passo avanti e configurarlo non solo per rilevare ma anche per bloccare attività sospette.
Copia il file di configurazione ModSecurity predefinito – modsecurity.conf-consigliato – in un nuovo file come fornito nel comando seguente.
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Utilizzando il tuo editor di testo preferito, apri il file
sudo nano /etc/modsecurity/modsecurity.conf
Individua la linea:
SecRuleEngine DetectionOnly
Impostalo su:
SecRuleEngine On
Salvare le modifiche ed uscire dal file.
Per applicare le modifiche in Apache, riavvia il server web.
sudo systemctl restart apache2
Passaggio 3: Scarica il set di regole principali di OWASP ModSecurity
Il passaggio successivo è scaricare l'ultima versione OWASP ModSecurity Core Rule Set (CRS) dalla pagina GitHub.
Clona il repository git OWASP come mostrato.
git clone https://github.com/coreruleset/coreruleset.git
Navigare nella directory.
cd coreruleset/
Assicurati di spostare il file crs-setup.conf.example nella directory modsecurity e rinominarlo come crs-setup.conf.
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
Inoltre, sposta anche la directory rules nella directory modsecurity.
sudo mv rules/ /etc/modsecurity/
Successivamente, modifica il file security2.conf.
sudo nano /etc/apache2/mods-enabled/security2.conf
Assicurati che contenga le seguenti righe.
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
Quindi riavvia Apache affinché le modifiche persistano.
sudo systemctl restart apache2
Testiamo ora la nostra configurazione ModSecurity.
Passaggio 4: testare la configurazione di ModSecurity su Ubuntu
Infine, dobbiamo verificare che ModSecurity possa rilevare e bloccare il traffico HTTP sospetto. Per raggiungere questo obiettivo, dobbiamo modificare il file host virtuale predefinito.
sudo nano /etc/apache2/sites-available/000-default.conf
Successivamente, creeremo una regola di blocco che bloccherà l'accesso a un determinato URL quando si accede da un browser web.
Aggiungi queste righe alla fine prima del tag di chiusura "Virtualhost".
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"
Sentiti libero di impostare i tag "id" e "msg" su qualunque valore desideri.
Quindi riavvia il server web Apache per applicare le modifiche apportate al file di configurazione dell'host virtuale.
sudo systemctl restart apache2
Sul tuo browser web, prova a visitare l'URL mostrato con ?testparam=test
alla fine.
http://server-ip/?testparam=test
Ricevi un "Errore proibito 403" che indica che ti è stato bloccato l'accesso alla risorsa.
È possibile verificare ulteriormente che il client sia stato bloccato controllando i log degli errori come segue.
cat /var/log/apache2/error.log | grep “Test Successful”
Questa è la conferma che abbiamo configurato con successo ModSecurity per rilevare e bloccare il traffico indesiderato. In questa guida ti abbiamo guidato attraverso il processo di configurazione di ModSecurity con Apache su sistemi Debian/Ubuntu.