Seguridad avanzada para un router hecho con Debian e Iptables

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Configurar un router con Debian utilizando IPTables es una solución poderosa y flexible para asegurar las conexiones de red. En este artículo, explicaremos cómo securizar un router basado en Debian con IPTables y presentaremos un conjunto de reglas de IPTables que puedes usar para asegurar tu red.

Instalación de IPTables en Debian

Para empezar, asegúrate de tener IPTables instalado en tu sistema Debian. Puedes instalarlo usando el siguiente comando:

sudo apt-get update
sudo apt-get install iptables

Configuración de IPTables

IPTables es una herramienta de línea de comandos utilizada para configurar las reglas del firewall en Linux. A continuación, te mostramos cómo configurar IPTables para maximizar la seguridad de tu router.

Reglas de IPTables

El siguiente es un conjunto de reglas de IPTables diseñadas para asegurar tu router Debian. Estas reglas se centran en filtrar el tráfico entrante, saliente y de reenvío para proteger tu red de posibles ataques.

# Generated by iptables-save v1.8.9 (nf_tables)
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Descarta paquetes TCP nuevos que no tengan la bandera SYN
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

# Descarta paquetes fragmentados
-A INPUT -f -j DROP

# Descarta paquetes TCP con banderas inválidas
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP

# Descarta paquetes con estados de conexión inválidos
-A INPUT -m conntrack --ctstate INVALID -j DROP

# Permite todo el tráfico en la interfaz de loopback
-A INPUT -i lo -j ACCEPT

# Permite tráfico relacionado y establecido
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Permite pings (ICMP echo-request)
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT

# Permite conexiones SSH desde la subred 192.168.1.0/24
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT

# Permite tráfico multicast
-A INPUT -m pkttype --pkt-type multicast -j ACCEPT

# Permite tráfico entre las subredes 192.168.1.0/24 y 192.168.2.0/24
-A INPUT -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT

# Descarta todo el tráfico que no cumpla las reglas anteriores
-A INPUT -j DROP

# Reglas de reenvío
-A FORWARD -i eth0 -o eth1 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

COMMIT
# Completed on Fri Jun 23 14:13:10 2023

# Generated by iptables-save v1.8.9 (nf_tables)
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# Habilita la NAT (Network Address Translation) para la subred 192.168.2.0/24
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

COMMIT
# Completed

Explicación de las Reglas

  1. Política Predeterminada: Las políticas predeterminadas de las cadenas INPUT y FORWARD se establecen en DROP para bloquear todo el tráfico entrante y de reenvío por defecto.
  2. Filtrado de Paquetes TCP: Se descartan paquetes TCP con banderas inusuales o sospechosas para prevenir ataques de escaneo de puertos y otros ataques basados en TCP.
  3. Estados de Conexión: Se permite el tráfico relacionado y establecido para asegurar que las conexiones existentes y las respuestas legítimas sean aceptadas.
  4. Interfaz Loopback: Se acepta todo el tráfico en la interfaz loopback (lo), esencial para el correcto funcionamiento de muchos servicios.
  5. Conexiones ICMP: Se permiten pings, lo cual es útil para diagnósticos de red.
  6. Acceso SSH: Se permite el acceso SSH únicamente desde la subred interna 192.168.1.0/24.
  7. Multicast y Tráfico entre Subredes: Se permite el tráfico multicast y el tráfico entre subredes específicas.
  8. NAT: Se configura la NAT para la subred 192.168.2.0/24, permitiendo a los dispositivos de esta subred acceder a Internet.

Guardar y Aplicar las Reglas

Para que las reglas se apliquen automáticamente al reiniciar, guarda la configuración de IPTables en un archivo y recárgala durante el arranque del sistema. Puedes hacerlo de la siguiente manera:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

Y crea un script en /etc/network/if-pre-up.d/iptables con el siguiente contenido para cargar las reglas al inicio:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4

Haz que el script sea ejecutable:

sudo chmod +x /etc/network/if-pre-up.d/iptables

O instala Iptables persistente:

sudo apt intall iptables-persistent -y

Conclusión

Configurar un router basado en Debian con IPTables te proporciona un control granular sobre el tráfico de red, mejorando significativamente la seguridad de tu entorno. Las reglas presentadas en este artículo son un buen punto de partida, pero es importante ajustarlas según las necesidades específicas de tu red. Mantén siempre tu sistema y reglas de firewall actualizados para protegerte contra nuevas amenazas.