J'héberge des services HTTP et HTTPS spéciaux sur les ports 8006 et 8007 respectivement. J'utilise iptables pour "activer" le serveur; c'est-à-dire pour router les ports HTTP et HTTPS entrants:
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
Cela fonctionne comme un charme. Cependant, je voudrais créer un autre script qui désactive à nouveau mon serveur; c'est-à-dire restaurer iptables à l'état dans lequel il se trouvait avant d'exécuter les lignes ci-dessus. Cependant, j'ai du mal à trouver la syntaxe pour supprimer ces règles. La seule chose qui semble fonctionner est une chasse d'eau complète:
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
Mais cela supprimera également d'autres règles iptables, ce qui n'est pas souhaité.
-I
au lieu de-A
pour lesACCEPT
lignes. C'est parce que généralement, la dernière ligne (pour laINPUT
chaîne par exemple) est unDROP
ouREJECT
et vous voulez que votre règle vienne avant cela.-A
met la nouvelle règle après la dernière règle, tout en la-I
mettant au début.