iptables หลายแหล่ง IP


31

ฉันต้องการสร้างกฎเดียวใน iptables (ถ้าเป็นไปได้) ที่ใช้ที่อยู่ IP หลายแหล่ง เป็นไปได้ไหม


// คุณสามารถทำสิ่งเดียวกันสำหรับพอร์ตตามsearch.cpan.org/~phillips/IPTables-Rule-0.01/lib/IPTables/...
Nathan Basanese

คำตอบ:


13

สิ่งนี้เป็นไปได้ก็ต่อเมื่อคุณสามารถรวม IP ต้นทางของคุณต้องการในช่วงที่ต่อเนื่องกัน เช่น

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

หากคุณไม่สามารถหา netmask ทั่วไปที่ครอบคลุม IP ที่คุณต้องการคุณจะต้องเขียนกฎที่เหมือนกันหลายประการเพื่อทำสิ่งที่คุณต้องการ

มีกรอบ iptables อยู่หลายรอบซึ่งสามารถจัดการกับระดับต่ำของการเขียนกฎ iptables ช่วยให้คุณสามารถกำหนดกฎของคุณในระดับ symolic เพิ่มเติม Shorewallเป็นสิ่งที่พบได้ทั่วไปที่มาพร้อมกับการแจกแจงลินุกซ์ในปัจจุบัน


// นี้ไม่ถูกต้องตามsearch.cpan.org/~phillips/IPTables-Rule-0.01/lib/IPTables/...
Nathan Basanese

1
คำตอบของ Ali Pandidan นี้จริงๆแล้วเป็น corect one
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

//, คุณสามารถทำเช่นเดียวกันกับพอร์ตได้หรือไม่?
Nathan Basanese

1
@NathanBasanese คุณสามารถใช้-m multiport --dports 123,456,789สำหรับหลายพอร์ตได้
mahemoff

โทเบียในตอนนี้มีคำตอบที่ดีกว่าอันนี้ ดูด้านล่าง
Ben Aveling

การใช้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' เช่น ex:

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

(ฉันรู้ว่านี่เป็นเหมือนคำถามอายุ 4 ปี แต่เพียงเพื่อตอบสำหรับทุกคนที่ค้นหาสิ่งนี้ในเน็ต)


14

คำถามเดิมคือตั้งแต่เดือนพฤษภาคมปี 2009 แต่ตั้งแต่เดือนพฤษภาคมปี 2011 เคอร์เนลมีคุณลักษณะที่อยู่ต้องนี้เรียกว่า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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.