Servidor: Debian Buster.
Em nftables.conf eu tenho:
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"
}
Quando envio um e-mail pelo Dovecot/Postfix,
log nft smtp não mostra nada
log nft nac (não aceito) diz:
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 diz: A conexão expirou.
Aparentemente, o nftables não aceita a porta 25, embora deveria. Eu não entendo o porquê.
O que está errado?
Responder1
Seu log mostra um pacotesaindosua interface Ethernet (OUTPUT) com umdestinoporta 25. O que seu firewall está permitindo na cadeia OUTPUT são pacotes com um TCPfonteporto de 25.
O que você provavelmente deseja fazer - em vez de filtrar porfonteporta na cadeia de saída - permite conexões de saída associadas a conexões existentes (rastreadas).
O que você provavelmente pretendia, mas ainda não adicionou às suas regras de firewall, é uma regra OUTGOING que permite enviar e-mails de saída - que seriam conexões TCP com umdestinoporto de 25.
Responder2
Para verificar o que está acontecendo, coloquei o seguinte código em nftables.conf
Para a cadeia INPUT
tcp sport { 25,465,587} log prefix "nft smtp1: " accept
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Para a cadeia OUTPUT
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
tcp sport { 25,465,587} log prefix "nft smtp4: " accept
Em /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
Depois
service rsyslog restart
e
systemctl restart nftables
Posso testar o email com o firewall e obter informações detalhadas de depuração nos arquivos de log. Então posso ver qual atividade de e-mail aciona qual regra nftável.
Depois de fazer essas alterações, descobri que dport e sport estavam errados na cadeia INPUT e OUTPUT. Funciona depois de alterá-lo em:
Para a cadeia INPUT
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Para a cadeia OUTPUT
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
Ou pelo menos essas duas linhas foram acionadas pelo envio e recebimento de e-mail.
O que realmente estou sentindo falta é uma visão geral completa do funcionamento do firewall. A maioria das informações é sobre a inserção de regras na configuração e o 'deve funcionar'. Gostaria de ter um entendimento real do firewall, para poder encontrar erros rapidamente. Existe um bom site ou livro que você possa recomendar? Obrigado!