it-swarm-tr.com

iptables tek kuralda çoklu kaynak IP'leri

Birden fazla kaynak IP adresi kullanan iptables (mümkünse) içinde tek bir kural oluşturmak istiyorum. Mümkün mü?

33
Glen Solsberry

Bu ancak istediğiniz kaynak IP'leri bitişik bir aralıkta toplayabiliyorsanız mümkündür. Örneğin

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

İstediğiniz IP'leri kapsayan ortak bir ağ maskesi bulamazsanız, istediğiniz şeyi yapmak için birkaç özdeş kural yazmanız gerekir.

Etrafında iptables kurallarını yazmanın düşük seviyesi ile başa çıkabilen, kurallarınızı daha sembolik bir düzeyde tanımlamanıza izin veren birkaç iptables çerçevesi vardır. Shorewall , mevcut linux dağıtımlarının çoğuyla birlikte gelen yaygın bir dosyadır.

14
Dave Cheney

Tek bir komutta birden çok kaynak eklemek için bunu yaparım:

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

iptables otomatik olarak çoklu kurallar çevirecektir.

117
Ali Pandidan

Asıl soru Mayıs 2009'dan geliyor, ancak Mayıs 2011'den beri Linux çekirdeği ipset olarak adlandırılan bu ihtiyacı karşılayacak bir özelliğe sahipti.

Aşağıda, bir ipset oluşturma, adres ekleme ve güvenlik duvarı kuralında kullanma örneği verilmiştir:

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

Görmek man iptables ve man ipset daha fazla bilgi için.

16
Tobia

iprange modülünü e.x gibi '--src-range' ile birlikte kullanabilirsiniz:

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

Kaynak: iptables 1.4.7 man sayfası

   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.

(Bu 4 yaşında bir soru gibi biliyorum, ama sadece net arayan herkes için cevap)

14
GGets

B Kingss King yorumuna ek olarak, virgülle ayrılmış birkaç adres de belirleyebilirsiniz:

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

Bağımsız gereksinim listelerini birleştirebileceğiniz şekilde birden çok zincir tanımlayabilirsiniz. Bunun tam olarak istediğiniz şey olduğundan şüpheliyim, ancak yine de oldukça kullanışlı. Bunu, IP'ye göre geçerli kullanıcı türleri listelerini tanımlamak ve ardından kaynak ağlarına bağlantı noktası kısıtlamaları uygulamak için kullanırız. Yani, örneğin:

# 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