El servidor web Nginx se utiliza en más del 30% de los sitios web de todo el mundo y sigue creciendo.

Teniendo en cuenta el aumento de las amenazas web en línea, uno de los retos para el ingeniero web es conocer bien el endurecimiento y la seguridad de Nginx.

nginx-market-share

Nginx es bien conocido por su rendimiento y ligereza como servidor web/proxy y se utiliza en muchos de los sitios más concurridos.

  • Pinterest.com
  • Reddit.com
  • Wordpress.com
  • Stackoverflow.com
  • Mail.ru

Si aloja sus aplicaciones web en Nginx y le preocupa la seguridad, entonces una de las primeras cosas que le gustaría implementar es un cortafuegos de aplicaciones web (WAF).

Mod Security es un WAF de código abierto de Trustwave SpiderLabs y estuvo disponible para Nginx en 2012.

En esta guía le explicaré cómo descargar, instalar y configurar Mod Security con Nginx.

La siguiente demostración se realiza en CentOS alojado con DigitalOcean.

Si usted es nuevo en Nginx entonces yo recomendaría tomar este curso fundamental.

Descargar Nginx y ModSecurity

Puede descargar el nginx directamente en su servidor o en su PC local y luego transferirlo.

  • Descargue la última versión desde el siguiente enlace

http://nginx.org/en/download.html

  • Si la descarga se realiza directamente en el servidor, puede utilizar wget como se indica a continuación
wget http://nginx.org/download/nginx-1.9.15.tar.gz
  • Extráigalos utilizando el comando gunzip
gunzip -c nginx-1.9.15.tar.gz | tar xvf -
  • Verá la nueva carpeta creada
drwxr-xr-x 8 1001 1001 4096 Apr 19 12:02 nginx-1.9.15
  • Descargue la última versión de Mod Security desde el siguiente enlace

https://github.com/SpiderLabs/ModSecurity

  • Puede utilizar los siguientes comandos desde el servidor directamente
wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
gunzip -c modsecurity-2.9.1.tar.gz | tar xvf -

Vamos a instalarlos

Instalar Nginx con Mod Security

Es importante compilar Nginx y el código fuente de mod security.

  • Inicie sesión en un servidor y asegúrese de que tiene permisos de root.

Nota: si lo está haciendo en un servidor nuevo puede que necesite instalar las siguientes librerías.

yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel

Enprimer lugar, compilemos mod security. Vaya a la carpeta modsecurity-2.9.1 y utilice los siguientes comandos.

./configure --enable-standalone-module
make

A continuación, instale Nginx con mod security

./configure --add-module=../modsecurity-2.9.1/nginx/modsecurity
make
make install

Esto concluye que Nginx está instalado con Mod Security y es hora de configurarlo.

Configurar Mod Security con Nginx

Copie el archivo modsecurity.conf-recomendado & unicode.mapping de la carpeta extraída del código fuente de ModSecurity descargado arriba a la carpeta conf de nginx. También puede utilizar el comando find

find / -name modsecurity.conf-recomendado
find / -name unicode.mapping
[root@GeekFlare-Lab conf]# cp /opt/nginx/binary/modsecurity-2.9.1/modsecurity.conf-recommended /usr/local/nginx/conf/
[root@GeekFlare-Lab conf]# cp /opt/nginx/binary/modsecurity-2.9.1/ unicode.mapping /usr/local/nginx/conf/
[root@GeekFlare-Lab conf]#

Cambiemos el nombre de modsecurity .conf-recomendado a modsecurity.conf

mv modsecurity.conf-recomendado modsecurity.conf
  • Haga una copia de seguridad del archivo nginx.conf
  • Abra el archivo nginx.conf y añada lo siguiente bajo la directiva «location /
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;

Así que debería aparecer así

location / {
ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;
}

Ahora, Mod Security está integrado con Nginx. Reinicie el Nginx para asegurarse de que funciona sin ningún error.

Verifiquemos..

Hay dos métodos posibles para confirmar que Nginx está compilado con Mod Security.

Primero..

Listar el módulo compilado usando -V con el archivo ejecutable de nginx.

[root@GeekFlare-Lab sbin]# ./nginx -V
versión de nginx: nginx/1.9.15
construido por gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
argumentos configure: --add-module=../modsecurity-2.9.1/nginx/modsecurity
[root@GeekFlare-Lab sbin]#

Segundo..

Vaya a la carpeta logs y vea el archivo de error, debería ver lo siguiente

2016/05/21 21:54:51 [notice] 25352#0: ModSecurity para nginx (STABLE)/2.9.1 (http://www.modsecurity.org/) configurado.
2016/05/21 21:54:51 [aviso] 25352#0: ModSecurity: APR compiled version="1.3.9"; loaded version="1.3.9"
2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: PCRE compilado version="7.8 "; cargado version="7.8 2008-09-05"
2016/05/21 21:54:51 [notice] 25352#0: ModSecurity: LIBXML compilado version="2.7.6"

Esto concluye que ha configurado con éxito ModSecurity con Nginx.

Por defecto la configuración está sólo en modo detectar lo que significa que no ejecutará ninguna acción y protegerá sus aplicaciones web.

En mi próximo artículo, le explicaré cómo configurar el conjunto de reglas OWASP y activar Mod Security para protegerse de las vulnerabilidades de seguridad web.