iptables декілька джерел IP в одному правилі


31

Я хотів би створити єдине правило в iptables (якщо можливо), яке використовує декілька вихідних IP-адрес. Чи можливо це?


//, Ви можете зробити те ж саме для портів, відповідно до search.cpan.org/~phillips/IPTables-Rule-0.01/lib/IPTables/… .
Натан Басанес

Відповіді:


13

Це можливо лише в тому випадку, якщо ви зможете об'єднати потрібні IP-адреси джерела в суміжний діапазон. напр

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

Якщо ви не можете знайти загальну мережну маску, яка охоплює потрібну вам IP-адресу, вам доведеться написати кілька однакових правил, щоб робити те, що ви хочете.

Існує кілька рамок iptables, навколо яких можна вирішити низький рівень написання правил iptables, що дозволяє визначати свої правила на більш симонічному рівні. Shorewall - це звичайний, який постачається з найбільш актуальними дистрибутивами Linux.


//, це неправильно, відповідно до search.cpan.org/~phillips/IPTables-Rule-0.01/lib/IPTables/… .
Натан Басанес

1
Цей відповідь Алі Пандідана насправді є основним
derHugo

112

Щоб додати декілька джерел в одну команду, я би зробив це:

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

iptables автоматично переведуть його в кілька правил .


3
Незважаючи на відсутність голосів, це працює і є правильною відповіддю на питання
phil-lavin

//, Чи можете ви зробити те ж саме з портами?
Натан Басанес

1
@NathanBasanese Ви можете використовувати -m multiport --dports 123,456,789для декількох портів
mahemoff

Тобія тепер має кращу відповідь, ніж ця. Дивись нижче.
Бен Авелінг

Використовуючи дану iptables v1.3.7команду, iptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROPця повертає помилку " host/network '5.188.206.14,193.238.47.5' not found".
JamesThomasMoon1979

14

Ви можете використовувати модуль iprange у поєднанні з '--src-range', наприклад для:

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

Джерело: iptables 1.4.7 man page

   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.

(я знаю, це як запитання до чотирьох років, але просто відповісти всім, хто шукає це в мережі)


14

Початкове запитання - з травня 2009 року, але з травня 2011 року ядро ​​Linux має функцію для вирішення цієї потреби під назвою ipset .

Ось приклад створення ipset, додавання до нього адрес, а потім його використання в правилі брандмауера:

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

Дивіться man iptablesта man ipsetдля отримання додаткової інформації.


5

Окрім коментаря Bòss King, ви можете також просто вказати кілька адрес, відокремлених комою:

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

З оболонки, як bash, я повинен уникнути інверсії зворотною косою рисою:\! -s 192.168.1.3 ...
Маркос

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

4

Ви можете визначити кілька ланцюгів таким чином, щоб ви могли комбінувати незалежні списки вимог. Сумніваюсь, це саме те, що ви хочете, але це все ще досить зручно. Ми використовуємо це для визначення списків дійсних типів користувачів за IP, а потім застосовуємо обмеження порту до вихідних мереж. Так, наприклад:

# 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

Скажімо, наприклад, що ви хочете приймати лише SMTP-пакети, які надходять з 10.0.0.2 або 192.168.1.2. Ви можете користуватися такими правилами:

  # 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

Або як вихід 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.