Servidor: Debian Buster.
En nftables.conf tengo:
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"
}
Cuando envío un correo electrónico a través de Dovecot/Postfix,
El registro nft smtp no muestra nada
nft nac log (no aceptado) dice:
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 dice: Se agotó el tiempo de conexión.
Aparentemente, nftables no acepta el puerto 25, aunque debería hacerlo. No entiendo porque.
¿Qué está pasando mal?
Respuesta1
Su registro muestra un paquetepartidasu interfaz Ethernet (SALIDA) con undestinopuerto de 25. Lo que su firewall permite en la cadena de SALIDA son paquetes con un TCPfuentepuerto de 25.
Lo que probablemente quieras hacer, en lugar de filtrar porfuentepuerto en la cadena de salida: permite conexiones salientes asociadas con conexiones existentes (seguidas).
Lo que probablemente pretendía pero aún no ha agregado a las reglas de su firewall es una regla SALIENTE que le permita enviar correo saliente: serían conexiones TCP con undestinopuerto de 25.
Respuesta2
Para comprobar lo que está pasando, puse el siguiente código en nftables.conf
Para la cadena de ENTRADA
tcp sport { 25,465,587} log prefix "nft smtp1: " accept
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Para la cadena de SALIDA
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
tcp sport { 25,465,587} log prefix "nft smtp4: " accept
En /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
Después
service rsyslog restart
y
systemctl restart nftables
Puedo probar el correo electrónico con el firewall y obtener información detallada de depuración en los archivos de registro. Entonces puedo ver qué actividad de correo electrónico desencadena qué regla nftable.
Después de realizar estos cambios, descubrí que dport y sport estaban mal en las cadenas de ENTRADA y SALIDA. Funciona después de cambiarlo en:
Para la cadena de ENTRADA
tcp dport { 25,465,587} log prefix "nft smtp2: " accept
Para la cadena de SALIDA
tcp dport { 25,465,587} log prefix "nft smtp3: " accept
O al menos estas dos líneas se activaron al enviar y recibir correo electrónico.
lo que realmente me falta Es una descripción detallada del funcionamiento del firewall. La mayor parte de la información trata sobre la inserción de reglas en la configuración y "debería funcionar". Me gustaría tener un conocimiento real del firewall para poder encontrar errores rápidamente. ¿Existe algún buen sitio o libro que puedas recomendar? ¡Gracias!