Cree una nueva cadena que acepte cualquier paquete TCP y UDP, y salte a esa cadena desde las reglas permisivas de IP / puerto individuales:
iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT
iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP
Esto agrega la sobrecarga de algunas líneas adicionales, pero reduce a la mitad el número de reglas TCP / UDP.
Yo no omitir el -pargumento, ya que no sólo va a abrir el cortafuegos para ICMP, sino también cualquier otro protocolo. Desde la página de manual de iptables en -p:
El protocolo especificado puede ser uno de tcp, udp, icmp o todos, o puede ser un valor numérico, que representa uno de estos protocolos o uno diferente. También se permite un nombre de protocolo de / etc / protocol.
Es posible que no esté escuchando ningún protocolo, excepto TCP, UDP e ICMP en este momento , pero quién sabe qué deparará el futuro. Sería una mala práctica dejar el firewall abierto innecesariamente.
Descargo de responsabilidad: los comandos de iptables están fuera de mi cabeza; No tengo acceso a una casilla en la que probarlos en el cajero automático.
Esta es una solución muy elegante que no deja el firewall abierto innecesariamente.
Big McLargeHuge
44
Pero este método de crear una nueva cadena fallará si el filtrado se realiza a través del número de puerto de destino. ¿Alguien puede sugerir cómo superar el problema mencionado anteriormente?
Amor
@Amor En este ejemplo, si utilizó -p alltodas las --dportreglas de la zone_lan_forwardcadena, eso podría lograr lo que está buscando. Por supuesto, estoy asumiendo que no hay otra forma de acceder a esa cadena con un protocolo que no sea TCP / UDP debido a la ACCEPT_TCP_UDPcadena. Obviamente, esta es una estrategia arriesgada si varias personas tienen acceso para modificar las reglas y alguien aparece y edita sus reglas sin comprender esta sutileza.
Samuel Harmer
Ooops No noté el orden de las cadenas. En este ejemplo, también debería cambiar el orden de las cadenas para que lo que acabo de decir funcione correctamente. Entonces ACCEPT_TCP_UDPsalta a lo zone_lan_forwardque luego salta a ACCEPT.
Samuel Harmer
2
Si realmente no le importa el tráfico ICMP (que de todos modos puede bloquear globalmente con una regla), puede omitir el indicador -p y cubrirá todos los protocolos.
¿Debería preocuparme el tráfico ICMP? Me preocupa principalmente el acceso HTTP.
Big McLargeHuge
Realmente no. Puede bloquear ICMP (ping) si lo desea, pero de todos modos no sirve de mucho.
Nathan C
@NathanC, creo que el consejo de abrir TODOS los puertos cuando el OP pregunta cómo reducir a la mitad sus reglas puede generar problemas, ahora o en el futuro.
Jed Daniels
@JedDaniels el conmutador -p especifica los protocolos y no los puertos. La respuesta a continuación tiene una alternativa si les importa bloquear cualquier cosa que no sea tcp y udp.
Nathan C
@NathanC Sí, y eliminar el -p significa "abrir todos los protocolos, no solo tcp o udp", lo cual es imprudente si no peligroso.
-p all
todas las--dport
reglas de lazone_lan_forward
cadena, eso podría lograr lo que está buscando. Por supuesto, estoy asumiendo que no hay otra forma de acceder a esa cadena con un protocolo que no sea TCP / UDP debido a laACCEPT_TCP_UDP
cadena. Obviamente, esta es una estrategia arriesgada si varias personas tienen acceso para modificar las reglas y alguien aparece y edita sus reglas sin comprender esta sutileza.ACCEPT_TCP_UDP
salta a lozone_lan_forward
que luego salta aACCEPT
.Si realmente no le importa el tráfico ICMP (que de todos modos puede bloquear globalmente con una regla), puede omitir el indicador -p y cubrirá todos los protocolos.
fuente