GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo proteger sus servicios de correo electrónico de Linux con SSL/TLS

Tradicionalmente, los servicios de correo electrónico envían datos sin protección, ya sea que envíe correos electrónicos a través de SMTP o los reciba a través de IMAP o POP, los valores predeterminados son en texto no cifrado. Con más aplicaciones en línea que imponen el cifrado y el consenso general para proteger sus datos, es mejor proteger sus servicios de correo electrónico con un certificado de seguridad de Capa de conexión segura/Seguridad de la capa de transporte (SSL/TLS).

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Primero, 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) mediante el puerto TCP 25. Este protocolo envía correos electrónicos de un servidor a otro según 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 mediante uno de dos servicios:Protocolo de acceso a mensajes de Internet (IMAP) mediante el puerto TCP 143 o Protocolo de oficina postal (POP3) mediante el puerto TCP 110. Todos estos servicios, de forma predeterminada, envíe su correo electrónico y autenticación a/desde estos servicios en texto sin formato, ¡por lo tanto, está muy desprotegido!

Para proteger los datos de correo electrónico y la autenticación, estos servicios han agregado una función de seguridad en la que pueden utilizar un certificado SSL/TLS para encriptar el flujo de datos y la comunicación. La forma en que el cifrado SSL/TLS protege la información está más allá del alcance de este artículo, pero el artículo sobre seguridad en Internet de Bryant Son lo cubre con gran detalle. En un alto nivel, el cifrado SSL/TLS es un algoritmo de cifrado público/privado.

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

Generar certificados SSL/TLS

Los certificados SSL/TLS se pueden generar de forma gratuita utilizando herramientas como OpenSSL, o se pueden comprar por una variedad de precios de las autoridades de certificación (CA) públicas. En el pasado, generar su propio certificado era fácil y funcionaba en la mayoría de los casos, pero con la creciente demanda de mayor 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 su caso de uso es privado o para pruebas, entonces tiene sentido ahorrar dinero con un certificado autogenerado. Pero si está implementando esto para un grupo grande o tiene clientes que pagan, entonces es mejor que compre un certificado de una empresa pública y confiable que los venda.

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

$ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr

Este comando creará una nueva CSR y una clave privada al mismo tiempo para el servicio que intenta proteger. El proceso le hará una serie de preguntas asociadas con el certificado:detalles de la ubicación, nombre de dominio completo del servidor (FQDN), información de contacto de correo electrónico, etc. Una vez que haya completado la información, se generará la clave y la CSR.

Si genera su propio certificado

Si desea generar su propio certificado, debe crear su propia CA raíz antes de ejecutar el comando CSR anterior. Puede crear su propia CA raíz con:

$ openssl genrsa -des3 -out myCA.key 2048

Se le pedirá que agregue una frase de contraseña. Proporcione una frase de contraseña segura y no la pierda:esta es su clave de CA raíz privada y, como su nombre indica, es la raíz de toda confianza en sus certificados.

A continuación, genere el certificado CA raíz:

$ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

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

Con el archivo CSR de los pasos anteriores, puede solicitar que la CA raíz que acaba de crear genere y firme un nuevo certificado:

$ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256

Ingrese su frase de contraseña de clave de CA raíz privada para crear y firmar el certificado.

Ahora tiene los dos archivos necesarios para configurar sus servicios de correo electrónico para mejorar la seguridad:el archivo de clave privada, mail.mydomain.key y el archivo de certificado público, mail.mydomain.pem .

Si compra un certificado

Si compra un certificado de un proveedor, le pedirá que cargue ese CSR en su 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 descargue un certificado intermedio. Si este es el caso, debe combinar los dos archivos de certificado en uno, para que el servicio de correo electrónico pueda procesarlos a la vez. Puede combinar su certificado con un certificado intermedio de terceros con:

$ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem

Observe que la extensión del archivo de salida es .pem , que significa correo con privacidad mejorada.

Ahora tiene los dos archivos que necesita para configurar sus servicios de correo electrónico para mejorar la seguridad:el archivo de clave privada, mail.mydomain.key y el archivo de certificado público combinado, mail.mydomain.pem .

Crea un directorio seguro para tus archivos

Ya sea que haya creado su propia clave o haya comprado una de un proveedor, cree un directorio seguro de propiedad raíz para los dos archivos que creó anteriormente. Un flujo de trabajo de ejemplo para crear un juego seguro sería:

$ mkdir /etc/pki/tls
$ chown root:root /etc/pki/tls
$ chmod 700 /etc/pki/tls

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

$ chmod 600 /etc/pki/tls/*

Configure sus servicios SMTP e IMAP

A continuación, configure 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 palomar .

Editar / etc / postfix/main.cf en su editor de texto preferido. Agregue las siguientes líneas:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.mydomain.pem
smtpd_tls_key_file = /etc/pki/tls/mail.mydomain.key

Personaliza tu configuración

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

smtpd_tls_eecdh_grade = strong
smtpd_tls_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_security_level=may
smtpd_tls_ciphers = high
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtpd_tls_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

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

ssl = required
ssl_cert = </etc/pki/tls/mail.mydomain.pem
ssl_key = </etc/pki/tls/mail.mydomain.key

Agregue las siguientes opciones para deshabilitar/habilitar diferentes cifrados, protocolos y más (dejaré que usted entienda y considere esto):

ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SSLv2
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1
ssl_min_protocol = TLSv1.2

Establecer contexto para SELinux

Si su distribución de Linux tiene habilitado SELinux, configure el contexto de SELinux correcto para sus nuevos archivos de certificado.

Para Postfix SELinux:

$ chcon -u system_u -t cert_t mail.mydomain.*

Para Dovecot SELinux:

$ chcon -u system_u -t dovecot_cert_t mail.mydomain.*

Reinicie ambos servicios y conéctese con las configuraciones actualizadas de su 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.

Prueba tu configuración

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

$ openssl s_client -connect mail.mydomain.com:993
$ openssl s_client -starttls imap -connect mail.mydomain.com:143
$ openssl s_client -starttls smtp -connect mail.mydomain.com:587

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 solo es una buena manera de validar que la nueva configuración funciona, sino también de confirmar que está utilizando el certificado adecuado y la configuración de seguridad que definió en el postfix o palomar archivos de configuración.

¡Mantente seguro!


Linux
  1. Cómo asegurar una cuenta habilitada para cPanel con un certificado Lets Encrypt SSL

  2. Cómo proteger una cuenta habilitada para cPanel con un certificado SSL de Sectigo

  3. Cómo administrar los certificados Lets Encrypt SSL/TLS con certbot

  4. Cómo administrar los servicios de Systemd con Systemctl en Linux

  5. Cómo asegurar conexiones con certificados SSL/TLS

¿Cómo instalar el certificado SSL/TLS gratuito de Let’s Encrypt en su(s) dominio(s) con cPanel?

Cómo proteger el socket TCP de Docker con TLS

Cómo comprobar la fecha de caducidad de SSL en Plesk

Cómo monitorear sus servidores Linux con Checkmk

Cómo proteger Nginx con el certificado SSL de Let's Encrypt

Cómo proteger un firewall de Linux con reglas de IPTables

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