ModSecurity, noto anche come Modsec, è un firewall per applicazioni Web gratuito e open source per il server Web Apache. ModSecurity è un modulo Apache che ti aiuta a proteggere il tuo server web da diversi tipi di attacchi tra cui SQL injection, XSS, trojan, bot, acquisizione/hijacking di sessioni e molti altri. ModSecurity fornisce potenti set di regole con monitoraggio web in tempo reale, registrazione e controllo degli accessi.
In questo tutorial, ti mostreremo come installare e configurare Mod Security con Apache su Ubuntu 18.04.
Prerequisiti
- Un nuovo VPS Ubuntu 18.04 sulla piattaforma Atlantic.Net Cloud.
- Un indirizzo IP statico configurato sul tuo server.
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 18.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 18.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Passaggio 2:installazione dello stack LAMP
Innanzitutto, dovrai installare LAMP Stack sul tuo server. Puoi installarlo eseguendo il seguente comando:
apt-get install apache2 mariadb-server php7.2-mysql php7.2 libapache2-mod-php7.2 unzip git -y
Dopo aver installato LAMP, avvia il servizio Apache e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start apache2 systemctl enable apache2
A questo punto, il server web Apache è installato ed è in esecuzione sul tuo server.
Fase 3 – Installa ModSecurity
apt-get install libapache2-mod-security2 -y
Una volta completata l'installazione, riavvia il servizio Apache per applicare le modifiche.
systemctl restart apache2
Successivamente, puoi anche verificare se il modulo è stato caricato o meno eseguendo il seguente comando:
apachectl -M | grep security
Dovresti ottenere il seguente output:
security2_module (shared)
Fase 4 – Configura ModSecurity
Non ci sono regole di sicurezza configurate per impostazione predefinita, quindi dovrai prima abilitarlo. Per farlo, rinomina il file di configurazione predefinito di ModSecurity /etc/modsecurity/modsecurity.conf-recommended in /etc/modsecurity/modsecurity.conf.
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Quindi, modifica il file utilizzando il tuo editor di testo preferito:
nano /etc/modsecurity/modsecurity.conf
Trova la seguente riga:
SecRuleEngine DetectionOnly
Sostituiscilo con il seguente:
SecRuleEngine On
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio Apache per rendere effettive le modifiche.
systemctl restart apache2
Passaggio 5:scarica e configura la regola principale di ModSecurity
Il set di regole predefinito di ModSecurity è disponibile all'interno della directory /usr/share/modsecurity-crs, ma si consiglia di scaricare un nuovo set di regole da GitHub.
Innanzitutto, rimuovi le vecchie regole con il seguente comando:
rm -rf /usr/share/modsecurity-crs
Quindi, scarica l'ultima serie di regole con il seguente comando:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
Successivamente, dovrai abilitare questa regola impostata nella configurazione di Apache. Puoi abilitarlo modificando il file /etc/apache2/mods-enabled/security2.conf:
nano /etc/apache2/mods-enabled/security2.conf
Aggiungi le seguenti righe sopra la riga ""
IncludeOptional "/usr/share/modsecurity-crs/*.conf IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf
Salva e chiudi il file. Quindi, riavvia il servizio Apache e abilita il modulo di intestazione Apache per implementare le modifiche.
a2enmod headers systemctl restart apache2
A questo punto, ModSecurity è configurato per funzionare con il server web Apache.
Fase 6:verifica ModSecurity
Dopo aver configurato ModSecurity, puoi provare a eseguire script dannosi su un browser web e verificare se le regole di ModSecurity verranno attivate.
Apri il tuo browser web e digita l'URL http://your-server-ip/index.html?exec=/bin/bash . Dovresti ricevere un messaggio di errore non consentito nella pagina seguente:
Per testare le regole di ModSecurity per la protezione contro un attacco XSS simulato, accedi all'URL http://your-server-ip/?q=”> dal tuo browser web. Dovresti vedere la seguente schermata:
Per testare le regole di ModSecurity rispetto alle scansioni Nessus, usa un comando curl con gli scanner Nessus per inviare richieste HTTP al server Apache come mostrato di seguito:
curl -i http://your-server-ip -A Nessus
Dovresti ricevere una risposta 403 Forbidden perché ModSecurity ha identificato lo User Agent come scansione Nessus:
HTTP/1.1 403 Forbidden Date: Sat, 21 Dec 2019 04:17:24 GMT Server: Apache/2.4.29 (Ubuntu) Content-Length: 278 Content-Type: text/html; charset=iso-8859-1
Fase 7 – Escludi un dominio specifico da ModSecurity
In alcuni casi, è necessario escludere un dominio specifico dalla protezione ModSecurity. Per disabilitare ModSecurity per un dominio specifico, apri il file di configurazione dell'host virtuale Apache per un dominio specifico:
nano /etc/apache2/site-enabled/your-domain.conf
Aggiungi le seguenti righe all'interno del blocco
<IfModule security2_module> SecRuleEngine Off </IfModule>
Salva e chiudi il file. Quindi, riavvia il servizio Apache per applicare le modifiche.
systemctl restart apache2
Conclusione
Abbiamo esaminato come installare e configurare ModSecurity per proteggere il tuo server web Apache da attacchi dannosi. Per ulteriori informazioni, visita la documentazione di ModSecurity su ModSecurity.