ModSecurity, también conocido como Modsec, es un firewall de aplicaciones web gratuito y de código abierto para el servidor web Apache. ModSecurity es un módulo de Apache que lo ayuda a proteger su servidor web de diferentes tipos de ataques, incluidos SQL injection, XSS, troyanos, bots, captura/secuestro de sesión y muchos más. ModSecurity proporciona poderosos conjuntos de reglas con monitoreo web en tiempo real, registro y control de acceso.
En este tutorial, le mostraremos cómo instalar y configurar Mod Security con Apache en Ubuntu 18.04.
Requisitos
- Un Ubuntu 18.04 VPS nuevo en Atlantic.Net Cloud Platform.
- Una dirección IP estática configurada en su servidor.
Paso 1:crear un servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 18.04 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor Ubuntu 18.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
apt-get update -y
Paso 2:instalar la pila LAMP
Primero, deberá instalar LAMP Stack en su servidor. Puede instalarlo ejecutando el siguiente comando:
apt-get install apache2 mariadb-server php7.2-mysql php7.2 libapache2-mod-php7.2 unzip git -y
Después de instalar LAMP, inicie el servicio Apache y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:
systemctl start apache2 systemctl enable apache2
En este punto, el servidor web Apache está instalado y ejecutándose en su servidor.
Paso 3:instalar ModSecurity
apt-get install libapache2-mod-security2 -y
Una vez completada la instalación, reinicie el servicio Apache para aplicar los cambios.
systemctl restart apache2
A continuación, también puede comprobar si el módulo se ha cargado o no ejecutando el siguiente comando:
apachectl -M | grep security
Deberías obtener el siguiente resultado:
security2_module (shared)
Paso 4:configurar ModSecurity
No hay reglas de seguridad configuradas de forma predeterminada, por lo que primero deberá habilitarlas. Para hacerlo, cambie el nombre del archivo de configuración predeterminado de ModSecurity /etc/modsecurity/modsecurity.conf-recommended a /etc/modsecurity/modsecurity.conf.
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
A continuación, edite el archivo con su editor de texto preferido:
nano /etc/modsecurity/modsecurity.conf
Busque la siguiente línea:
SecRuleEngine DetectionOnly
Reemplácelo con lo siguiente:
SecRuleEngine On
Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio Apache para que los cambios surtan efecto.
systemctl restart apache2
Paso 5:descargue y configure la regla principal de ModSecurity
El conjunto de reglas predeterminado de ModSecurity está disponible en el directorio /usr/share/modsecurity-crs, pero se recomienda descargar un nuevo conjunto de reglas desde GitHub.
Primero, elimine las reglas antiguas con el siguiente comando:
rm -rf /usr/share/modsecurity-crs
A continuación, descargue el último conjunto de reglas con el siguiente comando:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/share/modsecurity-crs
A continuación, deberá habilitar este conjunto de reglas en la configuración de Apache. Puede habilitarlo editando el archivo /etc/apache2/mods-enabled/security2.conf:
nano /etc/apache2/mods-enabled/security2.conf
Agregue las siguientes líneas arriba de la línea “”
IncludeOptional "/usr/share/modsecurity-crs/*.conf IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf
Guarde y cierre el archivo. Luego, reinicie el servicio de Apache y habilite el módulo de encabezado de Apache para implementar los cambios.
a2enmod headers systemctl restart apache2
En este punto, ModSecurity está configurado para funcionar con el servidor web Apache.
Paso 6:probar ModSecurity
Después de configurar ModSecurity, puede intentar ejecutar scripts maliciosos en un navegador web y verificar si se activarán las reglas de ModSecurity.
Abra su navegador web y escriba la URL http://your-server-ip/index.html?exec=/bin/bash . Debería recibir un mensaje de error prohibido en la siguiente página:
Para probar las reglas de ModSecurity para protegerse contra un ataque XSS simulado, acceda a la URL http://your-server-ip/?q=”> desde su navegador web. Debería ver la siguiente pantalla:
Para probar las reglas de ModSecurity con los análisis de Nessus, use un comando curl con los escáneres de Nessus para enviar solicitudes HTTP al servidor Apache como se muestra a continuación:
curl -i http://your-server-ip -A Nessus
Debería obtener una respuesta 403 Prohibido porque ModSecurity ha identificado el agente de usuario como un análisis de Nessus:
HTTP/1.1 403 Forbidden Date: Sat, 21 Dec 2019 04:17:24 GMT Server: Apache/2.4.29 (Ubuntu) Content-Length: 278 Content-Type: text/html; charset=iso-8859-1
Paso 7:excluir un dominio específico de ModSecurity
En algunos casos, debe excluir un dominio específico de la protección de ModSecurity. Para deshabilitar ModSecurity para un dominio específico, abra el archivo de configuración de host virtual de Apache para un dominio específico:
nano /etc/apache2/site-enabled/your-domain.conf
Agregue las siguientes líneas dentro del bloque
<IfModule security2_module> SecRuleEngine Off </IfModule>
Guarde y cierre el archivo. Luego, reinicie el servicio Apache para aplicar los cambios.
systemctl restart apache2
Conclusión
Hemos revisado cómo instalar y configurar ModSecurity para proteger su servidor web Apache de ataques maliciosos. Para obtener más información, visite la documentación de ModSecurity en ModSecurity.