複数のソースIPアドレスを使用するiptablesで単一のルールを作成したい(可能な場合)。これは可能ですか?
複数のソースIPアドレスを使用するiptablesで単一のルールを作成したい(可能な場合)。これは可能ですか?
回答:
これは、必要なソースIPを連続した範囲に集約できる場合にのみ可能です。例えば
iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.5 -p tcp -j ACCEPT
必要なIPをカバーする共通のネットマスクが見つからない場合は、必要なことを行うためにいくつかの同一のルールを記述する必要があります。
iptablesルールの低レベルの記述に対処できるiptablesフレームワークがいくつかあり、よりシンボリックなレベルでルールを定義できます。Shorewallは、最新のLinuxディストリビューションのほとんどに同梱されている一般的なものです。
1つのコマンドで複数のソースを追加するには、次のようにします。
iptables -t filter -A INPUT -s 192.168.1.1,2.2.2.2,10.10.10.10 -j ACCEPT
iptablesは自動的に複数のルールに変換します。
-m multiport --dports 123,456,789
複数のポートに使用できます
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
" が返されます。
exのように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ページ
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年前の質問のようなものですが、ネット上でこれを探している人に答えるためだけです)
元の質問は2009年5月からですが、2011年5月以降、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
を参照してください。
BòssKingのコメントに加えて、カンマで区切られた複数のアドレスを指定することもできます。
[!] -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
:-(
要件の独立したリストを結合できるように、複数のチェーンを定義できます。これがまさにあなたが望むものであるとは思いませんが、それでもかなり便利です。これを使用して、有効なユーザータイプのリストを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
たとえば、10.0.0.2または192.168.1.2からのSMTPパケットのみを受け入れたいとします。次のルールを使用できます。
# 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