Com instal·lar ModSecurity per a Nginx a CentOS 7, Debian 8 i Ubuntu 16.04

ModSecurity és un mòdul de tallafoc d'aplicacions web (WAF) de codi obert que és ideal per protegir Apache, Nginx i IIS de diversos atacs cibernètics que s'orienten a vulnerabilitats potencials en diverses aplicacions web.

En aquest article, instal·larem i configurarem ModSecurity per a Nginx a CentOS 7, Debian 8 i Ubuntu 16.04.

Requisits previs

  • Una instal·lació actualitzada de CentOS 7, Debian 8 o Ubuntu 16.04 de 64 bits.
  • Inici de sessió com a root.

Pas 1: actualitzeu el sistema

Seguint aquesta guia , actualitzeu el nucli i els paquets del vostre servidor a la darrera versió disponible.

Pas 2: instal·leu dependències

Abans de poder compilar Nginx i ModSecurity amb èxit, cal que instal·leu diversos paquets de programari de la manera següent.

a) A CentOS 7:

yum groupinstall -y "Development Tools"
yum install -y httpd httpd-devel pcre pcre-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel
shutdown -r now

b) A Debian 8 o Ubuntu 16.04:

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

Pas 3: compileu ModSecurity

A causa de diverses inestabilitats reportades a la branca mestra de ModSecurity per a Nginx, de moment, es recomana oficialment utilitzar la darrera versió de la nginx_refactoringbranca sempre que sigui possible.

Baixeu la nginx_refactoringbranca de ModSecurity per a Nginx:

cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

Compilar ModSecurity:

a) A CentOS 7:

cd ModSecurity
sed -i '/AC_PROG_CC/a\AM_PROG_CC_C_O' configure.ac
sed -i '1 i\AUTOMAKE_OPTIONS = subdir-objects' Makefile.am
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Nota: les dues sedordres anteriors s'utilitzen per evitar missatges d'advertència quan s'utilitzen versions de fabricació automàtica més recents.

b) A Debian 8 o Ubuntu 16.04:

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

Pas 4: compila Nginx

Baixeu i desarxiveu la darrera versió estable de Nginx que es troba Nginx 1.10.3en el moment d'escriure:

cd /usr/src
wget https://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz && rm -f nginx-1.10.3.tar.gz

a) A CentOS 7:

Primer, heu de crear un usuari dedicat nginxi un grup dedicat nginxper a Nginx:

groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx

A continuació, compileu Nginx mentre activeu els mòduls ModSecurity i SSL:

cd nginx-1.10.3/
./configure --user=nginx --group=nginx --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Modifiqueu l'usuari predeterminat de Nginx:

sed -i "s/#user  nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf

b) A Debian 8 o Ubuntu 16.04:

En primer lloc, hauríeu d'utilitzar l'usuari existent www-datai el grup existent www-data.

A continuació, compileu Nginx mentre activeu els mòduls ModSecurity i SSL:

cd nginx-1.10.3/
./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Modifiqueu l'usuari predeterminat de Nginx:

sed -i "s/#user  nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

Un cop instal·lat Nginx correctament, els fitxers relacionats es trobaran a:

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

podeu provar la instal·lació amb:

/usr/local/nginx/sbin/nginx -t

Si no passa res, la sortida hauria de ser:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Per a la vostra comoditat, podeu configurar un fitxer d'unitat systemd per a Nginx:

cat <<EOF>> /lib/systemd/system/nginx.service
[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
EOF

Avançant, podeu iniciar/aturar/reiniciar Nginx de la següent manera:

systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service

Pas 4: configureu ModSecurity i Nginx

4.1 Configurar Nginx:

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

Cerqueu el segment següent dins del http {}segment:

location / {
    root   html;
    index  index.html index.htm;
}

Inseriu les línies següents al location / {}segment:

ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;

El resultat final hauria de ser:

location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsec_includes.conf;
    #proxy_pass http://localhost:8011;
    #proxy_read_timeout 180s;
    root   html;
    index  index.html index.htm;
}

Desa i surt:

:wq!

Nota: La configuració de Nginx anterior és només una configuració de mostra per utilitzar Nginx com a servidor web en lloc d'un servidor intermediari invers. Si utilitzeu Nginx com a servidor intermediari invers, elimineu el #caràcter de les dues últimes línies i feu-hi les modificacions adequades.

4.2 Creeu un fitxer anomenat /usr/local/nginx/conf/modsec_includes.conf:

cat <<EOF>> /usr/local/nginx/conf/modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
EOF

Nota: La configuració anterior aplicarà totes les regles bàsiques de ModSecurity d'OWASP al owasp-modsecurity-crs/rules/directori. Si només voleu aplicar regles selectives, hauríeu d'eliminar la include owasp-modsecurity-crs/rules/*.conflínia i, a continuació, especificar les regles exactes que necessiteu després del pas 4.5.

4.3 Importa fitxers de configuració de ModSecurity:

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

4.4 Modificar el /usr/local/nginx/conf/modsecurity.conffitxer:

sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf

4.5 Afegiu fitxers CRS (Core Rule Set) de ModSecurity OWASP:

cd /usr/local/nginx/conf
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
cd rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Pas 5: prova ModSecurity

Inicia Nginx:

systemctl start nginx.service

Obriu el port 80 per permetre l'accés exterior:

a) A CentOS 7:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

b) A Debian 8:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
touch /etc/iptables
iptables-save > /etc/iptables

c) A Ubuntu 16.04:

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Apunteu el vostre navegador web a:

http://203.0.113.1/?param="><script>alert(1);</script>

Utilitzeu-lo grepper obtenir missatges d'error de la següent manera:

grep error /usr/local/nginx/logs/error.log

La sortida hauria d'incloure diversos missatges d'error similars a:

2017/02/15 14:07:54 [error] 10776#0: [client 104.20.23.240] ModSecurity: Warning. detected XSS using libinjection. [file "/usr/local/nginx/conf/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "56"] [id "941100"] [rev "2"] [msg "XSS Attack Detected via libinjection"] [data "Matched Data:  found within ARGS:param: \x22><script>alert(1);</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/3.0.0"] [maturity "1"] [accuracy "9"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-xss"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A3"] [tag "OWASP_AppSensor/IE1"] [tag "CAPEC-242"] [hostname ""] [uri "/index.html"] [unique_id "ATAcAcAkucAchGAcPLAcAcAY"]

Això és. Com veieu, el mòdul ModSecurity ha registrat correctament aquest atac d'acord amb la seva política d'acció predeterminada. Si desitja realitzar més ajustos personalitzats, revisi amb cura i editar /usr/local/nginx/conf/modsecurity.confi /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.confarxius.

Deixa un comentari

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació