¿Cómo permitir un rango de IP con IPTABLES?

29

Aquí están mis iptables, ¿cómo puedo hacerlo para permitir un rango de ip en 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
fuente

Respuestas:

39

Si solo desea permitir un cierto rango de direcciones IP dentro de 10.50.0.0 (como desde 10.50.10.20 hasta 10.50.10.80) puede usar el siguiente comando:

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

Si desea permitir todo el rango, puede usar esto en su lugar:

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

Vea la página de manual de iptables y esta pregunta aquí en ServerFault: Lista blanca de IP permitidas (entrada / salida) usando iptables

runlevelsix
fuente
¿Dónde pongo esta línea?
Mike Curry
Esos son los comandos que ejecutaría desde la línea de comandos: [root @ host ~] # iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT
runlevelsix
1
Utilice "10.50.10.20-10.50.10.80", "-80" podría no hacer lo que desea .
basic6
@runlevelsix Si quisiera permitir un rango de ip como 10.0.0.0 a 10.255.255.255, ¿usaría 10.0.0.0/24?
RoboBear
@MikeCurry esto especifica qué ejecutar en la línea de comandos / desde su terminal. Alternativamente, puede agregar esta regla a un archivo de reglas de iptables en /etc/iptables/rulesets.d (si está usando Debian Linux) eliminando las "iptables" y el siguiente espacio de la línea: -A INPUT -i eth1 - m iprange --src-range 10.50.10.20-10.50.10.80 -j ACEPTAR.
RoboBear
3

Para un puerto específico, diga 22:

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

Bueno, viste lo que quieres permitir para esas IP pero 10.51.xx en CIDR se traduce en 10.50.0.0/16. Por lo tanto, será algo así como la línea para la interfaz de bucle invertido que tiene 127.0.0.0/8.

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

Puede dar el siguiente error:

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

Para corregir esto, simplemente coloque la ip completa como esta:

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

Ref .: http://blog.capitar.com/iptables-ip-range-reversed/

Franck
fuente