Limiter une plage d'adresses IP à des ports spécifiques à l'aide d'iptables

1

J'utilise iptables v1.4.21 sur linux. J'essaie de limiter le trafic pour les clients DHCP 10.0.0.50-10.0.0.100. Je voudrais qu’ils aient uniquement accès aux ports 53,67,80,443,9091,32400utilisant TCPet UDP. Mais je n'arrive pas à trouver quelque chose qui fonctionne.

David Custer
la source

Réponses:

2

La combinaison de ces règles le fera:

iptables -A INPUT -i eth0 -m iprange --src-range 10.0.0.50-10.0.0.100  -p tcp --match multiport --dports 53,67,80,443,9091,32400 -j ACCEPT
iptables -A INPUT -i eth0 -m iprange --src-range 10.0.0.50-10.0.0.100  -p udp --match multiport --dports 53,67,80,443,9091,32400 -j ACCEPT
 iptables -A INPUT -i eth0 -m iprange --src-range 10.0.0.50-10.0.0.100   -j DROP

Rien d’intelligent en cela: deux règles pour UDPet TCP, respectivement, autoriser le trafic. Le module iprangepermet de spécifier une plage d’adresses IP auxquelles la règle s’applique, --match multiportspermettant de faire correspondre anyune liste de ports. La dernière règle examine les paquets qui ne répondent à aucun des deux critères précédents, en les abandonnant, selon votre demande.

MariusMatutiae
la source
Est-ce important si la troisième ligne n'est pas supérieure aux deux autres?
Tloz
@Tloz Oui, c'est le cas. Il est important que la dernière ligne vienne après les deux précédentes. Dans iptables, les règles sont examinées séquentiellement : lorsqu'une correspondance est trouvée, aucune autre règle n'est testée. Dans l'ordre ci-dessus, si l'une des deux premières règles s'applique, le paquet est accepté et la troisième règle n'est pas testée. Mais si les deux premières règles ne s'appliquent pas, la troisième règle est testée et, si elle est appliquée, le paquet est rejeté.
MariusMatutiae
Oh, cela explique pourquoi mes règles ne fonctionnent jamais! Je pensais que tu devais mettre le moins spécifique en premier
Tloz
@Tloz Nope, c'est la règle correcte pour les tables de routage, pas pour iptables.
MariusMatutiae