Iptables Linux rejetés - Comment puis-je le réactiver?

8

donc j'ai un client de mon réseau connecté au routeur via mon ordinateur avec arpspoof. Lorsque je sais que je veux arrêter le transfert de paquets, j'exécute:

iptables -A FORWARD -j REJECT

qui fonctionne comme je m'y attendais. Mais quand j'essaye de faire quelque chose comme:

iptables -A FORWARD -j ACCEPT

Je n'arrive pas à faire passer les paquets comme au début.

Suis-je en train de faire quelque chose de mal ou y a-t-il d'autres arguments à utiliser différents de "ACCEPTER"?

Snipy
la source
4
Soit dit en passant que vous utilisez -A, peut - être que vous voulez utiliser -Ppour régler la P olitique (action par défaut lorsque aucune autre règle de la chaîne applique). Par exemple, iptables -P FORWARD DROP(ne peut pas l'être REJECT).
JoL
Que signifie «la question doit démontrer des compétences raisonnables en gestion de système»? :)
Marco

Réponses:

35

IPtables a une liste de règles, et pour chaque paquet, il vérifie la liste des règles dans l'ordre. Une fois qu'une règle est trouvée qui correspond au paquet et spécifie une politique (ACCEPTER, REJETER, DÉPOSER), le sort du paquet correspondant est déterminé; plus aucune règle n'est examinée.

Cela signifie que l'ordre dans lequel vous exécutez les commandes est important. Lorsque vous utilisez iptables -A, vous ajoutez une règle à la fin de la liste des règles, vous vous retrouverez donc avec une liste de règles qui ressemble à ceci:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     all  --  anywhere             anywhere

Étant donné que la REJECTrègle précède la ACCEPTrègle, elle est déclenchée en premier et le transfert ne se fera donc pas.

Vous devrez donc supprimer la REJECTrègle au lieu d'ajouter une ACCEPTrègle. Pour supprimer la règle REJECT, exécutez

iptables -D FORWARD -j REJECT 

Pour plus d'informations, lisez la page de manuel iptables.

Jenny D
la source
18

Le -Adrapeau indique à iptables d'ajouter la règle à la chaîne, ce qui signifie qu'elle se retrouve sous votre REJECTrègle, et puisque la première règle correspond, elle n'est jamais utilisée.

Vous listez vos règles avec iptables -L FORWARDet vous le verrez vous-même. Pour vous débarrasser de la règle que vous avez ajoutée, exécutez

iptables -D FORWARD -j REJECT 

Jusqu'à ce qu'il n'y ait plus de telles règles dans la chaîne.

Petter H
la source
1

Qu'en est-il de placer à la fin de la FORWARDrègle pour sauter dans une nouvelle chaîne dans laquelle il n'y aura qu'une seule règle. Ce peut être ACCEPTou REJECT. Dire...

iptables -N accept-chain
iptables -A accept-chain -j ACCEPT
iptables -A FORWARD -j accept-chain

Après cela, vous pouvez modifier cette règle dans accept-chainquelque chose comme

iptables -R accept-chain 1 -j REJECT

pour désactiver le trafic ou -j ACCEPTpour l'activer.

Aussi ce qui revient à activer et désactiver le routage par

echo "0" > /proc/sys/net/ipv4/ip_forward

pour désactiver le transfert de paquets et "1"- pour l'activer.

gooamoko
la source
0

L'ordre est important. Cela insérera votre règle en haut au lieu de l'ajouter.

iptables -I FORWARD 1 -j ACCEPT

-Je dois insérer et # 1 est la position

chandru-ops
la source