Se você não conseguir encontrar uma máscara de rede comum que cubra os IPs desejados, precisará escrever várias regras idênticas para fazer o que deseja.
Existem várias estruturas de iptables em torno das quais podemos lidar com o baixo nível de escrita das regras do iptables, permitindo que você defina suas regras em um nível mais sinólico. Shorewall é comum, fornecido com as distribuições linux mais atuais.
Apesar da falta de votos, isso funciona e é a resposta certa para a pergunta
phil-Lavin
//, você pode fazer o mesmo com as portas?
Nathan Basanese 22/02
11
@NathanBasanese Você pode usar -m multiport --dports 123,456,789para várias portas
mahemoff
Tobia agora tem uma resposta melhor que esta. Ver abaixo.
Ben Aveling
Usando o iptables v1.3.7comando Given, iptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROPisso retorna o erro " host/network '5.188.206.14,193.238.47.5' not found".
JamesThomasMoon1979
14
você pode usar o módulo iprange em combinação com '--src-range' como por exemplo:
-A INPUT -i eth0 -m iprange --src-range 192.168.1.90-192.168.1.101 -j ACCEPT
Fonte: página de manual do 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.
(eu sei que isso é como uma pergunta de 4 anos de idade, mas apenas para responder para quem procura isso na rede)
A pergunta original é de maio de 2009, mas desde maio de 2011 o kernel do Linux possui um recurso para atender a essa necessidade chamada ipset .
Aqui está um exemplo de criação de um ipset, adicionando endereços a ele e, em seguida, usando-o em uma regra 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
Veja man iptablese man ipsetpara mais informações.
Além do comentário de Bòss King, você também pode simplesmente especificar vários endereços separados por vírgula:
[!] -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).
A partir do shell bash, devo escapar da inversão com uma barra invertida:\! -s 192.168.1.3 ...
Marcos
iptables v1.6.1: ! not allowed with multiple source or destination IP addresses:-(
tu-Restabelece Monica-dor duh 25/06
4
Você pode definir várias cadeias para combinar listas independentes de requisitos. Duvido que seja exatamente isso que você deseja, mas ainda é bastante útil. Usamos isso para definir listas de tipos de usuário válidos por IP e, em seguida, aplicamos restrições de porta às redes de origem. Então, por exemplo:
# 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 exemplo, que você deseja aceitar apenas pacotes SMTP provenientes de 10.0.0.2 ou 192.168.1.2. Você pode usar as seguintes regras:
# 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
Ou como a saída 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
Respostas:
Isso só é possível se você puder agregar os IPs de origem que deseja em um intervalo contíguo. por exemplo
Se você não conseguir encontrar uma máscara de rede comum que cubra os IPs desejados, precisará escrever várias regras idênticas para fazer o que deseja.
Existem várias estruturas de iptables em torno das quais podemos lidar com o baixo nível de escrita das regras do iptables, permitindo que você defina suas regras em um nível mais sinólico. Shorewall é comum, fornecido com as distribuições linux mais atuais.
fonte
Para adicionar várias fontes em um único comando, eu faria o seguinte:
O iptables o traduzirá automaticamente em várias regras .
fonte
-m multiport --dports 123,456,789
para várias portasiptables v1.3.7
comando Given,iptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROP
isso retorna o erro "host/network '5.188.206.14,193.238.47.5' not found
".você pode usar o módulo iprange em combinação com '--src-range' como por exemplo:
Fonte: página de manual do iptables 1.4.7
(eu sei que isso é como uma pergunta de 4 anos de idade, mas apenas para responder para quem procura isso na rede)
fonte
A pergunta original é de maio de 2009, mas desde maio de 2011 o kernel do Linux possui um recurso para atender a essa necessidade chamada ipset .
Aqui está um exemplo de criação de um ipset, adicionando endereços a ele e, em seguida, usando-o em uma regra de firewall:
Veja
man iptables
eman ipset
para mais informações.fonte
Além do comentário de Bòss King, você também pode simplesmente especificar vários endereços separados por vírgula:
fonte
bash
, devo escapar da inversão com uma barra invertida:\! -s 192.168.1.3 ...
iptables v1.6.1: ! not allowed with multiple source or destination IP addresses
:-(Você pode definir várias cadeias para combinar listas independentes de requisitos. Duvido que seja exatamente isso que você deseja, mas ainda é bastante útil. Usamos isso para definir listas de tipos de usuário válidos por IP e, em seguida, aplicamos restrições de porta às redes de origem. Então, por exemplo:
fonte
Digamos, por exemplo, que você deseja aceitar apenas pacotes SMTP provenientes de 10.0.0.2 ou 192.168.1.2. Você pode usar as seguintes regras:
Ou como a saída de
iptables-save
fonte