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 [email protected]_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 anche il primo parametro:
ssh [email protected]_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.