サーバー: Debian Buster。
nftables.conf には次の内容があります:
chain INPUT {
..
tcp dport { 25,465,587,993} log prefix "nft smtp: " accept comment "accept SMTP, SMTPS, IMAPS"
..
log prefix "nft nac: " comment "not accepted"
}
chain OUTPUT
{
..
tcp sport { 25,465,587, 993} log prefix "nft smtp: " accept comment "accept SMTP, SMTPS, IMAPS"
..
log prefix "nft nac: " comment "not accepted"
}
Dovecot / Postfix経由でメールを送信すると、
nft smtp ログに何も表示されない
nft nac ログ (受け入れられません) には次のように書かれています:
IN= OUT=eth0 SRC=188.166.29.7 DST=159.65.66.140 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=41257 DF PROTO=TCP SPT=58228 DPT=25
mail.info には次のように表示されます: 接続がタイムアウトしました。
どうやら nftables はポート 25 を受け入れないようです。受け入れるべきですが。理由はわかりません。
何が問題なのですか?
答え1
ログにパケットが表示されます出発イーサネットインターフェース(出力)を行き先ポート25。ファイアウォールがOUTPUTチェーンで許可しているのは、TCPポート25のパケットです。ソース25のポート。
あなたがおそらくやりたいこと - フィルタリングする代わりにソース出力チェーンのポート - 既存の (追跡された) 接続に関連付けられた送信接続を許可します。
おそらくあなたが意図しているが、ファイアウォールルールにまだ追加していないのは、送信メールを送信できるようにする送信ルールです。これは、行き先25のポート。
答え2
何が起こっているかを確認するために、nftables.confに次のコードを入れました。
INPUTチェーンの場合
tcp sport { 25,465,587} log prefix "nft smtp1: " accept
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
OUTPUTチェーンの場合
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
tcp sport { 25,465,587} log prefix "nft smtp4: " accept
/etc/rsyslog.d/10-nftables.conf内
:msg, contains, "nft smtp1" -/var/log/nft_smtp1.log
:msg, contains, "nft smtp2" -/var/log/nft_smtp2.log
:msg, contains, "nft smtp3" -/var/log/nft_smtp3.log
:msg, contains, "nft smtp4" -/var/log/nft_smtp4.log
:msg, contains, "nft nac" -/var/log/nft_not_accepted.log
&stop
後
service rsyslog restart
そして
systemctl restart nftables
ファイアウォールを使用して電子メールをテストし、ログ ファイルに詳細なデバッグ情報を取得できます。次に、どの電子メール アクティビティがどの nftable ルールをトリガーするかを確認できます。
これらの変更を行った後、INPUT と OUTPUT チェーン内の dport と sport が間違っていることがわかりました。次のように変更すると動作します。
INPUTチェーンの場合
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
OUTPUTチェーンの場合
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
または、少なくともこれらの 2 行は、電子メールの送受信によってトリガーされました。
私が本当に見逃しているもの ファイアウォールの仕組みを詳細に説明しています。ほとんどの情報は、設定にルールを挿入して「動作するはず」というものです。ファイアウォールを本当に理解して、エラーをすばやく見つけられるようにしたいです。お勧めのサイトや本はありますか? よろしくお願いします!