Une fois que j'ai défini iptables pour réacheminer un port, comment puis-je l'annuler?

13

J'ai lu sur de nombreux sites comment utiliser iptables pour rediriger un port vers un autre sous Linux. Par exemple, le réacheminement des ports 80 à 8080 ressemblerait à ceci ...

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Ma préoccupation est, et si je change d'idée? Je n'ai lu nulle part qui donne la syntaxe pour le corriger. Je suppose qu'il existe un moyen (simple?) De le faire, mais je suis trop nouveau chez Linux pour comprendre intuitivement comment restaurer le port 80 à son comportement d'origine sans réinstaller le système d'exploitation.

Syndog
la source

Réponses:

6

Vous pouvez utiliser l'option -D pour iptables pour supprimer les règles de vos chaînes. Par exemple

Listez d'abord la chaîne dont vous voulez supprimer une règle, utilisez --line-numbers

sudo iptables -L RH-Firewall-1-INPUT  -n --line-numbers

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
4    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
6    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
7    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
9    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
10   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
11   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Pour supprimer la ligne 6

sudo iptables -D RH-Firewall-1-INPUT 6
sudo iptables -L RH-Firewall-1-INPUT  -n --line-numbers

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
4    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Si vous avez votre configuration iptables enregistrée dans un fichier, n'oubliez pas de mettre à jour le fichier ( iptables-save, service iptables saveetc.)

Iain
la source
23

Si vous scriptez, il est plus facile de supprimer par définition:

Exemple:

Ajouter:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Remarquez le -A ? cela signifie ajouter .

Retirer:

iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Remarquez le -D ? cela signifie supprimer .

bithavoc
la source
C'était très utile!
MadPhysicist
3

http://linux.die.net/man/8/iptables :

ahem

iptables -L, --list [chain]
    List all rules in the selected chain. If no chain is selected, all chains are listed. As every other iptables command, it applies to the specified table (filter is the default), so NAT rules get listed by

    iptables -t nat -n -L

    Please note that it is often used with the -n option, in order to avoid long reverse DNS lookups. It is legal to specify the -Z (zero) option as well, in which case the chain(s) will be atomically listed and zeroed. The exact output is affected by the other arguments given. The exact rules are suppressed until you use

    iptables -L -v

...

iptables -D, --delete chain rule-specification
iptables -D, --delete chain rulenum
    Delete one or more rules from the selected chain. There are two versions of this command: the rule can be specified as a number in the chain (starting at 1 for the first rule) or a rule to match. 
Bonjour71
la source
0

La réponse par bithavoc est la bonne. Comme je n'ai pas encore assez de points pour le commenter, j'ajoute les informations supplémentaires comme une nouvelle réponse:

Ajouter une nouvelle règle de réacheminement

$ sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to 5671

Liste des règles NAT

$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:https redir ports 5671

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination     

Le -t natcommutateur est nécessaire pour pouvoir router les règles.

Supprimer la règle

$ sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to 5671
[ec2-user@ip-172-31-27-46 ~]$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
Vaibhaw
la source