web-dev-qa-db-fra.com

Iptables définissant plusieurs multiports dans une règle

L'extension multiport a une limite (15) pour les ports pouvant être spécifiés.

Mais comme je dois spécifier beaucoup plus de numéros de port dans une seule règle, j'ai donc essayé d'utiliser plusieurs multiports dans une même règle, par exemple:

iptables -A INPUT -p tcp -m multiport --destination-ports 59100 -m multiport --destination-ports 3000 -m state --state NEW -j REJECT --reject-with tcp-reset

Le résultat de iptables -L INPUT -n est

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 59100 multiport dports 3000 state NEW reject-with tcp-reset

Mais il s'avère que les deux ports ne sont pas rejetés lorsque j'essaie de me connecter à partir d'un client.

La version est v1.4.2-rc1.

Existe-t-il une solution de contournement ou que dois-je faire lorsque je dois spécifier plus de 15 ports dans une règle?.

19
ning

Pour contourner ce problème, j’utilise deux règles pour couvrir tous les cas.

Par exemple, si je veux autoriser ou refuser ces 18 ports:

465,110,995,587,143,11025,20,21,22,26,80,443,3000,10000,7080,8080,3000,5666

J'utilise les règles ci-dessous:

iptables -A INPUT -p tcp -i eth0 -m multiport --dports 465,110,995,587,143,11025,20,21,22,26,80,443 -j ACCEPT

iptables -A INPUT -p tcp -i eth0 -m multiport --dports 3000,10000,7080,8080,3000,5666 -j ACCEPT

Les règles ci-dessus devraient également fonctionner pour votre scénario. Vous pouvez créer une autre règle si vous atteignez la limite de 15 ports pour la première et la deuxième règle.

30
vinod garag

Vous devez utiliser plusieurs règles pour implémenter une sémantique de type OR, car les correspondances sont toujours associées à l'opérateur AND ensemble dans une règle. Vous pouvez également effectuer une correspondance avec des jeux de composants IP à indexation de port (ipset create blah bitmap:port).

3
jørgensen

Pour autant que je sache, l'écriture de plusieurs correspondances est une opération AND logique; Votre règle signifie donc que si le port de destination est "59100" ET "3000", refusez la connexion avec tcp-reset La solution de contournement utilise l'option -mport. Recherchez la page de manuel.

0
neoinzion