私は走ってDebian 8.11
いますiptables v1.4.21
。ipset v6.23, protocol version: 6
小さなホストサブセットを除くすべてのホストが特定のポートへのアクセスをブロックしようとしても機能しないようです。
まず、小さなIPアドレスセットをipset
というリストに入れましたallowed-hosts
。その後、実行後に次のコマンドを実行しますsudo /sbin/iptables -F
。sudo /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=anywhere
allowed-hosts
source=anywhere
destination=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
結局、うまくいくことがわかりました。このような虚偽のアラームのため、本当に申し訳ありません。
次の理由で動作しないと誤って考えました。
私はpostfix
andを使用しており、これに認証サービスをdovecot
設定しました。postfix
dovecot
dovecot
デバッグとログメッセージをというファイルに書き込むように設定し、経由でログするように/var/log/mailclient.log
設定postfix
しましたsyslog
。
私はそれを深く考えておらず、認証を実行するファイルなので、認証しようとしたときにpostfix
同じログファイルにエントリが表示されることを忘れていました。dovecot
dovecot
postfix
私は私のルールを使ってポート110、143、993、995をiptables
ブロックし、ポートをブロックしません。pop3
imap
postfix
認証の設定方法に応じて、ファイルにはpostfix
すべて/var/log/mailclient.log
のpostfix
ログイン試行とdovecot
ログイン試行のエントリが含まれます。私はこのログファイルからこれらのエントリを読むときにあまり注意を払っていませんpop3
でした。だから私はブロックしていないこれらのログイン試行をログイン試行と間違えました。imap
smtp
smtp
pop3
imap
私のエラーを理解した後、私のログファイルをより詳細に調べて分析し、実際にdovecot
私が置いたホストの小さなサブセットから発生するファイル以外にはpop3
何もないことに気づきました。どの接続も鳩に到達しません。imap
「許可されたホスト」のipset
リスト。
だからiptables
上記の項目ははい最終的にはうまくいきます。
間違った肯定についてもう一度お詫び申し上げます。これが効いていて幸いです。
おそらく、この質問と議論が将来私のような間違いを犯す可能性がある人に役立つかもしれません。