Refuerzo de la seguridad de puertos con Iptables
Protección de servicios sensibles mediante cadenas de verificación personalizadas.
Iptables es la herramienta de línea de comandos estándar para gestionar el cortafuegos Netfilter en Linux. Permite un filtrado granular del tráfico en función de criterios específicos. La protección contra el escaneo de puertos se implementa mediante la creación de una «lista blanca» de direcciones IP de confianza para los servicios restringidos.
Conceptos fundamentales
Una gestión eficaz del cortafuegos se basa en tres elementos clave:
- Tabla (Table): Un grupo de chains funcionales (la tabla
filterestá activa por defecto). - Chain: Una secuencia ordenada de reglas que los paquetes deben atravesar (p. ej.,
INPUTpara el tráfico entrante). - Regla (Rule): Un conjunto de condiciones y una acción. Si un paquete cumple los criterios, se ejecuta una acción como
ACCEPToDROP.
Configuración de una chain «antiscan» personalizada
Crear una chain antiscan dedicada es una buena práctica para la gestión centralizada de accesos. Permite mantener las restricciones de servicios específicos separadas de la chain INPUT principal.
1. Crear la chain personalizada:
iptables -N antiscan
2. Añadir las direcciones IP de confianza a la lista blanca: Añade las direcciones IP autorizadas a acceder a los puertos restringidos.
# Reemplaza con las IPs reales del administrador o de la oficina
iptables -A antiscan -s 1.1.1.1 -j ACCEPT
iptables -A antiscan -s 2.2.2.2 -j ACCEPT
3. Bloquear todo el tráfico restante: La última regla de la chain garantiza que las direcciones IP no autorizadas sean bloqueadas.
iptables -A antiscan -j DROP
4. Redirigir el tráfico de puertos específicos hacia la chain antiscan: El tráfico dirigido a puertos sensibles se redirige a la chain personalizada para su verificación.
Para puertos TCP (p. ej., bases de datos, servidores de correo, paneles de control):
iptables -I INPUT -p tcp --match multiport --dports 25,3306,8083 -j antiscan
Para puertos UDP (p. ej., SNMP, RPC):
iptables -I INPUT -p udp --match multiport --dports 111,161 -j antiscan
Hacer persistentes las reglas
Las configuraciones estándar de Iptables son volátiles y se borran al reiniciar. Para garantizar su persistencia:
Debian / Ubuntu
iptables-save > /etc/iptables.rules
# Crear un script de inicio de red
echo -e '#!/bin/bash\niptables-restore < /etc/iptables.rules' > /etc/network/if-pre-up.d/iptablesup
chmod +x /etc/network/if-pre-up.d/iptablesup
Nota
En las distribuciones modernas se recomienda instalar el paquete iptables-persistent para una gestión automatizada.
Consideraciones importantes
- Orden de las reglas: las reglas se procesan secuencialmente de arriba abajo. En cuanto se encuentra una coincidencia, las reglas siguientes dejan de evaluarse.
- Acceso SSH: asegúrate de que el puerto SSH (22 por defecto) no quede bloqueado por error, para evitar la pérdida del acceso remoto al servidor.
- Pruebas: la conectividad debe verificarse tanto desde una dirección IP de la lista blanca como desde una dirección externa, para confirmar que la lógica del cortafuegos funciona correctamente.
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!