Cómo habilitar el firewall de aplicación en DirectAdmin (ModSecurity)
¿Qué es ModSecurity y por qué tu sitio lo necesita?
Si tienes un sitio web, es muy probable que hayas escuchado hablar de firewalls, pero quizás no sepas exactamente qué hacen. Un firewall de aplicación web (WAF, por sus siglas en inglés) actúa como un portero de discoteca muy estricto: analiza cada petición que llega a tu servidor y decide si entra o no.
ModSecurity es un motor de firewall de aplicación web de código abierto que se integra perfectamente con servidores como Apache, Nginx o LiteSpeed. En el contexto de DirectAdmin, es tu mejor aliado para bloquear ataques comunes como inyecciones SQL, cross-site scripting (XSS) o intentos de fuerza bruta.
Activar ModSecurity DirectAdmin no es solo una recomendación, es una necesidad. Sin él, tu sitio está expuesto a miles de intentos de intrusión diarios, especialmente si usas WordPress, Joomla o cualquier CMS popular.
En este artículo, te voy a guiar paso a paso para que habilites el firewall de aplicación en DirectAdmin (ModSecurity). No necesitas ser un experto en servidores, solo seguir las instrucciones al pie de la letra. Al final, tendrás tu servidor blindado y dormirás mucho más tranquilo.
Requisitos previos antes de empezar
Antes de lanzarnos a configurar nada, debemos asegurarnos de que tu servidor cumple con los mínimos necesarios. No queremos que a mitad del proceso te encuentres con un error inesperado.
Acceso al panel de control
Necesitas tener acceso administrativo a DirectAdmin. Esto significa que debes poder iniciar sesión como administrador principal o, al menos, tener privilegios de reseller con permisos para gestionar la configuración del servidor.
Privilegios de root o sudo
La instalación de ModSecurity requiere modificar archivos de configuración del sistema. Por lo tanto, necesitarás acceso SSH al servidor con usuario root o un usuario con permisos sudo. Si no tienes esto, contacta con tu proveedor de hosting para que te lo facilite.
Sistema operativo compatible
ModSecurity funciona en la mayoría de distribuciones Linux. En este tutorial asumiremos que usas CentOS, AlmaLinux, Rocky Linux o Ubuntu/Debian. Los comandos pueden variar ligeramente entre ellas, pero te iré indicando las diferencias.
Tener claro qué es un "false positive"
Un falso positivo ocurre cuando el firewall bloquea una petición legítima. Por ejemplo, si tienes un formulario que envía datos con caracteres especiales, ModSecurity podría pensar que es un ataque. Es importante saber que esto puede pasar y cómo solucionarlo. Lo veremos más adelante.
[INFO] Si tu hosting es gestionado (como los que ofrecen muchas empresas), es posible que ya tengan ModSecurity activado por defecto. Aun así, este tutorial te servirá para verificarlo y ajustar las reglas.
Paso 1: Acceder al servidor por SSH
El primer paso es conectarte a tu servidor por SSH. Esto nos permitirá ejecutar los comandos necesarios.
En Windows: usar PuTTY
Si estás en Windows, necesitarás un cliente SSH como PuTTY. Descárgalo, instálalo y abre el programa. En el campo "Host Name" escribe la IP de tu servidor o el dominio principal, y en "Port" deja el 22. Haz clic en "Open" y te pedirá usuario y contraseña. Introduce root y tu contraseña de root.
En macOS o Linux: terminal nativa
En estos sistemas, abre la terminal y escribe:
ssh root@tu-ip-del-servidor
Te pedirá la contraseña y listo, ya estás dentro.
[TIP] Si usas claves SSH en lugar de contraseñas, el proceso es el mismo pero no te pedirá contraseña, solo la frase de paso de tu clave privada.
Paso 2: Instalar ModSecurity en el servidor
Ahora que tenemos acceso SSH, vamos a instalar el motor de ModSecurity. Dependiendo de tu sistema operativo, los comandos serán diferentes.
En CentOS, AlmaLinux o Rocky Linux
Estas distribuciones usan el gestor de paquetes yum o dnf. Ejecuta los siguientes comandos:
yum install epel-release
yum install mod_security
Si el sistema te pide confirmación, escribe y y pulsa Enter.
En Ubuntu o Debian
Para estas distribuciones, usamos apt. Primero actualizamos los repositorios:
apt update
Luego instalamos el módulo:
apt install libapache2-mod-security2
Verificar la instalación
Una vez instalado, podemos verificar que el módulo está cargado. Para Apache, ejecuta:
httpd -M | grep security
O si usas Apache2 en Ubuntu:
apache2ctl -M | grep security
Deberías ver algo como security2_module (shared). Eso significa que el módulo está activo.
[WARNING] Si no ves el módulo, es posible que necesites reiniciar Apache. Pero no lo hagas todavía, primero configuraremos las reglas básicas.
Paso 3: Configurar las reglas de ModSecurity (OWASP CRS)
ModSecurity sin reglas es como un guardia de seguridad sin instrucciones. No sabe qué bloquear. Por eso necesitamos instalar un conjunto de reglas. El más famoso y completo es el OWASP Core Rule Set (CRS).
Descargar e instalar el OWASP CRS
Primero, creamos un directorio para las reglas:
mkdir -p /etc/modsecurity/crs
Luego descargamos el CRS desde GitHub. La versión estable actual es la 3.x. Ejecuta:
cd /etc/modsecurity/crs
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz
tar -xzf v3.3.5.tar.gz
mv coreruleset-3.3.5/* .
Ahora necesitamos copiar el archivo de configuración de ejemplo:
cp /etc/modsecurity/crs/crs-setup.conf.example /etc/modsecurity/crs/crs-setup.conf
Configurar DirectAdmin para usar las reglas
DirectAdmin tiene su propia configuración de Apache. Necesitamos editar el archivo de configuración de ModSecurity para que cargue nuestras reglas.
Abre el archivo de configuración principal:
nano /etc/httpd/conf.d/mod_security.conf
O en Ubuntu:
nano /etc/apache2/mods-enabled/security2.conf
Dentro del archivo, busca la sección donde se cargan las reglas. Deberías ver algo como:
<IfModule security2_module>
SecRuleEngine On
Include /etc/modsecurity/crs/crs-setup.conf
</IfModule>
Si no existe, añádelo. Luego, añade la línea para incluir las reglas de OWASP:
Include /etc/modsecurity/crs/rules/*.conf
Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir).
[INFO] En algunos sistemas, el archivo de configuración de ModSecurity se llama
modsecurity.confy está en/etc/modsecurity/. Si es tu caso, edita ese archivo.
Reiniciar Apache para aplicar los cambios
Ahora sí, podemos reiniciar Apache para que cargue todo correctamente.
En CentOS/AlmaLinux/Rocky:
systemctl restart httpd
En Ubuntu/Debian:
systemctl restart apache2
Paso 4: Habilitar ModSecurity desde DirectAdmin
Aunque hayamos instalado y configurado ModSecurity en el servidor, DirectAdmin tiene su propia interfaz para gestionar el firewall de aplicación a nivel de dominio o de usuario.
Acceder a la interfaz de DirectAdmin
Inicia sesión en tu panel de DirectAdmin como administrador o reseller. Busca la sección de CustomBuild o Configuración del servidor.
Usar CustomBuild para gestionar ModSecurity
DirectAdmin utiliza CustomBuild para compilar y gestionar el software del servidor. Para asegurarnos de que ModSecurity está habilitado en la configuración, ejecuta en SSH:
cd /usr/local/directadmin/custombuild
./build set modsecurity yes
./build modsecurity
Este comando compilará e instalará ModSecurity con la configuración que hemos definido.
Verificar el estado en el panel
Una vez compilado, vuelve a la interfaz de DirectAdmin. En el menú principal, deberías ver una opción llamada "ModSecurity" o "Firewall de Aplicación". Si no la ves, es posible que necesites habilitarla en la configuración de CustomBuild.
Ve a CustomBuild → Options y busca la variable modsecurity. Asegúrate de que está en yes. Luego, en Build → modsecurity, haz clic en Recompile.
[WARNING] Si no tienes experiencia compilando software, es mejor que uses los comandos SSH que te he dado. La compilación puede tardar unos minutos y es normal que la terminal se quede "congelada" mientras trabaja.
Paso 5: Configurar las reglas por dominio (opcional pero recomendado)
Una de las grandes ventajas de ModSecurity DirectAdmin es que puedes activar o desactivar el firewall por dominio. Esto es muy útil si tienes un sitio con formularios complejos que generan falsos positivos.
Desde el panel de administración
En DirectAdmin, navega a Admin Level → ModSecurity. Aquí verás una lista de todos los dominios alojados en el servidor. Podrás activar o desactivar ModSecurity para cada uno con un simple clic.
Desde el nivel de usuario
Si eres un usuario normal (no administrador), también puedes gestionar esto desde tu panel. Ve a Account Manager → ModSecurity. Verás tus dominios y podrás activar o desactivar el firewall según tus necesidades.
Configurar reglas personalizadas
Si necesitas excluir ciertas reglas para un dominio específico, puedes crear un archivo de configuración personalizado. Por ejemplo, para desactivar una regla que causa problemas, crea un archivo en /etc/modsecurity/crs/rules/ llamado exclusion.conf y añade:
SecRuleRemoveById 942100
Esto eliminará la regla 942100 (que detecta inyecciones SQL) para todos los dominios. Para hacerlo solo en un dominio, usa:
<LocationMatch "/dominio.com/*">
SecRuleRemoveById 942100
</LocationMatch>
Paso 6: Probar que el firewall funciona
No podemos dar por terminado el trabajo sin probar que todo funciona. Vamos a hacer una prueba básica de ataque.
Prueba de inyección SQL
Abre tu navegador y visita tu dominio con una URL de prueba:
https://tu-dominio.com/?id=1' OR '1'='1
Si ModSecurity está funcionando, deberías ver un error 403 Forbidden o una página de bloqueo personalizada. Eso significa que el firewall ha detectado el intento de inyección SQL y lo ha bloqueado.
Prueba de XSS
Otra prueba común es añadir un script en la URL:
https://tu-dominio.com/?busqueda=<script>alert('XSS')</script>
De nuevo, debería mostrarse un error 403.
Revisar los logs
Para ver los detalles de los bloqueos, revisa el log de ModSecurity:
tail -f /var/log/modsec_audit.log
O en algunos sistemas:
tail -f /var/log/httpd/modsec_audit.log
Verás la petición bloqueada, la regla que la ha detenido y el motivo.
[TIP] Si la prueba no funciona, es posible que el motor no esté activo. Revisa que en el archivo
mod_security.conftengas la líneaSecRuleEngine On. Si está enDetectionOnly, solo registrará los ataques pero no los bloqueará.
Paso 7: Solucionar falsos positivos (el dolor de cabeza más común)
Como te mencioné antes, los falsos positivos son la pesadilla de cualquier administrador. Un formulario que envía datos con acentos o caracteres especiales puede ser bloqueado por error.
Identificar el problema
Cuando un usuario te diga que no puede enviar un formulario o que ve un error 403, revisa el log de auditoría. Busca la regla que ha disparado el bloqueo. En el log verás algo como:
Rule 942100 triggered at REQUEST_BASENAME
Desactivar la regla específica
Una vez identificada la regla, puedes desactivarla para el dominio afectado. Usa el método que te mostré antes con el archivo de exclusión.
Usar el modo DetectionOnly temporalmente
Si hay muchos falsos positivos, puedes poner ModSecurity en modo solo detección mientras ajustas las reglas. Esto te permitirá ver qué está bloqueando sin afectar a los usuarios.
Edita el archivo de configuración:
SecRuleEngine DetectionOnly
Reinicia Apache y deja que pase un día. Revisa los logs y ajusta las reglas. Cuando estés seguro, vuelve a poner SecRuleEngine On.
[WARNING] No dejes el servidor en modo DetectionOnly permanentemente. Es como tener una alarma que suena pero no llama a la policía. Estás registrando ataques pero no los estás frenando.
Preguntas frecuentes (FAQ)
¿ModSecurity ralentiza mi sitio web?
Sí, puede añadir una pequeña latencia, pero normalmente es imperceptible. El análisis de cada petición consume recursos. Si tienes un servidor muy justo de memoria o CPU, nota una diferencia. Puedes optimizarlo usando caché o ajustando las reglas.
¿Puedo usar ModSecurity con LiteSpeed o Nginx?
Sí, DirectAdmin soporta estos servidores web. La instalación es similar, pero los archivos de configuración cambian. En LiteSpeed, por ejemplo, se usa lsapi y la configuración está en /usr/local/lsws/conf/modsec.conf.
¿Qué hago si mi sitio usa Syspanel (HestiaCP)?
Si en lugar de DirectAdmin usas Syspanel (anteriormente conocido como HestiaCP), el proceso es diferente. En Syspanel, el acceso al panel se realiza a través del puerto 2106. ModSecurity también se puede instalar, pero la gestión se hace desde la línea de comandos, no desde el panel. Te recomiendo buscar tutoriales específicos para Syspanel, ya que la estructura de directorios es distinta.
¿Necesito el OWASP CRS o puedo usar reglas básicas?
El OWASP CRS es el estándar de oro. Incluye cientos de reglas probadas y actualizadas. Las reglas básicas de ModSecurity son insuficientes para una protección real. Te recomiendo encarecidamente que instales el CRS.
¿Puedo escribir mis propias reglas?
Sí, si tienes conocimientos de programación, puedes crear reglas personalizadas. Pero para la mayoría de usuarios, usar el CRS y ajustar las exclusiones es suficiente.
Conclusión y recomendaciones finales
Habilitar el firewall de aplicación en DirectAdmin (ModSecurity) es una de las mejores decisiones que puedes tomar para proteger tu servidor. No solo bloquea ataques automatizados, sino que te da una capa extra de seguridad que un plugin de WordPress o un script de seguridad no pueden ofrecer.
Resumen de pasos
- Accede por SSH al servidor.
- Instala ModSecurity con el gestor de paquetes de tu sistema.
- Descarga e instala el OWASP Core Rule Set.
- Configura Apache para cargar las reglas.
- Reinicia Apache.
- Usa CustomBuild de DirectAdmin para habilitar ModSecurity a nivel de panel.
- Configura las reglas por dominio si lo necesitas.
- Prueba que el firewall bloquea ataques.
- Ajusta los falsos positivos.
Buenas prácticas
- Mantén las reglas actualizadas: El OWASP CRS se actualiza frecuentemente. Revisa cada mes si hay nuevas versiones.
- Monitorea los logs: Dedica unos minutos a la semana a revisar los logs de ModSecurity. Verás qué tipo de ataques recibe tu servidor.
- Haz copias de seguridad: Antes de hacer cambios importantes, asegúrate de tener una copia de seguridad del servidor.
[INFO] Recuerda que la seguridad es un proceso, no un destino. ModSecurity es una herramienta excelente, pero no te exime de mantener tu software actualizado, usar contraseñas fuertes y hacer copias de seguridad periódicas.
Si has seguido todos los pasos, tu servidor ahora
