Comment autoriser une gamme d'IP avec IPTABLES?

29

Voici mes iptables, comment puis-je faire en sorte que je puisse autoriser une plage d'ip sur ETH1 (10.51.xx)

# Generated by iptables-save v1.4.4 on Thu Jul  8 13:00:14 2010
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A INPUT -i lo -j ACCEPT 
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 
-A INPUT -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -j ACCEPT 
-A fail2ban-ssh -j RETURN 
COMMIT
Mike Curry
la source

Réponses:

39

Si vous souhaitez uniquement autoriser une certaine plage d'adresses IP à l'intérieur de 10.50.0.0 (par exemple de 10.50.10.20 à 10.50.10.80), vous pouvez utiliser la commande suivante:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

Si vous souhaitez autoriser toute la plage, vous pouvez utiliser ceci à la place:

iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT

Voir la page de manuel iptables et cette question ici sur ServerFault: liste blanche des IP autorisées (entrée / sortie) utilisant iptables

runlevelsix
la source
Où dois-je mettre cette ligne?
Mike Curry
Ce sont les commandes que vous exécuteriez à partir de la ligne de commande: [root @ host ~] # iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT
runlevelsix
1
Utilisez "10.50.10.20-10.50.10.80", "-80" pourrait ne pas faire ce que vous voulez .
basic6
@runlevelsix Si je voulais autoriser une plage d'adresses IP comme 10.0.0.0 à 10.255.255.255, devrais-je utiliser 10.0.0.0/24?
RoboBear
@MikeCurry, cela spécifie ce qu'il faut exécuter sur la ligne de commande / à partir de votre terminal. Alternativement, vous pouvez ajouter cette règle à un fichier de règles iptables dans /etc/iptables/rulesets.d (si vous utilisez Debian Linux) en supprimant les "iptables" et l'espace suivant de la ligne: -A INPUT -i eth1 - m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT.
RoboBear
3

Pour un port spécifique, disons 22:

iptables -A INPUT -p tcp  -m iprange --src-range  10.50.10.20-10.50.10.80  --dport 22  -j ACCEPT
Swapnil jaiswal
la source
1

Eh bien, vous avez vu ce que vous voulez autoriser ces adresses IP, mais 10.51.xx dans CIDR se traduit par 10.50.0.0/16. Ce sera donc quelque chose comme la ligne de l'interface de bouclage qui a 127.0.0.0/8.

Kyle Brandt
la source
1
iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-80 -j ACCEPT

Peut donner l'erreur suivante:

iptables: Applying firewall rules: xt_iprange: range 10.50.10.20-80 is reversed and will never match

Pour corriger cela, mettez simplement l'ip complète à la place comme ceci:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

Réf .: http://blog.capitar.com/iptables-ip-range-reversed/

Franck
la source