Estou hospedando serviços HTTP e HTTPS especiais nas portas 8006 e 8007, respectivamente. Eu uso o iptables para "ativar" o servidor; ou seja, para rotear as portas HTTP e HTTPS de entrada:
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
Isso funciona como um encanto. No entanto, gostaria de criar outro script que desabilite meu servidor novamente; ou seja, restaure o iptables para o estado em que estava antes de executar as linhas acima. No entanto, estou tendo dificuldade em descobrir a sintaxe para remover essas regras. A única coisa que parece funcionar é uma 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
Mas isso também excluirá outras regras do iptables que são indesejadas.
-I
vez de-A
paraACCEPT
linhas. Isso ocorre porque, tipicamente, a última linha (porINPUT
cadeia, por exemplo) é umDROP
ouREJECT
e você deseja que sua regra venha antes disso.-A
coloca a nova regra após a última, enquanto-I
coloca no início.