ModSecurity è un firewall per applicazioni Web gratuito e open source supportato da diversi server Web come Apache, IIS e Nginx. Viene distribuito come livello di sicurezza esterno per proteggere i server Web.
In questo tutorial imparerai come installare il firewall ModSecurity con Nginx preinstallato. Abbiamo utilizzato il server Ubuntu 20.04 per dimostrare il processo.
Prerequisiti
Server Ubuntu 20.04 LTS
Nginx installato sul server Ubuntu
Guida all'installazione
Se non hai Nginx installato sul tuo server, segui questa guida per soddisfare i requisiti di installazione di Modsecurity:
https://linuxways.net/ubuntu/how-to-install-nginx-on-ubuntu-20-04-lts-using-source-code/
Ora che hai installato Nginx, iniziamo con l'installazione di ModSecurity.
Passaggio 1:installa libmodsecurity3
Prima di tutto, installa git sulla tua macchina in modo da poter clonare il repository git di ModSecurity. Possiamo farlo eseguendo questo comando:
sudo apt install git -y
Ora che git è installato, clona il repository eseguendo questo comando:
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Fase 2:vai alla directory Modsecurity
Ora che hai clonato il repository git di modsecurity, vai alla directory modsecurity seguendo il percorso seguente:
cd /usr/local/src/ModSecurity/
Fase 3:installa le dipendenze di libmodsecurity3
Ora che siamo all'interno della directory Modsecurity, installeremo le dipendenze di libmodsecurity3 in questo passaggio. Esegui questo comando:
sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y
Fase 4:installa i moduli Git
Ora, installa i sottomoduli git con l'aiuto di questo comando:
git submodule init
Successivamente, aggiorneremo i sottomoduli:
git submodule update
Fase 5:crea l'ambiente modsecurity
È tempo di costruire l'ambiente modsecurity. Per farlo, esegui il seguente comando:
./build.sh
Ora configura usando questo comando:
./configure
Dopo questo, riceverai questo errore:
Va bene ignorarlo e andare avanti.
Fase 6:compila il codice sorgente di modsecurity
Ora compileremo l'ambiente per libmodsecurity3 con questo comando:
make
Se vuoi aumentare la velocità di compilazione, puoi specificare -j
make -j 4
Successivamente, eseguiremo il comando di installazione:
sudo make install
L'installazione viene eseguita in /usr/local/modsecurity/ .
Step 7: Install modsecurity-nginx connector
In questo passaggio, installeremo il connettore Modsecurity-nginx. È il punto di connessione e comunicazione tra Nginx e ModSecurity.
Prima di tutto, dobbiamo clonare il repository del connettore. Fallo eseguendo questo comando:
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
/usr/local/src/ModSecurity-nginx/
Fase 8:installa le dipendenze modsecurity-nginx
Per prima cosa, vai alla directory di origine di Nginx in questo modo:
cd /usr/local/src/nginx/nginx-1.21.1
Assicurati di sostituire la versione di Nginx nel comando con la versione corrente di Nginx, altrimenti riceverai un errore.
Per installare le dipendenze necessarie, esegui questo comando:
sudo apt build-dep nginx && sudo apt install uuid-dev -y
Successivamente, compileremo il modulo connettore Modsecurity-nginx con il flag –with-compat eseguendo questo comando:
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Ora esegui questo comando per creare i moduli dinamici:
sudo make modules
Ora, copia il modulo dinamico che hai appena creato in objs/ngx_http_modsecurity_module.so in /usr/share/nginx/modules con l'aiuto di questo comando:
sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
Fase 9:abilita Modsecurity nel file di configurazione di Nginx
Per abilitare Modsecurity in Nginx, devi prima specificare il modulo di caricamento e il percorso del tuo modulo modsecurity nella configurazione.
Apri il file di configurazione di Nginx con l'editor nano in questo modo:
sudo nano /etc/nginx/nginx.conf
Nel file, aggiungi questa riga in alto:
load_module modules/ngx_http_modsecurity_module.so;
Nella sezione HTTP {}, aggiungi le seguenti righe di codice:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;
Fase 10:Configura directory e file per modsecurity
Crea una directory con il nome modsec. Il percorso della directory è indicato nel comando:
sudo mkdir /etc/nginx/modsec/
Avrai bisogno di questa directory in futuro per archiviare i file di configurazione e le regole.
Ora, copia il file di configurazione Modsecurity di esempio dalla directory git clonata con questo comando:
sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Ora apri il file di configurazione di modsecurity:
sudo nano /etc/nginx/modsec/modsecurity.conf
Individua la direttiva SecRuleEngine nel file alla riga 7 e modificala in DetectionOnly in questo modo:
secruleSolo rilevamento motore
Per abilitare Modsecurity, trova modifica la seguente direttiva su On in questo modo:
secRuleEngine on
Ora individua la seguente direttiva alla riga 224:
secAuditLogParts ABIJDEFHZ
Cambialo in:
secAuditLogParts ABCDEFHJKZ
Ora crea il file modsec-config.conf. Qui aggiungerai modsecurity.conf e altre regole per modsecurity:
sudo nano /etc/nginx/modsec/modsec-config.conf
All'interno del file che hai appena creato, aggiungi questa riga:
Include /etc/nginx/modsec/modsecurity.conf
Salva il file ed esci.
Fase 11:copia il file unicode.mapping
Infine, copia il file unicode.mapping di Modsecurity in questo modo:
sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Fase 12:controlla la configurazione di Nginx
Prima di riavviare Nginx, controlla se la configurazione è corretta eseguendo questo comando:
sudo nginx -t
Se ottieni il seguente output, sei a posto:
Fase 13:ricarica Nginx
Ora riavvia Nginx con questo comando:
sudo systemctl restart nginx
In questa guida abbiamo visto come installare Modsecurity su un server Ubuntu su cui è già preinstallato Nginx. Abbiamo anche visto come configurare ModSecurity e Nginx per connetterli con l'aiuto di alcuni comandi facili da seguire.