GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Nginx con ModSecurity su Ubuntu 15.04

ModSecurity è un Web Application Firewall (WAF) open source per server Web Apache Nginx e IIS. Questo firewall a livello di applicazione è sviluppato da SpiderLabs di Trustwave e rilasciato con licenza Apache 2.0. ModSecurity protegge i siti Web dagli hacker utilizzando una serie di regole di espressione regolare per filtrare gli exploit comunemente noti, consente il monitoraggio del traffico HTTP, la registrazione, l'analisi in tempo reale e il rilevamento degli attacchi. Sono disponibili più di 16.000 regole per rilevare attacchi come SQL Injection, Cross-site Scripting (XSS), inclusione di file locali, inclusione di file remoti e regole specifiche dell'applicazione per molte applicazioni Web come Wordpress, Joomla, Drupal ecc.

In questo tutorial, ti mostrerò come installare mod_security per il veloce server web Nginx. Configurarò ModSecurity come modulo autonomo e quindi compilerò Nginx dal sorgente per includere ModSecurity.

Prerequisiti

  • Un server Ubuntu 15.04, userò l'IP qui 192.168.1.106.
  • privilegi radice

Cosa faremo in questo tutorial:

  • Aggiorna il sistema e il repository di Ubuntu 15.04.
  • Installa le dipendenze richieste per creare Nginx e ModSecurity.
  • Scarica ModSecurity e Nginx.
  • Installa ModSecurity e Nginx.
  • Configura Nginx.
  • Configura ModSecurity.
  • Configura il set di regole di base OWASP (CRS).
  • Test.

Tutti i comandi seguenti devono essere eseguiti come root. Corri:

sudo -i

per diventare utente root sul tuo server.

1. Aggiorna sistema e repository

Prima di iniziare a installare tutte le dipendenze, aggiorna il tuo sistema:

apt-get update
apt-get upgrade

2. Installa le dipendenze di build

Installa tutti i pacchetti necessari per compilare Nginx e ModSecurity con il comando apt di seguito:

apt-get install git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-prefork-dev libxml2-dev libcurl4-openssl-dev

3. Scarica ModSecurity e Nginx

Vai alla directory "/usr/src/" , quindi clona il repository ModSecurity da  Github:

cd /usr/src/
git clone https://github.com/SpiderLabs/ModSecurity.git modsecurity

Scarica Nginx con il comando wget, userò la versione stabile di Nginx 1.8 qui. Se desideri utilizzare un'altra versione, vai alla pagina di download di Nginx per ottenere un elenco di tutte le versioni disponibili.

wget http://nginx.org/download/nginx-1.8.0.tar.gz

4. Installa ModSecurity e Nginx

Ora è il momento di installare ModSecurity, vai nella directory /usr/src/modsecurity:

cd /usr/src/modsecurity/

E compila ModSecurity come modulo autonomo sul tuo server, così possiamo includerlo in Nginx:

./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Ora vai alla directory nginx, compila Nginx e includi il modulo ModSecurity:

cd ../nginx-1.8.0
./configure \
  --user=www-data \
  --group=www-data \
  --with-debug \
  --with-ipv6 \
  --with-http_ssl_module \
  --add-module=/usr/src/modsecurity/nginx/modsecurity

Il comando di configurazione ha spiegato:

Nginx verrà eseguito sotto l'utente e il gruppo "www-data" e attiviamo il debug, ipv6 e ssl moduli. E infine includiamo il modulo ModSecurity in Nginx.

Ora installa Nginx:

make
make install

Al termine del comando make install, puoi vedere che Nginx è installato in "/usr/local/nginx" directory:

cd /usr/local/nginx/

ll
drwxr-xr-x  2 root root 4096 Oct  3 07:21 conf/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 html/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 logs/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 sbin/

5. Configura Nginx

Modifica il file di configurazione di nginx con vi/vim e configura nginx per l'esecuzione sotto l'utente "www-data" .

cd /usr/local/nginx/
vi conf/nginx.conf

Sulla prima riga, decommenta la riga "user" e cambia l'utente in www-data:

user  www-data;

Salva ed esci.

Crea un collegamento simbolico per il binario nginx in modo da poter usare il comando "nginx" direttamente.

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

Successivamente creeremo uno script systemd per Nginx che viene utilizzato per avviare/arrestare il demone Nginx. Vai alla directory "/lib/systemd/system/" e crea un nuovo file "nginx.service" con vi:

cd /lib/systemd/system/
vi nginx.service

Incolla lo script qui sotto:

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target

