iptables IP multipli in un'unica regola


Risposte:


13

Ciò è possibile solo se è possibile aggregare gli IP di origine desiderati in un intervallo contiguo. per esempio

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

Se non riesci a trovare una maschera di rete comune che copra gli IP che desideri, dovrai scrivere diverse regole identiche per fare ciò che desideri.

Esistono diversi framework di iptables in grado di gestire il basso livello di scrittura delle regole di iptables, permettendoti di definire le tue regole a un livello più simbolico. Shorewall è un prodotto comune fornito con la maggior parte delle attuali distribuzioni di Linux.



1
Questa risposta di Ali Pandidan è in realtà quella
giusta

112

Per aggiungere più fonti in un singolo comando, farei questo:

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

iptables lo tradurrà automaticamente in più regole .


3
Nonostante la mancanza di voti, questo funziona ed è la risposta giusta alla domanda
phil-lavin,

//, puoi fare lo stesso con le porte?
Nathan Basanese,

1
@NathanBasanese Puoi usarlo -m multiport --dports 123,456,789per più porte
mahemoff il

Tobia ora ha una risposta migliore di questa. Vedi sotto.
Ben Aveling,

Utilizzando il iptables v1.3.7comando dato iptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROPquesto restituisce l'errore " host/network '5.188.206.14,193.238.47.5' not found".
JamesThomasMoon1979,

14

puoi usare il modulo iprange in combinazione con '--src-range' come per es:

-A INPUT -i eth0 -m iprange --src-range 192.168.1.90-192.168.1.101 -j ACCEPT

Fonte: pagina man di 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.

(So ​​che è come una domanda di 4 anni, ma solo per rispondere a chiunque cerchi questo in rete)


14

La domanda originale è di maggio 2009, ma da maggio 2011 il kernel Linux ha una funzione per rispondere a questa esigenza chiamata ipset .

Ecco un esempio di creazione di un ipset, aggiunta di indirizzi e utilizzo in una regola 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

Vedi man iptablese man ipsetper maggiori informazioni.


5

Oltre al commento di Bòss King, puoi anche semplicemente specificare diversi indirizzi separati da una virgola:

[!] -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).

Dal guscio come bash, devo sfuggire all'inversione con una battuta d'arresto:\! -s 192.168.1.3 ...
Marcos

iptables v1.6.1: ! not allowed with multiple source or destination IP addresses:-(
tu-Reinstate Monica-dor duh

4

È possibile definire più catene in modo da poter combinare elenchi indipendenti di requisiti. Dubito che sia esattamente quello che vuoi, ma è comunque abbastanza utile. Usiamo questo per definire elenchi di tipi di utenti validi per IP, quindi applichiamo restrizioni delle porte alle reti di origine. Quindi, per esempio:

# 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

-1

Diciamo ad esempio che si desidera accettare solo pacchetti SMTP che provengono da 10.0.0.2 o 192.168.1.2. È possibile utilizzare le seguenti regole:

  # 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 come uscita di 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.