Estoy alojando servicios especiales HTTP y HTTPS en los puertos 8006 y 8007 respectivamente. Yo uso iptables para "activar" el servidor; es decir, para enrutar los puertos HTTP y HTTPS entrantes:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007
Esto funciona como un encanto. Sin embargo, me gustaría crear otro script que vuelva a deshabilitar mi servidor; es decir, restaurar iptables al estado en que estaba antes de ejecutar las líneas anteriores. Sin embargo, estoy teniendo dificultades para descubrir la sintaxis para eliminar estas reglas. Lo único que parece funcionar es una descarga completa:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Pero eso también eliminará otras reglas de iptables que no son deseadas.
-I
lugar de-A
paraACCEPT
líneas. Esto se debe a que, por lo general, la última línea (porINPUT
ejemplo, la cadena) es unaDROP
oREJECT
y desea que su regla aparezca antes.-A
coloca la nueva regla después de la última regla, mientras que la-I
coloca al comienzo.