Mejorar la seguridad de nuestro Postfix (parte 16)

Tras la publicación anterior de un Completo servidor de correo en Debian 9 – Índice de contenidos, en donde se pone especial cuidado en la seguridad del servicio ( aunque como todo en la vida, es mejorable ? ), explicamos en esta entrada como mejorar la configuración de nuestro Postfix con una serie de cambios que afecta a su configuración y a las consultas que hace a la base de datos del Backend.

OJOCUIDADO!!! Tener en cuenta que partimos de nuestra instalación inicial, publicada en el enlace comentado en el párrafo anterior.


Chequeo de resolución inversa (PTR)

Todo servidor de correo debe de tener, entre otras cosas, una resolución inversa configurada a nivel DNS. Es decir, que su dirección IP resuelva un dominio, el cual ha de coincidir con su resolución directa (IP->DOMINIO). De no ser así es recomendable rechazar el mensaje.

En el archivo /etc/postfix/main.cf configuramos la siguiente línea, al final de la sección smtpd_server_restrictions:

smtpd_server_restrictions =
  ...
  reject_unknown_reverse_client_hostname

Reiniciamos el servicio de Postfix con un systemctl restart postfix


Restricción HELO/EHLO

Si el servidor origen no ejecuta un comando HELO/EHLO correcto, debemos de sospechar y, por tanto, rechazar la solicitud de conexión SMTP.

Para ello configuramos las siguientes líneas en el archivo /etc/postfix/main.cf, agregando la sección smtpd_helo_required y al final de la sección smtpd_helo_restrictions:

smtpd_helo_required = yes
smtpd_helo_restrictions =
  ...
  reject_unknown_helo_hostname

Reiniciamos el servicio de Postfix con un systemctl restart postfix


Chequeo registros MX en From

Si la direcció origen del correo no dispone de un registro MX válido debemos de rechazar el mensaje, ¿por qué no rechazar emails que no vamos a poder responder?

Configuramos en el archivo /etc/postfix/main.cf la siguiente línea, al final de la sección smtpd_sender_restrictions:

smtpd_sender_restrictions =
  ...
  reject_unknown_sender_domain

Reiniciamos el servicio de Postfix con un systemctl restart postfix


Evitar email spoofing desde nuestros buzones

Una buena práctica en la administración de un servidor de correo es evitar que nuestros buzones cambien la identidad de sus envíos, es decir que se cambien el origen del correo cuando realmente están enviando desde otro buzón. Esto se le llama Email Spoofing, técnica utilizada en el envío de mensajes de Phishing o suplantaciones de identidad.

Por esta razón podemos evitar que nuestros buzones hagan uso de estas técnicas poco legítimas. Para ello configuramos la siguiente línea en nuestro archivo /etc/postfix/main.cf agregando la siguiente línea en la sección smtpd_sender_restrictions entre las líneas permit_mynetworks y permit_sasl_authenticated, y agregando la función smtpd_sender_login_maps con el chequeo a la base de datos que mostraremos más adelante:

smtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

smtpd_sender_restrictions =
  ...
  reject_sender_login_mismatch, 
  ...

Y ahora en el archivo /etc/postfix/mysql-virtual-mailbox-maps.cf modificamos el chequeo que realizábamos a la base de datos de la siguiente forma. Recordar cambiar los datos de la conexión para el ***user, password, dbname*** con lo que tengamos configurado en nuestra instalación:

user = MySQL-user
password = MySQL-pwd
hosts = 127.0.0.1
dbname = mailserverDBname
#query = SELECT 1 FROM virtual_users WHERE email='%s' and active='1'
query = SELECT email FROM virtual_users WHERE email='%s' and active='1'

Reiniciamos el servicio de Postfix con un systemctl restart postfix


Enlaces de interés

Fuente: https://www.linuxbabe.com/mail-server/block-email-spam-postfix