In questo tutorial, ti mostrerò come compilare l'ultima versione di Nginx con libmodsecurity (Modsecurity 3.x) da NON confondere con Modsecurity 2.9. Integreremo anche l'OWASP ModSecurity Core Rule Set (CRS).
Libmodsecurity è un'importante riscrittura di ModSecurity che offre prestazioni e stabilità migliorate. Anche se Modsecurity 2.9.x è stato offerto per piattaforme diverse, ha davvero favorito la distribuzione con Apache e la distribuzione con altre piattaforme ha richiesto varie dipendenze di terze parti a scapito delle prestazioni. Libmodsecurity cambia tutto questo essendo una riscrittura da zero. Maggiori informazioni su Libmodsecurity sono disponibili qui.
Questa guida presuppone che tu abbia già una nuovissima istanza aggiornata di Ubuntu 16.04 a 64 bit.
1. Installa i prerequisiti
Installa i prerequisiti
apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev
2. Scarica ModSecurity
Git clone Modsecurity, checkout e build libmodsecurity
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
make
make install
Git clona il connettore Modsecurity-nginx
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
Ora dovresti avere la seguente directory che contiene il connettore Modsecurity-nginx
/opt/ModSecurity-nginx
3. Scarica Nginx
Scarica l'ultima fonte stabile di Nginx
Vai a http://nginx.org/en/download.html e ottieni il link all'ultima versione stabile di Nginx. Al momento della stesura di questo articolo, l'ultima versione stabile era nginx-1.12.0.tar.gz. Regola le istruzioni di seguito per la tua versione specifica. Scarica ed estrai
cd /opt
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
4. Configura e installa Nginx
Configura Nginx con il connettore Modsecurity-nginx e installa
./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx
make
make install
Il codice sorgente di ModSecurity che abbiamo scaricato in precedenza include un file modsecurity.conf di esempio con alcune impostazioni consigliate. Copia questo file nella cartella con i file di configurazione di Nginx
cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
Crea un collegamento simbolico da /usr/local/nginx/sbin/nginx a /bin/nginx
ln -s /usr/local/nginx/sbin/nginx /bin/nginx
Crea le seguenti directory:
mkdir /usr/local/nginx/conf/sites-available
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx
Crea un collegamento simbolico a da /usr/local/nginx/conf/ssl /etc/nginx/ssl
ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl
Crea una copia di backup del file conf/nginx.conf
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak
Configura il file /usr/local/nginx/conf/nginx.conf
vi /usr/local/nginx/conf/nginx.conf
Individua e rimuovi tutte le voci che iniziano con "server {" e terminano con la penultima parentesi graffa chiusa "}". In altre parole, lascia intatta l'ultima parentesi graffa.
Subito sopra l'ultima parentesi graffa, inserisci quanto segue. Questo indicherà a Nginx di cercare le configurazioni del nostro sito nella directory "/usr/local/nginx/conf/sites-enabled"
include /usr/local/nginx/conf/sites-enabled/*;
Quindi la fine del file dovrebbe apparire come di seguito (assicurati che la chiusura } sia presente):
include /usr/local/nginx/conf/sites-enabled/*;
}
Abilita la direttiva "user" rimuovendo il prefisso "#" se disabilitato e assicurati che sia impostato su "www-data" dell'utente anziché su "nessuno" predefinito in modo che appaia di seguito:
user www-data;
Salva il file.
Scarica lo script di inizializzazione Nginx di Jason Giedymin per la gestione del servizio nginx e configuralo come servizio
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults
Questo script fornisce le seguenti opzioni per la gestione del servizio Nginx:
# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy
5. Installa OWASP ModSecuirty Core Rule Set
Git clone e copia la versione corrente del set di regole OWASP e configura su Nginx
cd /opt/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs/
cp -R rules/ /usr/local/nginx/conf/
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf
Configura Nginx con il set di regole di base ModSecuirty OWASP
Modifica /usr/local/nginx/conf/modsecurity.conf
vi /usr/local/nginx/conf/modsecurity.conf
Alla fine del file, incolla quanto segue:
#Load OWASP Config
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350
Nel tuo file Nginx modsecurity.conf o nei tuoi singoli file di configurazione del server, inserisci quanto segue nel server o nei blocchi di posizione. L'esempio seguente mostra una combinazione di aggiunta delle voci sia nel server che nei blocchi di posizione:
server {
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}
Metti alla prova la tua configurazione Nginx
service nginx configtest
Se non ci sono errori, ricarica o riavvia il tuo Nginx
service nginx reload
Ora puoi visualizzare /var/log/modsec_audit.log per qualsiasi evento ModSecurity
tail -f /var/log/modsec_audit.log
Se sei soddisfatto, modifica il file /usr/local/nginx/conf/modsecurity.conf e imposta "SecRuleEngine" da "DetectionOnly" a "On" come di seguito
SecRuleEngine On
Questo conclude questa guida.
Informazioni sull'autore
Dino Edwards è un professionista IT con oltre 20 anni di esperienza nel settore federale, statale e privato. È anche noto per dilettarsi nella programmazione.
Tende a scrivere guide o istruzioni dopo aver terminato un particolare progetto principalmente perché la sua memoria fa schifo e non vuole reinventare la ruota se deve rifare lo stesso progetto.
Mettiti in contatto
Sito web dell'autore Segui E-mail