Server: Debian Buster.
In nftables.conf habe ich:
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"
}
Wenn ich eine E-Mail über Dovecot / Postfix versende,
NFT SMTP-Protokoll zeigt nichts an
nft nac log (nicht akzeptiert) sagt:
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 sagt: Zeitüberschreitung bei der Verbindung.
Anscheinend akzeptiert nftables Port 25 nicht, obwohl es das sollte. Ich verstehe nicht, warum.
Was läuft schief?
Antwort1
Ihr Protokoll zeigt ein PaketVerlassenIhre Ethernet-Schnittstelle (OUTPUT) mit einemZielPort 25. Was Ihre Firewall in der OUTPUT-Kette zulässt, sind Pakete mit einem TCPQuelleHafen von 25.
Was Sie wahrscheinlich tun möchten - anstatt zu filtern nachQuellePort in der Ausgabekette – dient dazu, ausgehende Verbindungen zuzulassen, die mit vorhandenen (verfolgten) Verbindungen verknüpft sind.
Was Sie wahrscheinlich beabsichtigt haben, aber noch nicht zu Ihren Firewall-Regeln hinzugefügt haben, ist eine OUTGOING-Regel, die Ihnen das Senden ausgehender E-Mails ermöglicht - das wären TCP-Verbindungen mit einemZielHafen von 25.
Antwort2
Um zu überprüfen, was passiert, habe ich den folgenden Code in nftables.conf eingefügt
Für die INPUT-Kette
tcp sport { 25,465,587} log prefix "nft smtp1: " accept
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Für die OUTPUT-Kette
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
tcp sport { 25,465,587} log prefix "nft smtp4: " accept
In /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
Nach
service rsyslog restart
Und
systemctl restart nftables
Ich kann die E-Mail mit der Firewall testen und erhalte detaillierte Debuginformationen in den Protokolldateien. Dann kann ich sehen, welche E-Mail-Aktivität welche Nftable-Regel auslöst.
Nachdem ich diese Änderungen vorgenommen hatte, stellte ich fest, dass dport und sport in der INPUT- und OUTPUT-Kette falsch waren. Es funktionierte, nachdem ich es geändert hatte in:
Für die INPUT-Kette
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Für die OUTPUT-Kette
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
Oder zumindest wurden diese beiden Zeilen durch das Senden und Empfangen von E-Mails ausgelöst.
Was mir wirklich fehlt ist ein ausführlicher Überblick über die Funktionsweise der Firewall. Die meisten Informationen beziehen sich auf das Einfügen von Regeln in die Konfiguration und das „sollte funktionieren“. Ich möchte die Firewall wirklich verstehen, damit ich Fehler schnell finden kann. Gibt es eine gute Website oder ein Buch, das Sie empfehlen können? Danke!