Сервер: 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 log ничего не показывает
nft nac log (не принят) говорит:
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 говорит: Connection timed out.
Видимо, nftables не принимает порт 25, хотя должен. Я не понимаю, почему.
Что происходит?
Чтобы проверить, что происходит, я поместил следующий код в 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.
После внесения этих изменений я обнаружил, что dport и sport в цепочке INPUT и OUTPUT были неверными. Это работает после изменения в:
Для цепочки INPUT
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Для цепочки OUTPUT
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
Или, по крайней мере, эти две строки срабатывают при отправке и получении электронной почты.
Чего мне действительно не хватает это подробный обзор работы брандмауэра. Большая часть информации посвящена вставке правил в конфигурацию и "это должно работать". Я хотел бы получить реальное понимание работы брандмауэра, чтобы я мог быстро находить ошибки. Есть ли хороший сайт или книга, которую вы можете порекомендовать? Спасибо!
Ваш журнал показывает, что пакет покидает ваш интерфейс Ethernet (OUTPUT) с портом назначения 25. То, что ваш брандмауэр разрешает в цепочке OUTPUT, это пакеты с TCP source портом 25.
Что вы, вероятно, хотите сделать - вместо фильтрации по источнику порта в выходной цепочке - это разрешить исходящие соединения, связанные с существующими (отслеживаемыми) соединениями.
То, что вы, вероятно, планировали, но еще не добавили в правила брандмауэра - это правило OUTGOING, которое позволяет вам отправлять исходящую почту - это TCP соединения с портом назначения 25.