iptables:一部のIPアドレスを除くほとんどのIPアドレスへのポートアクセスをブロックしようとしたときに失敗しました。

iptables:一部のIPアドレスを除くほとんどのIPアドレスへのポートアクセスをブロックしようとしたときに失敗しました。

を使用していますDebian 8 linux

一部のIPアドレスグループを除いて、ほとんどのIPアドレスからいくつかのポートへの着信アクセスをブロックしようとしています。次のことをしていますが、うまくいかないようです。

% sudo /sbin/iptables -v -A INPUT -p tcp -m set '!' --match-set allow-list src -m multiport --dports 110,143,993,995 -j DROP

にないIPアドレスからこれらのポートにアクセスしようとするたびに、allow-listその試みは成功し続けます。

以下は最初の数行ですallow-list

% sudo /sbin/ipset list allow-list
Name: allow-list
Type: hash:net
Revision: 6
Header: family inet hashsize 16384 maxelem 262144
Size in memory: 687888
References: 2
Members:
125.8.0.0/13
160.94.0.0/15
104.37.68.0/22
205.233.22.0/23
[ ... more CIDR entries ... ]

現在のiptables設定は次のとおりです。

% sudo /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             ! match-set allow-list src multiport dports pop3,imap2,imaps,pop3s

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

私は何が間違っていましたか?

よろしくお願いします。

答え1

今私が何を間違っているのか気づきました。次の修正は私にとって効果的でした。

% sudo /sbin/iptables -v -I INPUT -p tcp -m multiport --dports 110,143,993,995                                   -j DROP
% sudo /sbin/iptables -v -I INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allow-list src -j ALLOW

つまり、まず許可するそのIPはallow-listポートリストを介してアクセス可能であり、それからこのポートのリストからアクセスしたい他のすべてのIPを削除します。

-p tcpまた、最初はTCPポートの処理に必要なオプションを省略しました。

修正する-A INPUT:上記で誤って使用されていることがわかりました。正しいものに変更しました-I INPUT

追加アップデート:...そして、については-Iルールを変更する必要があります。この場合、以前に定義する必要がありますDROPALLOW

関連情報