Introducción
ModSecurity también conocido como Modsec es una robusta aplicación de firewall de código abierto para servidores web Apache. Software que protege una red o aplicación del acceso no autorizado mediante el filtrado de solicitudes.
Mod Security es uno de los módulos Apache líderes que proporciona detección y prevención de intrusiones para servidores web. Mod_security se utiliza para proteger el servidor web de varios tipos de ataques como XSS, bots, inyección de SQL, troyanos, secuestro de sesiones y mucho más.
En este artículo, veremos cómo instalar y configurar mod_security en el servidor Ubuntu 18.04 LTS y ejecutar algunas pruebas.
Si su intención es instalar ModSecurity en un servidor remoto, continúe leyendo; de lo contrario, si desea instalar ModSecurity en su computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará la contraseña para la autenticación.
Para conectarse al servidor como root, escriba este comando:
ssh root@IP_DEL_SERVER
A continuación, se le pedirá que ingrese la contraseña del usuario root.
Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie el primer parámetro:
ssh VOSTRO_UTENTE@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
Ahora está conectado a su servidor, está listo para comenzar la instalación de ModSecurity.
Instalar ModSecurity
Puede instalar ModSecurity para Apache usando el repositorio oficial de Ubuntu con apt.
Actualice la lista de paquetes:
sudo apt update
Instale Apache2 y algunos paquetes necesarios:
sudo apt-get install apache2 mysql-server php-mysql php libapache2-mod-php
Inicie Apache2:
sudo systemctl start apache2
Habilite Apache2 automáticamente al iniciar el sistema:
sudo systemctl enable apache2
Instalar Mod_Security
Para instalar Mod_Security da este comando desde la terminal:
sudo apt-get install libapache2-mod-security2
Verifique el estado de mod_security:
apachectl -M | grep security
Debería recibir un mensaje de salida similar al siguiente:
security2_module (shared)
Configurar Mod_Security
Copie y cambie el nombre del archivo de configuración predeterminado /etc/modsecurity/modsecurity.conf-recommended a /etc/modsecurity/modsecurity.conf para habilitar y configurar ModSecurity con el siguiente comando:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Abra el siguiente archivo:
nano /etc/modsecurity/modsecurity.conf
Busque y cambie la siguiente línea así:
SecRuleEngine On
Reinicie Apache2:
sudo systemctl restart apache2
Por defecto, mod_security viene con el conjunto básico de reglas (reglas de seguridad) ubicadas en el directorio /usr /share /modsecurity-crs. Pero se recomienda descargar el CRS mod_security del repositorio de GitHub.
Haga una copia de seguridad de las reglas predeterminadas:
sudo mv /usr/share/modsecurity-crs /usr/share/modsecurity-crs.bk
Descarga las nuevas reglas de Github:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
Mover carpeta:
cd /usr/share/modsecurity-crs
Cambie el nombre del archivo de muestra:
mv crs-setup.conf.example crs-setup.conf
Abra el siguiente archivo:
nano /etc/apache2/mods-enabled/security2.conf
Cámbielo de la siguiente manera:
<IfModule security2_module>
SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional "/usr/share/modsecurity-crs/*.conf
IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf
</IfModule>
Reinicie Apache2:
sudo systemctl restart apache2
Prueba Mod_Security
Ahora probaremos mod_security enviando algunas solicitudes maliciosas al servidor web Apache y comprobaremos si las solicitudes están bloqueadas o no.
Ingrese la URL debajo de un navegador. Recuerde reemplazar la dirección IP con la dirección IP pública de su servidor o nombre de dominio:
http://TUO_IP_O_DOMINIO/?q="><script>alert(1)</script>
O desde la terminal:
curl 'http://TUO_IP_O_DOMINIO/?q="><script>alert(1)</script>'
Debería recibir un mensaje de salida similar al siguiente:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /on this server.<br />
</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at TUO_IP Port 80</address>
</body></html>
Pruebe también el siguiente comando:
http://TUO_IP_O_DOMINIO/index.html?exec=/bin/bash
O desde la terminal:
curl 'http://TUO_IP_O_DOMINIO/index.html?exec=/bin/bash'
Debería recibir un mensaje de salida similar al siguiente:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /on this server.<br />
</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at TUO_IP Port 80</address>
</body></html>
La instalación y configuración de Mod Security en Ubuntu 18.04 LTS ha finalizado.