GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Nginx con libmodsecurity e OWASP ModSecurity Core Rule Set su Ubuntu 16.04

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


Ubuntu
  1. Come installare il server HTTP Git con Nginx su Ubuntu 16.04

  2. Come installare HTTP Git Server con Nginx su Ubuntu 20.04

  3. Come installare Nginx con PHP5 e MySQL su Ubuntu 11.10

  4. Come distribuire Modsecurity con Nginx su Ubuntu 20.04 LTS

  5. Come installo e configuro Git su Ubuntu?

Installazione di Nginx con supporto PHP5 e MySQL su Ubuntu 8.10

Come installare Nginx con ModSecurity su Ubuntu 15.04

Come installare OWASP Core Rule Set su Modsecurity con Nginx su Ubuntu 20.04

Come configurare ModSecurity con Nginx su Debian/Ubuntu

Come installare ModSecurity 3 e OWASP Core Rule Set con Nginx su Debian 11 Bullseye

Configura Django con Postgres, Nginx e Gunicorn su Ubuntu 18.04