Salva ed esci.

Ora ricarica il demone systemd in modo che systemd carichi il nostro nuovo file di servizio Nginx.

systemctl daemon-reload

Testare la configurazione di nginx e avviare nginx con il comando systemctl:

nginx -t
systemctl start nginx

6. Configura ModSecurity

Copia il file di configurazione di ModSecurity nella directory nginx e chiamalo "modsecurity.conf" :

cp /usr/src/modsecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/modsecurity/unicode.mapping /usr/local/nginx/conf/

Apri il file modsecurity.conf con l'editor vi:

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Nella riga 7, cambia "Solo rilevamento" su "acceso" .

SecRuleEngine On

Nella riga 38, aumenta il valore di "SecRequestBodyLimit " a "100000000".

SecRequestBodyLimit 100000000

Nella riga 192, modificare il valore di "SecAuditLogType " a "Simultanei " e commenta la riga SecAuditLog e decommenta la riga 196.

SecAuditLogType Concurrent
#SecAuditLog /var/log/modsec_audit.log

# Specify the path for concurrent audit logging.
SecAuditLogStorageDir /opt/modsecurity/var/audit/

Salva ed esci.

Ora crea una nuova directory per il registro di controllo di ModSecurity e cambia il proprietario in www-data.

mkdir -p /opt/modsecurity/var/audit/
chown -R www-data:www-data /opt/modsecurity/var/audit/

7. Configura OWASP Core Rule Set (CRS)

Scarica il set di regole di base OWASP da github.

cd /usr/src/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Vai alla directory "owasp-modsecurity-crs " e copia la directory "base_rules" nella directory nginx.

cd owasp-modsecurity-crs
cp -R base_rules/ /usr/Local/nginx/conf/

Modifica modsecurity.conf e aggiungi OWASP CRS.

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Vai alla fine del file e aggiungi la seguente configurazione:

#DefaultAction
SecDefaultAction "log,deny,phase:1"

#If you want to load single rule /usr/loca/nginx/conf
#Include base_rules/modsecurity_crs_41_sql_injection_attacks.conf

#Load all Rule
Include base_rules/*.conf

#Disable rule by ID from error message (for my wordpress)
SecRuleRemoveById 981172 981173 960032 960034 960017 960010 950117 981004 960015

Salva ed esci.

Come ultimo passaggio, aggiungi il file modsecurity.conf alla configurazione di Nginx modificando "nginx.conf " file.

vi conf/nginx.conf

Aggiungi modsecurity.conf:

[.....]

#Enable ModSecurity ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; root html; index index.php index.html index.htm;

[.....]

Salva ed esci.

Riavvia Nginx per applicare le modifiche alla configurazione:

systemctl restart nginx

8. Test

Ho un sito WordPress in esecuzione su Nginx e ModSecurity, funziona correttamente. Per il test installerò un nuovo plug-in vulnerabile per XSS e SQL injection.

Ecco i risultati:

XSS vietato
https://www.exploit-db.com/exploits/37107/

Accesso al browser:

Registro del server:

Iniezione SQL vietata
https://www.exploit-db.com/exploits/37560/

Accesso al browser:

Registro del server:

Nginx e ModSecurity con successo.

Conclusione

ModSecurity è un WAF (Web Application Firewall) open source sviluppato da SpiderLabs di Trustwave per proteggere le tue applicazioni web. Sono disponibili più di 16.000 regole per rilevare attacchi come SQL Injection, XSS, LFI, RFI ecc. ModSecurity è facile da installare e disponibile come modulo per Apache, Nginx e IIS per Windows.

Riferimento

  • https://www.modsecurity.org/documentation.html
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
  • https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

Ubuntu
  1. Come installare WordPress con Nginx su Ubuntu 18.04

  2. Come installare phpMyAdmin con Nginx su Ubuntu 18.04

  3. Come installare MediaWiki con Nginx su Ubuntu 16.04

  4. Come distribuire Modsecurity con Nginx su Ubuntu 20.04 LTS

  5. Come installare PHP 7.4 con Nginx su Ubuntu 20.04

Come installare OSClass con Nginx su Ubuntu 20.04

Come installare WordPress 5.x con Nginx su Ubuntu 18.04 / Ubuntu 16.04

Come installare WordPress con Nginx su Ubuntu

Come installare Nextcloud 13 su Ubuntu 16.04 con Nginx

Come installare WonderCMS su Ubuntu 20.04 (con Nginx)

Come installare Nginx su Ubuntu 15.04