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?.
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.
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
).
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.