Tengo una topología en la que hay un Linux como enrutador que conecta dos Linux y quiero usar iptables para filtrar ssh y HTTP en una dirección. ¡Utilicé el siguiente código pero no funcionó! Realmente aprecio cualquier ayuda que puedas brindar.
iptables -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --dport 80 -j DROP
Respuesta1
Su secuencia de comandos debería funcionar para http, pero no es realmente agradable. Yo usaría algo como esto:
IPTABLE=/sbin/iptables
$IPTABLE -P INPUT ACCEPT
$IPTABLE -P FORWARD DROP
$IPTABLE -P OUTPUT ACCEPT
$IPTABLE -F
$IPTABLE -X
$IPTABLE -F -t nat
$IPTABLE -X -t nat
$IPTABLE -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#http
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
#https
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 443 -j ACCEPT
# ssh
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 22 -j ACCEPT
# icmp
$IPTABLE -A FORWARD -p icmp -j ACCEPT
Una vez que las reglas funcionen, recomiendo hacer un archivo iptables-save > /etc/iptables/rules.v4
. Con el iptables-persistent
paquete las reglas se cargan en el arranque.
Además de las Reglas de iptables que necesitas
- Reenvío de IP habilitado en su puerta de enlace.
- una ruta para la red externa en su host interno
- una ruta para la red interna en su host externo