Introducción y objetivos
Un firewall bien configurado es esencial para proteger cualquier servidor. En este tutorial aprenderás a usar iptables para gestionar el tráfico de red y a complementar esa protección con fail2ban, que es muy útil para bloquear intentos reiterados de acceso no autorizado, como los ataques de fuerza bruta. Vas a encontrar comandos claros, ejemplos prácticos y consejos para sistemas Linux como Debian, Ubuntu, CentOS y RHEL. El objetivo es que al terminar tengas una configuración lista para usar en un entorno real.
Contenido del artículo
Conceptos básicos de iptables
iptables se encarga de controlar el filtrado de paquetes a nivel de kernel a través de cadenas como INPUT, FORWARD y OUTPUT. Las reglas se ejecutan de arriba abajo y, cuando una coincide, se realiza la acción especificada: ACCEPT, DROP o REJECT, entre otras. Por lo general, trabajarás sobre la tabla filter y las cadenas más habituales.
- INPUT: tráfico que llega al servidor.
- OUTPUT: tráfico que sale desde el servidor.
- FORWARD: tráfico que pasa a través del servidor, generalmente en tareas de routing.
Configurar iptables paso a paso
¿Necesitas hosting rápido y seguro?
Servidores en España con soporte 24/7. Desde 3,89€/mes.
Ver planes de hostingEsta es una secuencia básica y segura para empezar. Ejecuta los comandos como root o usando sudo, y ajusta los puertos o direcciones según tus necesidades.
- Política por defecto: Deja INPUT y FORWARD en DROP, OUTPUT en ACCEPT:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
- Permitir loopback:
sudo iptables -A INPUT -i lo -j ACCEPT
- Permitir conexiones ya establecidas:
sudo iptables -A INPUT -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
- Abrir SSH (puerto 22 o el que utilices):
sudo iptables -A INPUT -p tcp –dport 22 -m conntrack –ctstate NEW -j ACCEPT
- Abrir HTTP/HTTPS:
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT
- Bloquear ICMP no deseado (opcional):
sudo iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
- Registrar y bloquear: Puedes añadir una cadena de registro para los paquetes descartados:
sudo iptables -N LOGDROP
sudo iptables -A LOGDROP -m limit –limit 2/min -j LOG –log-prefix «IPTables-DROP: » –log-level 4
sudo iptables -A LOGDROP -j DROP
Y enlazarla al final de INPUT: sudo iptables -A INPUT -j LOGDROP
Hacer las reglas persistentes
En Debian o Ubuntu suele ser útil instalar iptables-persistent o guardar la configuración manualmente con iptables-save:
- Para guardar: sudo iptables-save > /etc/iptables/rules.v4
- Para restaurar reglas al inicio, puedes crear un servicio systemd o utilizar los paquetes mencionados.
En CentOS y RHEL, existe el paquete iptables-services, aunque muchos sistemas nuevos prefieren firewalld. Elige según tu entorno.
Instalar y configurar fail2ban
fail2ban monitoriza los logs del sistema y bloquea temporalmente las IP que muestran patrones sospechosos, como varios intentos fallidos de acceso SSH. Instalarlo es sencillo:
- Debian/Ubuntu: sudo apt update && sudo apt install fail2ban
- CentOS: sudo yum install epel-release && sudo yum install fail2ban
El archivo de configuración recomendado es /etc/fail2ban/jail.local (no toques jail.conf directamente). Ejemplo básico para proteger SSH:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log (o /var/log/secure, depende de tu sistema)
maxretry = 5
bantime = 3600
fail2ban se apoya en iptables para crear reglas temporales de bloqueo. Puedes ver el estado general con sudo fail2ban-client status y consultar un jail específico, por ejemplo SSH, con sudo fail2ban-client status sshd.
Pruebas y endurecimiento
Haz pruebas tanto localmente como desde IPs externas para asegurar que las reglas funcionan como esperas. Para revisar el estado actual:
- sudo iptables -L -v -n
- sudo fail2ban-client status
Algunos consejos extra:
- Utiliza autenticación por clave SSH y restringe el acceso por IP si tienes esa posibilidad.
- Implanta sistemas de monitorización y alertas, ya sea por syslog, SIEM, o notificaciones de eventos del firewall y bans de fail2ban.
- Haz copias de seguridad de tus reglas antes de realizar cambios importantes; evita sorpresas.
| Herramienta | Función principal | Ventaja |
|---|---|---|
| iptables | Filtrado de paquetes en kernel | Gran control y rendimiento |
| fail2ban | Detección y bloqueo de intrusos por logs | Bans automáticos y temporales |
FAQ y recursos
¿Puedo usar nftables en vez de iptables? Sí, nftables es el sistema más moderno y, en muchas distribuciones, el recomendado. Pero iptables sigue estando presente en muchos sistemas y es perfectamente válido, sobre todo si ya lo tienes en funcionamiento.
¿Fail2ban bloquea para siempre? No necesariamente. Por defecto, los bloqueos son temporales (bantime). Si quieres que un ban sea permanente, ajusta bantime = -1 o añade manualmente la IP bloqueada a tus reglas de firewall.
¿Cómo recupero el acceso si me bloqueo? Si pierdes acceso remoto, utiliza la consola web de tu proveedor o, si tienes acceso físico, conecta un teclado y monitor. En virtualizados, la consola KVM/IPMI suele ser la vía de rescate.
Una buena combinación de iptables y fail2ban puede reducir mucho el riesgo frente a ataques comunes. Si buscas una solución gestionada en España, SOLTIA ofrece VPS, servidores dedicados, cloud y Guía Completa para Principiantes">Hosting WordPress Hispano: Guía Completa para Elegir en 2026">hosting WordPress sobre infraestructura propia, con soporte técnico real y disponibilidad garantizada.

