nftables не принимает порт 25. Почему?

Сервер: 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, хотя должен. Я не понимаю, почему.

Что происходит?

1
задан 6 January 2021 в 16:05
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.

После внесения этих изменений я обнаружил, что 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

Или, по крайней мере, эти две строки срабатывают при отправке и получении электронной почты.

Чего мне действительно не хватает это подробный обзор работы брандмауэра. Большая часть информации посвящена вставке правил в конфигурацию и "это должно работать". Я хотел бы получить реальное понимание работы брандмауэра, чтобы я мог быстро находить ошибки. Есть ли хороший сайт или книга, которую вы можете порекомендовать? Спасибо!

0
ответ дан 24 April 2021 в 00:49

Ваш журнал показывает, что пакет покидает ваш интерфейс Ethernet (OUTPUT) с портом назначения 25. То, что ваш брандмауэр разрешает в цепочке OUTPUT, это пакеты с TCP source портом 25.

Что вы, вероятно, хотите сделать - вместо фильтрации по источнику порта в выходной цепочке - это разрешить исходящие соединения, связанные с существующими (отслеживаемыми) соединениями.

То, что вы, вероятно, планировали, но еще не добавили в правила брандмауэра - это правило OUTGOING, которое позволяет вам отправлять исходящую почту - это TCP соединения с портом назначения 25.

1
ответ дан 24 April 2021 в 00:49

Теги

Похожие вопросы