Habilitar iptables en una interfaz

16

Quiero que iptables filtre solo una interfaz, eth0, que se enfrenta a WAN. ¿Cómo se puede hacer esto? Y quiero mantener abiertos los puertos ftp y ssh en eth0.

nixnotwin
fuente
Lea las páginas de manual de iptables, o en caso de que haya entendido mal su problema, haga la pregunta más específica.
Jari Jokinen

Respuestas:

25

Entonces, para todas las interfaces, excepto una, desea aceptar todo el tráfico, y en eth0 desea eliminar todo el tráfico entrante, excepto ftp y ssh.

Primero, podríamos establecer una política de aceptar todo el tráfico por defecto.

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Entonces, podríamos restablecer las reglas de su firewall.

iptables -F

Ahora podríamos decir que queremos permitir el tráfico entrante en eth0 que es parte de una conexión que ya permitimos.

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

También que queremos permitir conexiones ssh entrantes en eth0.

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

Pero que cualquier otra cosa entrante en eth0 debería descartarse.

iptables -A INPUT -i eth0 -j DROP

Para obtener un poco más de profundidad, vea esta entrada wiki de CentOS .

FTP es más complicado que ssh ya que puede usar un puerto aleatorio, así que mira esta pregunta anterior .

Sciurus
fuente
55
¡¡¡ADVERTENCIA!!! Haga "iptables -P ..." antes de "iptables -F". Si sus reglas actuales están configuradas para eliminar el tráfico de forma predeterminada, ejecutar -F lo bloqueará de su caja. Es por eso que mantener la política predeterminada para permitir y agregar específicamente una regla para descartar todo el resto del tráfico es la mejor práctica.
Coops
8

Algo como esto debería hacer el trabajo:

iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT
Bart De Vos
fuente
1
Bastante acertado (aunque quizás sea un poco más agradable que "Dejar TODO" en la interfaz WAN, ¿eh?) - Escriba reglas para filtrar la interfaz que desea filtrar, y ACCEPTtodo lo demás en las otras interfaces.
voretaq7
4

La opción de especificar una interfaz en la regla de iptables es -i, por ejemplo: -i eth0.

Derp A. Round
fuente
4

Es muy simple cuando haces una iptablesregla, entonces tienes que especificar la interfaz. La opción para especificar la tarjeta LAN en la que iptablesdebería funcionar es-i

Seguir las reglas puede darte un buen ejemplo

iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset 

La última regla es rechazar cualquier otro paquete que no coincida con las 2 primeras reglas. Todas las reglas iptablesse ejecutan en el orden dado, por lo que la regla para rechazar paquetes es siempre la última.

usuario registrado
fuente