Si no puede encontrar una máscara de red común que cubra las IP que desea, tendrá que escribir varias reglas idénticas para hacer lo que desee.
Existen varios marcos de iptables que pueden tratar el bajo nivel de escritura de las reglas de iptables, lo que le permite definir sus reglas a un nivel más simbólico. Shorewall es común y se distribuye con la mayoría de las distribuciones de Linux actuales.
A pesar de la falta de votos, esto funciona y es la respuesta correcta a la pregunta
phil-lavin
//, ¿Puedes hacer lo mismo con los puertos?
Nathan Basanese
1
@NathanBasanese Puede usar -m multiport --dports 123,456,789para múltiples puertos
mahemoff
Tobia ahora tiene una mejor respuesta que esta. Vea abajo.
Ben Aveling
Al usar el iptables v1.3.7comando Given, se iptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROPdevuelve el error " host/network '5.188.206.14,193.238.47.5' not found".
JamesThomasMoon1979
14
puede usar el módulo iprange en combinación con '--src-range' como por ejemplo:
-A INPUT -i eth0 -m iprange --src-range 192.168.1.90-192.168.1.101 -j ACCEPT
Fuente: página del manual de iptables 1.4.7
iprange
This matches on a given arbitrary range of IP addresses.
[!] --src-range from[-to]
Match source IP in the specified range.
[!] --dst-range from[-to]
Match destination IP in the specified range.
(Sé que esto es como una pregunta de 4 años, pero solo para responder a cualquiera que busque esto en la red)
La pregunta original es de mayo de 2009, pero desde mayo de 2011 el kernel de Linux ha tenido una característica para abordar esta necesidad llamada ipset .
Aquí hay un ejemplo de cómo crear un conjunto de ip, agregarle direcciones y luego usarlo en una regla de firewall:
ipset -N office365 iphash
ipset -A office365 132.245.228.194
ipset -A office365 132.245.77.34
ipset -A office365 132.245.48.34
ipset -A office365 132.245.68.242
ipset -A office365 132.245.55.2
ipset -A office365 40.101.17.98
ipset -A office365 132.245.48.18
ipset -A office365 132.245.229.114
ipset -A office365 132.245.196.34
ipset -A office365 132.245.56.114
iptables -A OUTPUT -m set --match-set office365 dst -j ACCEPT
Además del comentario de Bòss King, también puede simplemente especificar varias direcciones separadas por una coma:
[!] -s, --source address[/mask][,...]
Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address. Hostnames will be resolved once only, before the rule is submitted to the kernel. Please note that specifying
any name to be resolved with a remote query such as DNS is a really bad idea. The mask can be either a network mask or a plain number, specifying the number of 1's at the left side of the network mask. Thus, a mask of 24 is equivalent to
255.255.255.0. A "!" argument before the address specification inverts the sense of the address. The flag --src is an alias for this option. Multiple addresses can be specified, but this will expand to multiple rules (when adding with -A),
or will cause multiple rules to be deleted (with -D).
Desde el caparazón bash, debo escapar de la inversión con una barra invertida:\! -s 192.168.1.3 ...
Marcos
iptables v1.6.1: ! not allowed with multiple source or destination IP addresses:-(
tu-Reinstalar Monica-dor duh
4
Puede definir varias cadenas de modo que pueda combinar listas independientes de requisitos. Dudo que esto sea exactamente lo que quieres, pero sigue siendo bastante útil. Usamos esto para definir listas de tipos de usuario válidos por IP, y luego aplicamos restricciones de puerto a las redes de origen. Entonces, por ejemplo:
# Allow SMTP from anywhere
-A tcp_inbound -p tcp -m tcp -s 0/0 --dport 25 -j allowed
#
# Define the set of IP ranges we'll send to the tcp_user_inbound chain
-A tcp_inbound -p tcp -m tcp -s 172.19.1.0/24 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.6.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.8.0/24 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.10.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.12.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.4.0/23 -j tcp_user_inbound
#
# Ports we allow access to based on a source-address prereq.
# SSH
-A tcp_user_inbound -p tcp -m tcp --dport 22 -j allowed
# VNC
-A tcp_user_inbound -p tcp -m tcp --dport 5950:5958 -j allowed
# https
-A tcp_user_inbound -p tcp -m tcp --dport 443 -j allowed
Digamos, por ejemplo, que solo desea aceptar paquetes SMTP que provienen de 10.0.0.2 o 192.168.1.2. Puede usar las siguientes reglas:
# create a new chain
iptables --new-chain multiple_sources_smtp
# send all SMTP connections to the new chain
iptables --append INPUT --protocol tcp --dport 25 --jump multiple_sources_smtp
# use the default INPUT rules for packets coming from allowed sources
iptables --append multiple_sources_smtp --source 10.0.0.2 --jump RETURN
iptables --append multiple_sources_smtp --source 192.168.1.2 --jump RETURN
# drop packets from anywhere else
iptables --append multiple_sources_smtp -j DROP
O como la salida de iptables-save
# Generated by iptables-save v1.4.14 on Sat Dec 6 09:17:11 2014
*filter
:INPUT ACCEPT [32:13325]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [25:3084]
:multiple_sources_smtp - [0:0]
-A INPUT -p tcp -m tcp --dport 25 -j multiple_sources_smtp
-A multiple_sources_smtp -s 10.0.0.2/32 -j RETURN
-A multiple_sources_smtp -s 192.168.1.2/32 -j RETURN
-A multiple_sources_smtp -j DROP
COMMIT
# Completed on Sat Dec 6 09:17:11 2014
Respuestas:
Esto solo es posible si puede agregar las IP de origen que desee en un rango contiguo. p.ej
Si no puede encontrar una máscara de red común que cubra las IP que desea, tendrá que escribir varias reglas idénticas para hacer lo que desee.
Existen varios marcos de iptables que pueden tratar el bajo nivel de escritura de las reglas de iptables, lo que le permite definir sus reglas a un nivel más simbólico. Shorewall es común y se distribuye con la mayoría de las distribuciones de Linux actuales.
fuente
Para agregar múltiples fuentes en un solo comando, haría esto:
iptables lo traducirá automáticamente en múltiples reglas .
fuente
-m multiport --dports 123,456,789
para múltiples puertosiptables v1.3.7
comando Given, seiptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROP
devuelve el error "host/network '5.188.206.14,193.238.47.5' not found
".puede usar el módulo iprange en combinación con '--src-range' como por ejemplo:
Fuente: página del manual de iptables 1.4.7
(Sé que esto es como una pregunta de 4 años, pero solo para responder a cualquiera que busque esto en la red)
fuente
La pregunta original es de mayo de 2009, pero desde mayo de 2011 el kernel de Linux ha tenido una característica para abordar esta necesidad llamada ipset .
Aquí hay un ejemplo de cómo crear un conjunto de ip, agregarle direcciones y luego usarlo en una regla de firewall:
Ver
man iptables
yman ipset
para más información.fuente
Además del comentario de Bòss King, también puede simplemente especificar varias direcciones separadas por una coma:
fuente
bash
, debo escapar de la inversión con una barra invertida:\! -s 192.168.1.3 ...
iptables v1.6.1: ! not allowed with multiple source or destination IP addresses
:-(Puede definir varias cadenas de modo que pueda combinar listas independientes de requisitos. Dudo que esto sea exactamente lo que quieres, pero sigue siendo bastante útil. Usamos esto para definir listas de tipos de usuario válidos por IP, y luego aplicamos restricciones de puerto a las redes de origen. Entonces, por ejemplo:
fuente
Digamos, por ejemplo, que solo desea aceptar paquetes SMTP que provienen de 10.0.0.2 o 192.168.1.2. Puede usar las siguientes reglas:
O como la salida de
iptables-save
fuente