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.
Qui a LinuxAPT, esamineremo come installare il firewall ModSecurity con Nginx preinstallato sul server Ubuntu 20.04.
Passaggi per implementare Modsecurity con Nginx su Ubuntu 20
1. Installa Nginx sul sistema
Se non hai Nginx installato sul tuo server, segui questa guida per soddisfare i requisiti di installazione di Modsecurity:https://linuxapt.com/blog/1276-install-nginx-on-ubuntu-20-04-lts-using- codice sorgente
2. Installa libmodsecurity3
Ora 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/
3. 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/
4. 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
5. 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
6. 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:
fatal: No names found, cannot describe anything.
7. 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/.
8. Installa il connettore modsecurity-nginx
Qui 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/
9. 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/
10. 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;
11. 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:
secruleEngine DetectionOnly
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.
12. 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/
13. Controlla la configurazione di Nginx
Prima di riavviare Nginx, controlla se la configurazione è corretta eseguendo questo comando:
$ sudo nginx -t
14. Ricarica Nginx
Ora riavvia Nginx con questo comando:
$ sudo systemctl restart nginx