77 votes

Quelle est la bonne manière d'ouvrir une plage de ports dans iptables

J'ai rencontré des articles conseillant ce qui suit :

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT

Et d'autres affirmant que ce qui précède ne fonctionnera pas et que iptables ne prend en charge que des déclarations de ports multiples avec l'option --multiport.

Existe-t-il un moyen correct d'ouvrir de nombreux ports avec iptables ?

0 votes

Question connexe : iptables et plusieurs ports

89voto

Nathan C Points 14821

Ceci est la bonne manière :

iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT

Comme exemple. Source ici.

7 votes

Si vous ne connaissez pas l'état du ruleset -I est un peu plus sûr que -A.

0 votes

@Iain, pourriez-vous s'il vous plaît expliquer le raisonnement derrière cela?

8 votes

@jayhendren de nombreux ensembles de règles auront une règle de tout rejeter par défaut par exemple -A INPUT -j REJECT --reject-with icmp-host-prohibited à la fin de INPUT et d'autres tables. L'utilisation de -A ajoute la règle à la fin de la table, après la dernière règle, de sorte qu'elle ne sera jamais considérée car netfilter fonctionne sur la base du premier match gagnant. L'utilisation de -I insère la règle au début de la table et en tant que tel, elle sera toujours considérée.

82voto

MadHatter Points 77602

Ce que vous avez entendu est correct, bien que vous l'ayez écrit incorrectement (vous avez oublié --dport).

iptables -A INPUT -p tcp --dport 1000:2000 ouvrira le trafic entrant aux ports TCP de 1000 à 2000 inclus.

-m multiport --dports est seulement nécessaire si la plage que vous voulez ouvrir n'est pas continue, par exemple -m multiport --dports 80,443, qui ouvrira uniquement le HTTP et le HTTPS - pas ceux entre les deux.

Notez que l'ordre des règles est important, et (comme le suggère Iain dans son commentaire ailleurs), c'est à vous de vous assurer que toute règle que vous ajoutez est à un endroit où elle sera efficace.

1 votes

Je pourrais aussi faire allusion ici si vous voulez ;)

1 votes

Hee hee hee! Allez-y, le message vaut la peine d'être répété!

5 votes

Ceci est la bonne réponse; elle est plus approfondie.

16voto

BloodMan Points 131

TL;DR mais...

Plage de ports pure sans module multiport: iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

Exemple équivalent avec multiport: iptables -A INPUT -p tcp -m multiport --dports 1000:2000 -j ACCEPT

...et variation sur le multiport avec plusieurs plages de ports (oui, c'est également possible): iptables -A INPUT -p tcp -m multiport --dports 1000,1001,1002:1500,1501:2000 -j ACCEPT

...et exemple équivalent avec multiport et plusieurs plages de ports avec négation: iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

Amusez-vous bien.

1voto

starvis Points 1

Selon l'homme iptables-extensions, vous pouvez définir une plage de ports en utilisant simplement l'interrupteur --dport.

tcp
Ces extensions peuvent être utilisées si `--protocol tcp' est spécifié. Il fournit les options suivantes :
[!] --destination-port,--dport port[:port]

Port de destination ou spécification de port plage. Le drapeau --dport est un alias pratique pour cette option.

Donc, cela spécifie également une plage de ports :
iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

1voto

Anil Rana Points 11

Il existe une autre façon d'ajouter l'entrée directement dans le fichier Iptables. emplacement /etc/sysconfig/iptables

-A INPUT -p tcp -m multiport --dports 1024:3000 -m state --state NEW -j ACCEPT

après cela, redémarrez le service iptables

0 votes

Si vous n'utilisez que l'état NEW, seuls les premiers paquets sont acceptés. Vous pouvez utiliser NEW,ESTABLISHED,RELATED pour autoriser les demandes entrantes pour la plage de ports

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X