J'héberge des services spéciaux HTTP et HTTPS sur les ports 8006 et 8007 respectivement. J'utilise iptables pour "activer" le serveur, c'est-à-dire pour acheminer 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 était 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 purge 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é.
4 votes
J'ai constaté qu'il est préférable d'utiliser
-I
au lieu de-A
pourACCEPT
lignes. En effet, en général, la dernière ligne (dans le cas deINPUT
par exemple) est uneDROP
ouREJECT
et tu veux que ta règle passe avant ça.-A
place la nouvelle règle après la dernière règle, tandis que-I
le met au début.