Introduzione
ModSecurity è un modulo plug-in per Apache che funziona come un firewall. Funziona tramite set di regole, che ti consentono di personalizzare e configurare la sicurezza del tuo server.
ModSecurity può anche monitorare il traffico web in tempo reale e aiutarti a rilevare e rispondere alle intrusioni. Può essere utilizzato con Apache, Nginx e IIF ed è compatibile con Debian, Ubuntu e CentOS.
Questo tutorial spiega come installare e configurare ModSecurity sui server Web Apache.
Prerequisiti
- Lo stack LAMP (Linux, Apache, MySQL, PHP) installato e configurato
- Accesso a un account utente con sudo o root privilegi
- Un gestore di pacchetti (APT o YUM), incluso per impostazione predefinita
- Una riga di comando/finestra del terminale (Ctrl-Alt-T, Ctrl-Alt-F1)
- Un editor di testo, come nano
Fase 1:aggiorna i repository software
Apri una finestra di terminale e inserisci quanto segue:
Su Debian/Ubuntu
sudo apt update -y
Su CentOS
sudo yum update -y
Fase 2:installazione di ModSecurity su Apache
Installa ModSecurity su Debian
1. In una finestra del terminale, immettere quanto segue:
sudo apt install libapache2-modsecurity
Se richiesto, premi y
e premi Invio per consentire il completamento del processo.
2. Riavvia il servizio Apache:
sudo systemctl restart apache2
Non ci sarà output se Apache è stato riavviato correttamente.
3. Verifica la versione del software (dovrebbe essere 2.8.0 o successiva):
apt-cache show libapache2-modsecurity
Installa ModSecurity su Ubuntu 18.04
1. In una finestra del terminale, immettere:
sudo apt install libapache2-mod-security2
Se richiesto, premi y
e premi Invio per consentire il completamento del processo.
2. Riavvia il servizio Apache:
sudo systemctl restart apache2
Non ci sarà output se Apache è stato riavviato correttamente.
3. Verifica la versione del software (dovrebbe essere 2.8.0 o successiva):
apt-cache show libapache2-mod-security2
Installa ModSecurity su CentOS 7
1. Immettere quanto segue in una finestra del terminale:
sudo yum install mod_security
Se richiesto, premi y
e premi Invio per consentire il completamento del processo.
2. Riavvia il servizio Apache:
sudo systemctl restart httpd.service
3. Verifica la versione del software (dovrebbe essere 2.8.0 o successiva):
yum info mod_security
Passaggio:3 Configura ModSecurity
Al momento dell'installazione, ModSecurity è impostato per registrare gli eventi in base alle regole predefinite. Dovrai modificare il file di configurazione per regolare le regole per rilevare e bloccare il traffico.
Il file di configurazione predefinito è /etc/modsecurity/modsecurity.conf-recommended.
1. Copia e rinomina il file:
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
2. Quindi, cambia la Modalità di rilevamento ModSecurity . Per prima cosa, passa a /etc/modsecurity cartella:
sudo cd /etc/modsecurity
3. Apri il file di configurazione in un editor di testo (useremo nano):
sudo nano modsecurity.conf
Vicino alla parte superiore, dovresti vedere una voce etichettata:
SecRuleEngine DetectionOnly
Modificalo per leggere come segue:
SecRuleEngine On
4. Usa CTRL+X per uscire, quindi premi y quindi Invio per salvare le modifiche.
5. Allontanati dalla cartella /etc/modsecurity:
cd
6. Riavvia Apache:
Su Debian/Ubuntu
sudo systemctl restart apache2
Su CentOS
sudo systemctl restart httpd.service
Questo attiverà ModSecurity utilizzando le regole predefinite di base. In alcune versioni di Linux, questo include il set di regole di base OWASP. Tuttavia, potrebbe differire dall'ultima versione gestita dagli sviluppatori.
Fase 4:scarica le ultime regole OWASP ModSecurity
L'ultimo Core Rule Set (CRS) per ModSecurity viene mantenuto su GitHub.
1. Installa G esso se non è già incluso nel tuo sistema.
Installa Git su Debian/Ubuntu:
sudo apt install git
Installa Git su CentOS:
sudo yum install git
2. Scarica una copia del CRS:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
Questo inserisce una copia della directory come sottodirectory della tua posizione di lavoro corrente.
3. Apri una nuova directory:
cd owasp-modsecurity-crs
4. Sposta il file crs-setup:
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
5. Quindi sposta la directory delle regole:
sudo mv rules/ /etc/modsecurity
Se si verifica un errore durante il tentativo di spostare questa directory, immettere:
sudo mkdir /etc/modsecurity/rules
cd rules
sudo cp *.* /etc/modsecurity/rules
6. Quindi, controlla il tuo security2.conf per verificare che sia impostato per caricare le regole di ModSecurity:
sudo nano /etc/apache2/mods-enabled/security2.conf
Verifica di avere le seguenti righe incluse e non commentate:
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
Se non ci sono, aggiungili. Non duplicarli, o rischi di disabilitare il tuo servizio Apache.
7. Riavvia il servizio Apache:
Su Debian/Ubuntu
sudo systemctl restart apache2
Su CentOS
sudo systemctl restart httpd.service
Fase 5:verifica la configurazione di Apache
1. Apri il file di configurazione di Apache predefinito:
sudo nano /etc/apache2/sites-available/000-default.conf
2. Individua il </VirtualHost>
tag in basso e aggiungi le seguenti righe:
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"
Puoi modificare il msg
a quello che preferisci.
Salva ed esci dal file (CTRL+X
> y
> Entra ).
3. Riavvia il servizio Apache:
Su Debian/Ubuntu
sudo systemctl restart apache2
Su CentOS
sudo systemctl restart httpd.service
4. Quindi, inserisci il seguente comando:
curl localhost/index.html?testparam=test
Il sistema risponde tentando di visualizzare la pagina Web predefinita. Al posto del contenuto, genera codici di errore e messaggi all'interno dei tag:
5. Puoi confermare che ModSecurity ha funzionato cercando il codice 403 nei log degli errori di Apache con il comando:
sudo tail -f /var/log/apache2/error.log
Una delle voci verso il basso dovrebbe essere il codice di errore ModSecurity:
Testa ModSecurity e OWASP CRS con lo script Bash
Un altro metodo che puoi utilizzare per testare ModSecurity è utilizzare una B cenere copione.
1. Immettere il seguente comando nel terminale:
curl localhost/index.html?exec=/bin/bash
L'output mostra gli stessi messaggi di errore dell'ultima volta.
2. Visualizza nuovamente il file Apache error.log e scoprirai che la regola è stata attivata:
sudo tail -f /var/log/apache2/error.log
L'output visualizza il messaggio di errore ModSecurity relativo a OWASP.
Fase 6:crea le regole ModSecurity
Di seguito è riportato un esempio di test su come utilizzare ModSecurity per bloccare parole chiave specifiche su un modulo PHP.
1. Crea un file PHP all'interno della directory html con il comando:
sudo nano /var/www//html/test.php
2. Inserisci il seguente codice nel file:
<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>
Salva il file ed esci.
3. Quindi, crea un nuovo file di regole personalizzate ModSecurity:
sudo nano /etc/modsecurity/modsecurity_custom_rules.conf
Aggiungi le seguenti righe:
SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"
Ovviamente, cambia le parole chiave nell'ultima riga con quelle che vuoi.
Salva il file ed esci.
4. Ricarica il servizio Apache:
Su Debian/Ubuntu
sudo systemctl restart apache2
Su CentOS
sudo systemctl restart httpd.service
5. Avvia il modulo in un browser web
localhost/test.php
6. Digitare una delle parole chiave dalla regola nel modulo. In questo esempio:ingrandisci, nigeriano, o oro .
Dovresti ricevere un messaggio di errore 403 Proibito.
Puoi anche controllare il /var/log/apache2/error.log
file per verificare l'azione di ModSecurity.