Nginx: script para compilar mod_security

By | May 20, 2021

Si utilizas mod_security con Apache y has instalado ambos desde paquetes de sistema, no tendrás problema cada vez que actualices. Ambos subirán de versión y tendrás mod_security recompilado en el paquete para la versión de Apache correspondiente.

En caso de tener Nginx, no hay paquete mod_security de momento y he acabado tan sumamente harto de tener que recompilar el módulo cada vez que actualizo, que me he hecho un sencillo script para recompilarlo. No tiene misterio alguno, simplemente son las instrucciones oficiales de la página oficial.

#!/bin/bash
#
# Author        :Julio Sanz
# Website       :www.elarraydejota.com
# Email         :juliojosesb@gmail.com
# Description   :Compile mod_security for Nginx
# License       :GPLv3
#

#
# VARS
#

nginx_version=$(nginx -v 2>&1 | cut -d "/" -f2)


#
# MAIN
#

# Remove old versions
rm -rf ModSecurity*
rm -rf nginx*

# Compile mod_security
echo "---COMPILING MOD_SECURITY---"
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make
make install
cd ..

# Compile mod_security Nginx connector
echo "---COMPILING NGINX CONNECTOR---"
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git

wget http://nginx.org/download/nginx-${nginx_version}.tar.gz
tar zxvf nginx-${nginx_version}.tar.gz

cd nginx-${nginx_version}
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules
cd ..
cp ModSecurity/unicode.mapping /etc/nginx/modsec

# Restart Nginx
systemctl restart nginx
systemctl status nginx

Copy&Paste y ejecutar para perder poco tiempo. Al menos así hasta que salga el paquete con el módulo para Nginx.