it-swarm-pt.tech

iptables IPs de origem múltipla em regra única

Eu gostaria de criar uma única regra no iptables (se possível) que use vários endereços IP de origem. Isso é possível?

33
Glen Solsberry

Isso só é possível se você puder agregar os IPs de origem que deseja em um intervalo contíguo. por exemplo

iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.5 -p tcp -j ACCEPT

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.

14
Dave Cheney

Para adicionar várias fontes em um único comando, eu faria isso:

iptables -t filter -A INPUT -s 192.168.1.1,2.2.2.2,10.10.10.10 -j ACCEPT

o iptables o converterá automaticamente em várias regras.

117
Ali Pandidan

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

Vejo man iptables e man ipset para mais informações.

16
Tobia

você pode usar o módulo iprange em combinação com '--src-range' como para e.x .:

-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)

14
GGets

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).
5
arjarj

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
4
jj33