iptablesはポートを介したアクセスをブロックしませんか?

iptablesはポートを介したアクセスをブロックしませんか?

私は走ってDebian 8.11いますiptables v1.4.21ipset v6.23, protocol version: 6

小さなホストサブセットを除くすべてのホストが特定のポートへのアクセスをブロックしようとしても機能しないようです。

まず、小さなIPアドレスセットをipsetというリストに入れましたallowed-hosts。その後、実行後に次のコマンドを実行しますsudo /sbin/iptables -Fsudo /sbin/iptables -X

sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -j DROP
sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT

ただし、これを実行した後も存在しないIPアドレスのクライアントは、指定されたすべてのポートallowed-hostsに正常に接続できます。

iptables他の有効なルールはありません。

sudo /sbin/iptables -L以下はその結果です。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             multiport dports pop3,imap2,imaps,pop3s match-set allowed-hosts src
DROP       tcp  --  anywhere             anywhere             multiport dports pop3,imap2,imaps,pop3s

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

sudo /sbin/iptables-saveこれは次の結果です。

# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*security
:INPUT ACCEPT [16777464:2727427757]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*raw
:PREROUTING ACCEPT [21444955:3000669583]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*mangle
:PREROUTING ACCEPT [21444955:3000669583]
:INPUT ACCEPT [21444952:3000669415]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
:POSTROUTING ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*filter
:INPUT ACCEPT [2130649:527089827]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4465281:1887206637]
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -j DROP
COMMIT
# Completed on Wed Jun  8 11:53:09 2022

私は何を間違えることができましたか?

よろしくお願いします。

**修正する**

まず、以下のコメントの提案とは異なり、「src」が実際に指定されました。上記の「...src -j ACCEPT」行に表示されます。

第二に、このコマンドで使用された構文は、Web検索で見つかったiptables文書とディスカッションに示されているものから来ました。iptables

第三に、上記の出力を見てくださいiptables -L。これはsource=anywhere、リストのIPアドレスに対してポート間接続を許可する必要があることを明確に示しています。これはまた、次のIPアドレスに対してポート接続を削除する必要があることを明確に示しています。destination=anywhereallowed-hostssource=anywheredestination=anywhereいいえallowed-hostsリストにあります。

少なくともそれはiptables私に言うようです。ただし、allowed-hostsマイコンピュータはリストにないIPアドレスからこれらのポートへの接続を引き続き許可します。

また、これを行うと、ipset test allowed-hosts aaa.bbb.ccc.ddd「aaa.bbb.ccc.ddd」はIPアドレスを表します。いいえでは、allowed-hosts次の出力が正しく表示されます。

aaa.bbb.ccc.ddd is NOT in set allowed-hosts.

これにより、ipset test allowed-hosts www.xxx.yyy.zzz「www.xxx.yyy.zzz」はIPアドレスを表します。はいでは、allowed-hosts次の出力が正しく表示されます。

www.xxx.yyy.zzz is in set allowed-hosts.

上記の出力を見ると、iptables-save私の設定にこれらのポート接続が許可されない可能性がある他のものはありますかallowed-hosts

よろしくお願いします。

答え1

結局、うまくいくことがわかりました。このような虚偽のアラームのため、本当に申し訳ありません。

次の理由で動作しないと誤って考えました。

私はpostfixandを使用しており、これに認証サービスをdovecot設定しました。postfixdovecot

dovecotデバッグとログメッセージをというファイルに書き込むように設定し、経由でログするように/var/log/mailclient.log設定postfixしましたsyslog

私はそれを深く考えておらず、認証を実行するファイルなので、認証しようとしたときにpostfix同じログファイルにエントリが表示されることを忘れていました。dovecotdovecotpostfix

私は私のルールを使ってポート110、143、993、995をiptablesブロックし、ポートをブロックしません。pop3imappostfix

認証の設定方法に応じて、ファイルにはpostfixすべて/var/log/mailclient.logpostfixログイン試行とdovecotログイン試行のエントリが含まれます。私はこのログファイルからこれらのエントリを読むときにあまり注意を払っていませんpop3でした。だから私はブロックしていないこれらのログイン試行をログイン試行と間違えました。imapsmtpsmtppop3imap

私のエラーを理解した後、私のログファイルをより詳細に調べて分析し、実際にdovecot私が置いたホストの小さなサブセットから発生するファイル以外にはpop3何もないことに気づきました。どの接続も鳩に到達しません。imap「許可されたホスト」のipsetリスト。

だからiptables上記の項目ははい最終的にはうまくいきます。

間違った肯定についてもう一度お詫び申し上げます。これが効いていて幸いです。

おそらく、この質問と議論が将来私のような間違いを犯す可能性がある人に役立つかもしれません。

関連情報