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).
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:
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, 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/*
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!