iptables, ordre des règles - est-ce que je comprends bien?

17

Je voudrais configurer mon VPS de la manière qu'il n'accepte que les connexions de l'extérieur sur le port 22 (où sshd écoute) et les requêtes ICMP. Tout le reste de l'extérieur doit être rejeté. À l'intérieur du serveur, tout doit être autorisé. Les règles suivantes créent-elles le comportement souhaité?

iptables -A INPUT --jump ACCEPT --protocol all   --source 127.0.0.1
iptables -A INPUT --jump ACCEPT --protocol tcp   --dport 22
iptabels -A INPUT --jump ACCEPT --protocol icmp
iptables -A INPUT --jump ACCEPT --match state    --state ESTABLISHED,RELATED
iptables -A INPUT --jump REJECT --protocol all

Je ne suis pas complètement sûr si les règles ACCEPTER "gagneront" sur le dernier REJET

Xpector
la source
1
Vous ne devez pas utiliser --source 127.0.0.1pour déterminer si un paquet est sûr à accepter. Voir serverfault.com/a/825231/4131
Bruno Bronosky

Réponses:

20

Vous avez raison.

Les règles seront traitées dans l'ordre de ligne du fichier. S'il existe une correspondance pour une règle, aucune autre règle ne sera traitée pour ce paquet IP dans votre cas.

http://en.wikipedia.org/wiki/Iptables

Chaque règle d'une chaîne contient la spécification des paquets auxquels elle correspond. Il peut également contenir un objectif (utilisé pour les extensions) ou un verdict (l'une des décisions intégrées). Lorsqu'un paquet traverse une chaîne, chaque règle est à son tour examinée. Si une règle ne correspond pas au paquet, le paquet est passé à la règle suivante. Si une règle correspond au paquet, la règle prend l'action indiquée par la cible / le verdict, ce qui peut faire en sorte que le paquet puisse continuer le long de la chaîne ou non.

NGRhodes
la source