Configurar cortafuegos (firewall) en DirectAdmin desde cero
¿Qué es un firewall y por qué necesitas uno en tu servidor?
Imagina que tu servidor es una casa. El firewall es la puerta principal con cerradura, rejas en las ventanas y, si quieres, un portero electrónico que decide quién entra y quién no. Sin él, cualquier persona podría intentar entrar a través de cualquier puerto (ventana) que esté abierto. Configurar un cortafuegos en DirectAdmin no es un lujo, es una necesidad básica para cualquier persona que gestione un sitio web, por muy pequeño que sea.
Un firewall actúa como un filtro de tráfico. Analiza cada paquete de datos que intenta llegar a tu servidor y, según las reglas que tú definas, lo deja pasar o lo bloquea. Esto es crucial porque, por defecto, un servidor recién instalado tiene muchos puertos abiertos y servicios activos que pueden ser vulnerables. Al aprender a configurar cortafuegos correctamente, reduces drásticamente la superficie de ataque, proteges la información de tus clientes y mejoras el rendimiento general de tu máquina al bloquear tráfico no deseado.
En este artículo, te guiaré paso a paso, desde cero, para que puedas implementar un firewall robusto en tu panel DirectAdmin. No necesitas ser un hacker ni un experto en redes; solo seguir las instrucciones con calma y entender qué hace cada paso. Vamos a ello.
Primeros pasos: Acceso al servidor y herramientas disponibles
Antes de tocar nada, necesitas tener acceso a tu servidor. DirectAdmin es un panel de control muy popular, pero la configuración del firewall a nivel de sistema operativo (Linux) se hace normalmente a través de la terminal (SSH). No te asustes, es más sencillo de lo que parece.
Conectarse por SSH
Para empezar, abre tu programa de terminal favorito (PuTTY en Windows, o la terminal nativa en Mac/Linux) y conéctate a la IP de tu servidor con el usuario root o un usuario con privilegios sudo.
ssh root@IP_DE_TU_SERVIDOR
Una vez dentro, verás una línea de comandos. Aquí es donde trabajaremos. Es importante que sepas qué sistema operativo tienes, porque los comandos varían ligeramente entre CentOS, AlmaLinux, Ubuntu, etc. Puedes verificarlo con:
cat /etc/os-release
Opciones de firewall: UFW vs Firewalld vs APF
Existen varias herramientas para gestionar el firewall. DirectAdmin históricamente es compatible con APF (Advanced Policy Firewall) y, en versiones más modernas, con CSF (ConfigServer Security & Firewall), que es la más recomendada. Sin embargo, también puedes usar las nativas del sistema como UFW (Ubuntu) o Firewalld (CentOS/RHEL).
Para este tutorial, nos centraremos en CSF, ya que es la integración más completa y popular para seguridad servidor con DirectAdmin. No solo es un firewall, sino que incluye detección de intrusos (Login Failure Daemon), protección contra ataques de fuerza bruta y más. Si no lo tienes instalado, te enseñaré cómo hacerlo.
Instalación de CSF (ConfigServer Security & Firewall)
CSF es una solución de pago (licencia muy económica) pero tiene una versión gratuita que funciona perfectamente. La instalación es un proceso muy directo.
Paso 1: Descargar e instalar
Primero, descargamos el paquete de instalación oficial:
cd /usr/src
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
Este proceso copiará los archivos necesarios a /etc/csf y creará los scripts de inicio. Al finalizar, verás un mensaje de confirmación.
Paso 2: Verificar que los módulos del kernel están listos
CSF necesita ciertos módulos de iptables. Podemos comprobarlo con:
perl /usr/local/csf/bin/csftest.pl
Si todo está en verde, perfecto. Si hay algún error, es posible que necesites actualizar el kernel o instalar algunos paquetes, pero en la mayoría de los casos con un servidor actualizado no habrá problemas.
Paso 3: Activar el firewall
Por defecto, CSF se instala en modo test (pruebas) para no dejarte sin conexión. Vamos a activarlo de forma segura. Editamos el archivo de configuración principal:
nano /etc/csf/csf.conf
Busca la línea que dice TESTING = "1" y cámbiala a TESTING = "0". Guarda y cierra el archivo (Ctrl+O, Enter, Ctrl+X). Ahora, aplicamos los cambios y arrancamos el servicio:
csf -r
Este comando reinicia el firewall y aplica las reglas por defecto. Verás una salida larga con muchas líneas. No te preocupes, es normal. Ahora mismo, tu servidor ya está protegido con una configuración básica.
Configuración básica de reglas: Puertos y direcciones IP
Ahora que CSF está activo, es hora de personalizarlo. El archivo principal de configuración es /etc/csf/csf.conf. Vamos a entender las secciones más importantes.
Abrir y cerrar puertos (TCP_IN, TCP_OUT, UDP_IN, UDP_OUT)
Los puertos son como las puertas de acceso a los servicios. Abrimos los que necesitamos y cerramos el resto. Dentro del archivo csf.conf, busca estas líneas:
TCP_IN: Puertos de entrada (los que usan los visitantes para acceder a tu web).TCP_OUT: Puertos de salida (los que usa tu servidor para conectarse al exterior, por ejemplo, para actualizaciones).UDP_INyUDP_OUT: Lo mismo pero para el protocolo UDP (más rápido pero menos fiable).
Una configuración típica para un servidor web con DirectAdmin sería:
# Puertos de entrada TCP
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2222"
# Puertos de salida TCP
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,2222"
# Puertos de entrada UDP
UDP_IN = "20,21,53,123"
# Puertos de salida UDP
UDP_OUT = "20,21,53,113,123"
Desglosemos estos números:
- 22: SSH (acceso remoto).
- 80 y 443: HTTP y HTTPS (tu web).
- 25 y 587: SMTP (envío de correo).
- 110 y 995: POP3 y POP3S (recepción de correo).
- 143 y 993: IMAP e IMAPS (recepción de correo).
- 53: DNS.
- 2222: Este es el puerto de acceso al panel de DirectAdmin.
[WARNING] ¡CUIDADO! Si estás usando el puerto 21 (FTP) para subir archivos, es muy recomendable cambiarlo a otro puerto no estándar o usar SFTP (que usa el 22). El FTP es inseguro porque las contraseñas viajan sin cifrar. Si no usas FTP, elimina el 21 de la lista.
Reglas específicas para IPs
A veces quieres permitir el acceso a un puerto solo desde una IP concreta (por ejemplo, tu IP de casa para acceder al panel de administración). Para esto, usamos las listas de IPs permitidas o bloqueadas.
- Conexiones entrantes permitidas: Edita el archivo
/etc/csf/csf.allow. - Conexiones entrantes bloqueadas: Edita el archivo
/etc/csf/csf.deny.
Simplemente añade una IP por línea. Por ejemplo, en csf.allow:
# Permite acceso total desde mi IP de casa
123.123.123.123
Y en csf.deny:
# Bloquea a un usuario malicioso
456.456.456.456
Después de editar, guarda y aplica con csf -r para que los cambios surtan efecto.
Protección avanzada: Detección de fuerza bruta y ataques comunes
CSF no es solo un firewall estático; es una herramienta dinámica que puede aprender y bloquear ataques en tiempo real. Esto es vital para la seguridad servidor.
Configurar el demonio de fallos de inicio de sesión
CSF incluye un servicio llamado lfd (Login Failure Daemon) que monitoriza los logs del sistema en busca de intentos fallidos de conexión. Si alguien intenta adivinar tu contraseña SSH o la de tu correo muchas veces, lfd lo detectará y bloqueará automáticamente la IP de origen.
En el archivo csf.conf, busca estas directivas:
LF_SSH = "5": Bloquea una IP después de 5 intentos fallidos de SSH.LF_FTP = "5": Lo mismo para FTP.LF_MAIL = "5": Para correo.LF_TRIGGER = "5": Número de fallos en total que desencadena un bloqueo.
Puedes ajustar estos números según tu tolerancia. Si te conectas muchas veces y te equivocas, podrías bloquearte a ti mismo. Te recomiendo empezar con valores un poco altos (por ejemplo, 10) y bajarlos con el tiempo.
Protección contra ataques de tipo SYN Flood y Ping of Death
CSF tiene protecciones integradas contra ataques de denegación de servicio (DoS) y de fuerza bruta. Busca en csf.conf las siguientes secciones y actívalas:
# Protección contra SYN Flood
SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"
# Protección contra ping de la muerte
PACKET_FILTER = "1"
# Limitar conexiones simultáneas por IP
CONNLIMIT = "22;20,80;50,443;50"
La línea CONNLIMIT es muy útil. El formato es puerto;número_máximo_de_conexiones. En el ejemplo, limitamos a 20 conexiones simultáneas en el puerto 22 (SSH) y 50 en los puertos 80 y 443 (web). Esto evita que un solo visitante acapare todos los recursos de tu servidor.
[TIP] CONSEJO: No pongas límites demasiado bajos en los puertos web (80 y 443), o podrías bloquear a usuarios legítimos que navegan desde detrás de un proxy o una red corporativa (todos comparten la misma IP pública).
Gestión del firewall desde DirectAdmin
Aunque la configuración fina se hace por SSH, DirectAdmin tiene una integración visual con CSF. Esto es perfecto si no te sientes cómodo con la línea de comandos.
Acceder a la interfaz de CSF en DirectAdmin
Inicia sesión en tu panel de DirectAdmin (normalmente en https://IP_DE_TU_SERVIDOR:2222). Busca en el menú lateral una sección llamada "Plugins" o "Sistema". Ahí deberías ver un icono llamado "ConfigServer Security&Firewall".
Al hacer clic, se abrirá una interfaz web (aunque se ve un poco técnica) que te permite:
- Quick Configuration: Acceso rápido a los puertos más comunes.
- Firewall Allow/Deny: Ver y gestionar las listas de IPs permitidas y bloqueadas.
- Status: Ver el estado actual del firewall y los puertos abiertos.
- Logs: Ver los registros de actividad y los bloqueos recientes.
Esta interfaz es un espejo de los archivos de configuración, pero te evita tener que recordar comandos. Es ideal para hacer cambios rápidos y ver resultados visuales.
Añadir una IP a la lista negra desde el panel
Imagina que ves en tus estadísticas una IP que está intentando acceder a wp-login.php de tu WordPress miles de veces. Con DirectAdmin puedes bloquearla en segundos:
- Ve a ConfigServer Security&Firewall.
- Haz clic en Firewall Deny.
- En el campo, escribe la IP y haz clic en Add.
Verás que la IP aparece en la lista y es bloqueada al instante. Ya no volverá a molestar.
Reglas de seguridad adicionales y buenas prácticas
Configurar el firewall es un gran paso, pero no es el único. Un servidor seguro requiere de una estrategia de capas.
Cambiar el puerto SSH por defecto
Aunque el firewall protege el puerto 22, si lo cambias a un número aleatorio (por ejemplo, 45678), los bots que escanean la web en busca de SSH abiertos ya no lo encontrarán. Esto reduce exponencialmente los intentos de ataque.
Para hacerlo, edita el archivo /etc/ssh/sshd_config y cambia la línea #Port 22 por Port 45678. Luego, reinicia el servicio SSH:
systemctl restart sshd
[WARNING] ¡MUY IMPORTANTE! Antes de cerrar la sesión, abre una nueva en otra terminal con el nuevo puerto para asegurarte de que funciona. Si no, te quedarás fuera de tu servidor para siempre.
Mantener el sistema actualizado
Un firewall no sirve de nada si el software que protege tiene vulnerabilidades conocidas. Asegúrate de actualizar tu sistema operativo y los paquetes de DirectAdmin regularmente.
En CentOS/AlmaLinux:
yum update
En Ubuntu/Debian:
apt update && apt upgrade
Monitorización y logs
CSF guarda todos los eventos en /var/log/lfd.log. Es una buena práctica revisar este archivo de vez en cuando para ver qué se está bloqueando. Si ves muchas alertas de tu propia IP, quizás has configurado algo mal.
Puedes usar tail -f /var/log/lfd.log para ver los eventos en tiempo real mientras trabajas.
Solución de problemas comunes
Me he bloqueado a mí mismo, ¿cómo me desbloqueo?
Es una situación más común de lo que piensas. Si has configurado una regla que bloquea tu IP y ahora no puedes acceder por SSH, tienes dos opciones:
- Usar el panel de control de tu proveedor (VPS): La mayoría de los proveedores (DigitalOcean, Vultr, Linode, etc.) ofrecen una consola web (VNC) que te permite acceder al servidor sin pasar por el firewall.
- Pedir ayuda a tu proveedor: Si no tienes consola web, abre un ticket de soporte y pide que desbloqueen tu IP o desactiven el firewall temporalmente.
El firewall bloquea el correo saliente
Si tus correos no se envían, revisa que los puertos TCP_OUT incluyan el 25 y el 587. Además, asegúrate de que tu IP no esté en alguna lista negra de spam. Puedes usar herramientas online para comprobarlo.
No puedo actualizar los paquetes del sistema
Asegúrate de que los puertos de salida TCP_OUT incluyan los repositorios de tu sistema. Normalmente el puerto 80 y 443 son suficientes, pero a veces se necesita el 21 o el 873 (rsync). Revisa la documentación de tu proveedor de repositorios.
FAQ: Preguntas frecuentes sobre el firewall en DirectAdmin
¿Puedo usar el firewall de DirectAdmin sin saber comandos de Linux?
Sí, la interfaz web de CSF en DirectAdmin te permite gestionar lo básico (abrir/cerrar puertos, bloquear IPs) sin usar la terminal. Sin embargo, para configuraciones avanzadas (como las reglas de CONNLIMIT), necesitarás editar archivos por SSH.
¿Qué es mejor, el firewall de DirectAdmin o el del proveedor de hosting?
Ambos. El firewall de tu proveedor (por ejemplo, un Security Group en AWS) actúa como una barrera externa. El firewall de DirectAdmin (CSF) actúa a nivel del sistema operativo. Lo ideal es usar ambos. Configura el de tu proveedor para que solo permita el tráfico hacia los puertos que ya has abierto en CSF.
¿CSF es gratuito?
CSF tiene una licencia gratuita que funciona para la mayoría de los casos. La versión de pago ofrece soporte técnico y actualizaciones más frecuentes. Para un servidor personal o una pequeña empresa, la versión gratuita es más que suficiente.
**¿Qué pasa
