Ricerca nel sito web

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.