Introduzione
ModSecurity noto anche come Modsec è una robusta applicazione firewall Open-source per server Web Apache. Un software che protegge una rete o un'applicazione dall'accesso non autorizzato filtrando le richieste.
Mod Security è uno dei moduli Apache più importanti che fornisce il rilevamento e la prevenzione delle intrusioni per i server Web.
Mod_security viene utilizzato per proteggere il server Web da vari tipi di attacchi come XSS, bot, SQL-injection, trojan, dirottamento di sessione e molto altro.
In questo articolo, vedremo come installare e configurare mod_security sul server Ubuntu 18.04 LTS ed effettueremo alcuni test.
Se il vostro intento è installare ModSecurity su di un server in remoto continuate a leggere, altrimenti se volete installare ModSecurity sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno della password per l'autenticazione.
Per connettersi al server come utente root digitare questo comando:
ssh root@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare il primo parametro:
ssh VOSTRO_UTENTE@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
Siete ora connessi al vostro server, siete pronti per iniziare l'installazione di ModSecurity.
Installare ModSecurity
È possibile installare ModSecurity per Apache utilizzando il repository ufficiale di Ubuntu con apt.
Aggiornare la lista dei pacchetti:
sudo apt update
Installare Apache2 e alcuni pacchetti necessari:
sudo apt-get install apache2 mysql-server php-mysql php libapache2-mod-php
Avviare Apache2:
sudo systemctl start apache2
Abilitare Apache2 in automatico all'avvio del sistema:
sudo systemctl enable apache2
Installare Mod_Security
Per installare Mod_Security dare questo comando da terminale:
sudo apt-get install libapache2-mod-security2
Verificare lo stato di mod_security:
apachectl -M | grep security
Dovresti ricevere un messaggio di output simile al seguente:
security2_module (shared)
Configurare Mod_Security
Copiare e rinominare il file di configurazione predefinito /etc/modsecurity/modsecurity.conf-recommended in /etc/modsecurity/modsecurity.conf per abilitare e configurare ModSecurity con il seguente comando:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Aprire il seguente file:
nano /etc/modsecurity/modsecurity.conf
Cercare e modificare la seguente riga in questo modo:
SecRuleEngine On
Riavviare Apache2:
sudo systemctl restart apache2
Per impostazione predefinita, mod_security viene fornito con il set di regole di base (regole di sicurezza) situato nella directory /usr/share/modsecurity-crs. Ma si raccomanda di scaricare il CRS mod_security dal repository GitHub.
Effettuare un backup delle regole di default:
sudo mv /usr/share/modsecurity-crs /usr/share/modsecurity-crs.bk
Scaricare le nuove regole da Github:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
Spostarsi di cartella:
cd /usr/share/modsecurity-crs
Rinominare il file di esempio:
mv crs-setup.conf.example crs-setup.conf
Aprire il seguente file:
nano /etc/apache2/mods-enabled/security2.conf
Modificarlo nel seguente modo:
<IfModule security2_module>
SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional "/usr/share/modsecurity-crs/*.conf
IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf
</IfModule>
Riavviare Apache2:
sudo systemctl restart apache2
Test di Mod_Security
Testeremo adesso mod_security inviando alcune richieste dannose al server web Apache e verificherà se le richieste vengono bloccate o meno.
Inserisci l'URL sottostante un browser. Ricordarsi di sostituire l'indirizzo IP con l'indirizzo IP pubblico del proprio server o nome di dominio:
http://TUO_IP_O_DOMINIO/?q="><script>alert(1)</script>
Oppure da terminale:
curl 'http://TUO_IP_O_DOMINIO/?q="><script>alert(1)</script>'
Dovresti ricevere un messaggio di output simile al seguente:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.<br />
</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at TUO_IP Port 80</address>
</body></html>
Provare anche il seguente comando:
http://TUO_IP_O_DOMINIO/index.html?exec=/bin/bash
Oppure da terminale:
curl 'http://TUO_IP_O_DOMINIO/index.html?exec=/bin/bash'
Dovresti ricevere un messaggio di output simile al seguente:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.<br />
</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at TUO_IP Port 80</address>
</body></html>
L'installazione e la configurazione di Mod Security su Ubuntu 18.04 LTS è terminata.