Cómo asegurar tus servicios de correo electrónico Linux con SSL/TLS

Debes proteger tus servicios de correo electrónico de Linux mediante la comprensión de los certificados de seguridad.

Tradicionalmente, los servicios de correo electrónico envían datos de manera desprotegida. Esto ya sea que envíes correos electrónicos a través de SMTP o los recibas a través de IMAP o POP, los valores predeterminados están en texto plano.

Con más aplicaciones en línea que imponen el cifrado y el consenso general para proteger tus datos, lo mejor es proteger tus servicios de correo electrónico. Lo ideal es hacerlo con un certificado de seguridad Secure Sockets Layer/Transport Layer Security (SSL/TLS).

Protocolos

Primero, haremos una revisión rápida de los servicios y protocolos de correo electrónico. El correo electrónico se envía a través de un servicio llamado Protocolo simple de transporte de correo (SMTP) utilizando el puerto TCP 25.

Este protocolo envía correos electrónicos de un servidor a otro en función de las búsquedas de registros del intercambiador de correo DNS (MX). Una vez que un correo electrónico está en el servidor de correo electrónico, se recupera usando uno de dos servicios. Puede usar el Protocolo de acceso a mensajes de Internet (IMAP) usando el puerto TCP 143, o Protocolo de oficina postal (POP3) usando el puerto TCP 110.

Todos estos servicios, por defecto, envían tu correo electrónico y autenticación a/desde estos servicios en texto plano, por lo tanto, ¡estás muy desprotegido!

Para proteger los datos y la autenticación del correo electrónico, estos servicios han agregado una característica de seguridad. En esta característica pueden utilizar un certificado SSL/TLS para proteger el flujo de datos y la comunicación con cifrado.

La forma en que el cifrado SSL/TLS asegura la información está más allá del alcance de este artículo. Empero, este artículo sobre seguridad que hemos escrito anteriormente lo cubre con gran detalle. En un nivel alto, el cifrado SSL/TLS es un algoritmo de cifrado público/privado.

Al agregar estas características de seguridad a los servicios, pueden escuchar en los nuevos puertos TCP:

Servicio Puerto TCP predeterminado Puerto SSL/TLS
SMTP 25 587
IMAP 143 993
POP3 110 995

Generar certificados SSL/TLS

Los certificados SSL/TLS se pueden generar de forma gratuita utilizando herramientas como OpenSSL. También se pueden comprar por un rango de precios de las autoridades públicas de certificación (CA).

En el pasado, generar tu propio certificado era fácil y funcionaba en la mayoría de los casos. Pero con la creciente demanda de una mejor seguridad, la mayoría de los clientes de correo electrónico no confían en los certificados SSL/TLS autogenerados sin una excepción manual.

Si tu caso de uso es privado o para pruebas, tiene sentido ahorrar dinero con un certificado autogenerado. Pero si estás extendiendo esto a un grupo grande o tienes clientes que pagan, entonces será mejor que compres un certificado. Los puedes comprar de una compañía pública y confiable que los venda.

En cualquier caso, el proceso para comenzar a solicitar un nuevo certificado es utilizar las herramientas OpenSSL en tu sistema Linux. La usarás para crear una solicitud de firma de certificado (CSR):

Este comando creará una nueva CSR y una clave privada al mismo tiempo para el servicio que estás intentando proteger.

El proceso te hará una serie de preguntas asociadas con el certificado. Te preguntará detalles de ubicación, nombre de dominio completo del servidor (FQDN), información de contacto de correo electrónico, etc.

Una vez que hayas completado la información, se generará la clave y la CSR.

Si generas tu propio certificado

Si deseas generar tu propio certificado, debes crear tu propia autoridad de certificación (CA) raíz antes de emitir el comando CSR anterior. Puedes crear tu propia CA raíz con:

Te pedirá que agregues una frase de contraseña. Proporciona una frase de contraseña segura y no la pierdas. Esta es tu clave de certificado raíz privada y, como su nombre lo indica, es el root de confianza en tus certificados.

A continuación, debes generar el certificado de CA raíz:

Después de responder algunas preguntas más, generarás un certificado de CA raíz con una vida útil de cinco años.

Usando el archivo CSR de los pasos anteriores, puedes solicitar que la CA raíz que acabas de crear genere y firme un nuevo certificado:

Debes ingresar tu frase de contraseña de clave de CA raíz privada para crear y firmar el certificado.

Ahora tienes los dos archivos necesarios para configurar tus servicios de correo electrónico para una mayor seguridad. El archivo de clave privada, mail.mydomain.key, y el archivo de certificado público, mail.mydomain.pem.

Si compras un certificado

Si compras un certificado de un proveedor, te pedirá que cargues esa CSR en tu sistema, ya que se utiliza como entrada para generar el certificado SSL/TLS. Se podrá acceder al certificado como un archivo (como mail.mydomain.pem).

Muchos proveedores de SSL también requieren que descargues un certificado intermedio. Si este es el caso, debes combinar los dos archivos de certificado en uno, para que el servicio de correo electrónico pueda procesarlos en combinación. Puedes combinar tu certificado con un certificado intermedio de terceros con:

Ten en cuenta que la extensión del archivo de salida es .pem, que significa Privacy-Enhanced Mail.

Ahora tienes los dos archivos que necesitas para configurar tus servicios de correo electrónico para una mayor seguridad. El archivo de clave privada, mail.mydomain.key, y el archivo de certificado público combinado, mail.mydomain.pem.

Crear un directorio seguro para tus archivos

Ya sea que hayas creado tu propia clave o hayas comprado una de un proveedor, debes crear un directorio seguro. Debe ser propiedad de root para los dos archivos que creaste anteriormente. Un flujo de trabajo de ejemplo para crear una jugada segura sería:

Asegúrate de establecer los permisos en tus archivos después de copiarlos en /etc/pki/tls con:

Configurar tus servicios SMTP e IMAP

A continuación, debes configurar los servicios SMTP e IMAP para usar los nuevos certificados de seguridad. Los programas utilizados en este ejemplo para SMTP e IMAP son postfix y dovecot.

Debes editar /etc/postfix/main.cf en tu editor de texto preferido. Agrega las siguientes líneas:

Personalizar tu configuración

Las siguientes opciones te permiten deshabilitar/habilitar diferentes cifrados, protocolos, etc.:

Debes editar/etc/dovecot/dovecot.conf agregando estas tres líneas:

Agregue las siguientes opciones para deshabilitar/habilitar diferentes cifrados, protocolos y más (te dejaré entendiendo y considerando esto):

Establecer contexto para SELinux

Si tu distribución de Linux tiene habilitado SELinux, debes establecer el contexto SELinux correcto para tus nuevos archivos de certificado.

Para Postfix SELinux:

Para Dovecot SELinux:

Debes reiniciar ambos servicios y conectarte con tus configuraciones actualizadas de cliente de correo electrónico. Algunos clientes de correo electrónico detectarán automáticamente los nuevos números de puerto; otros requerirán que los actualices.

Pon a prueba tu configuración

Prueba rápidamente desde la línea de comandos con openssl y el complemento s_client:

Estos comandos de prueba mostrarán una gran cantidad de datos sobre la conexión, el certificado, el cifrado, la sesión y el protocolo que está utilizando.

Esta no es solo una buena manera de validar que la nueva configuración está funcionando, sino también de confirmar que estás utilizando la configuración de certificado. Asimismo, la seguridad adecuada que definiste en los archivos de configuración postfix o dovecot.

¡Mantente seguro!