Сервер: 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 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 сообщает: Время ожидания соединения истекло.
Видимо nftables не принимает порт 25, хотя должен. Не понимаю почему.
Что не так?
решение1
Ваш журнал показывает пакетуходваш интерфейс Ethernet (ВЫХОД) сместо назначенияпорт 25. Ваш брандмауэр разрешает в цепочке OUTPUT пакеты с TCPисточникпорт 25.
Что вы, скорее всего, захотите сделать — вместо фильтрации поисточникпорт в выходной цепочке — позволяет исходящим соединениям, связанным с существующими (отслеживаемыми) соединениями.
Скорее всего, вы хотели добавить в правила брандмауэра, но еще не добавили ИСХОДЯЩЕЕ правило, которое позволяет отправлять исходящую почту — это будут TCP-соединения сместо назначенияпорт 25.
решение2
Чтобы проверить, что происходит, я поместил следующий код в nftables.conf
Для цепочки ВХОДА
tcp sport { 25,465,587} log prefix "nft smtp1: " accept
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Для цепочки ВЫХОДА
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 были неправильными. Это работает после внесения изменений в:
Для цепочки ВХОДА
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Для цепочки ВЫХОДА
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
Или, по крайней мере, эти две строки были вызваны отправкой и получением электронной почты.
Чего мне действительно не хватает — это подробный обзор работы брандмауэра. Большая часть информации посвящена вставке правил в конфигурацию и «это должно работать». Мне бы хотелось получить реальное понимание брандмауэра, чтобы я мог быстро находить ошибки. Есть ли хороший сайт или книга, которые вы можете порекомендовать? Спасибо!