Compatibilidad para ejecutar SMTP con TLS en la versión 8.13 de sendmail
Las comunicaciones entre servidores y clientes SMTP, normalmente, no se controlan ni se consideran de confianza en cada extremo. Esta falta de seguridad puede permitir que un tercero supervise e incluso altere una comunicación entre un servidor y un cliente. SMTP puede utilizar la seguridad de la capa de transporte (TLS) en la versión 8.13 de sendmail para resolver este problema. Este servicio ampliado para servidores y clientes SMTP proporciona lo siguiente:
Comunicaciones autenticadas y privadas por medio de Internet
Protección contra intrusos y atacantes
Notas - La implementación de TLS se basa en el protocolo de capa de sockets seguros (SSL).
STARTTLS es la palabra clave de SMTP que inicia una conexión SMTP segura mediante TLS. Esta conexión segura puede ocurrir entre dos servidores o entre un servidor y un cliente. Una conexión segura se define de la siguiente manera:
La dirección de correo electrónico de origen y la dirección de destino están cifradas.
El contenido del mensaje de correo electrónico está cifrado.
Cuando el cliente emite el comando STARTTLS, el servidor responde con una de las siguientes acciones:
220 Ready to start TLS
501 Syntax error (no parameters allowed)
454 TLS not available due to temporary reason
La respuesta 220 requiere que el cliente inicie la negociación TLS. La respuesta 501 nota que el cliente emitió incorrectamente el comando STARTTLS. STARTTLS se emite sin parámetros. La respuesta 454 exige que el cliente aplique valores de conjunto de reglas para determinar si va a aceptar o mantener la conexión.
Tenga en cuenta que para mantener la infraestructura SMTP de Internet, los servidores de uso público no deben requerir una negociación TLS. Sin embargo, un servidor que se utiliza de manera privada puede requerir que el cliente efectúe una negociación TLS. En esos casos, el servidor devuelve esta respuesta:
530 Must issue a STARTTLS command first
La respuesta 530 indica al cliente que emita el comando STARTTLS para establecer una conexión.
El servidor o el cliente puede rechazar una conexión si el nivel de autenticación y privacidad no es adecuado. Asimismo, dado que la mayoría de las conexiones SMTP no son seguras, el servidor y el cliente pueden mantener una conexión no segura. La configuración del servidor y el cliente determina si se debe mantener o rechazar una conexión.
La compatibilidad para ejecutar SMTP con TLS no se encuentra activada de manera predeterminada. La TLS se activa cuando el cliente SMTP emite el comando STARTTLS. Antes de que el cliente SMTP pueda emitir este comando, debe configurar los certificados que permiten que sendmail utilice TLS. Consulte Cómo configurar SMTP para que utilice TLS. Tenga en cuenta que este procedimiento incluye la definición de nuevas opciones de archivo de configuración y la reconstrucción del archivo sendmail.cf.
Opciones de archivo de configuración para ejecutar SMTP con TLS
En la siguiente tabla, se describen las opciones de archivo de configuración que se utilizan para ejecutar SMTP con TLS. Si declara cualquiera de estas opciones, use una de las siguientes sintaxis:
O OptionName=argument # for the configuration file
-O OptionName=argument # for the command line
define(`m4Name',argument) # for m4 configuration
Tabla 3-11 Opciones de archivo de configuración para ejecutar SMTP con TLS | |
–CACertFile
| Nombre de m4: –confCACERT Argumento: filename Valor predeterminado: sin definir Identifica el archivo que contiene un certificado de autoridad de certificación.
|
–CACertPath
| Nombre de m4: –confCACERT_PATH Argumento: ruta Valor predeterminado: sin definir Identifica la ruta al directorio que contiene certificados de autoridades de certificación.
|
–ClientCertFile
| Nombre de m4: –confCLIENT_CERT Argumento: filename Valor predeterminado: sin definir Identifica el archivo que contiene el certificado del cliente. Tenga en cuenta que este certificado se utiliza cuando sendmail actúa como cliente.
|
–ClientKeyFile
| Nombre de m4: –confCLIENT_KEY Argumento: filename Valor predeterminado: sin definir Identifica el archivo que contiene la clave privada que pertenece al certificado del cliente.
|
–CRLFile
| Nombre de m4: –confCRL Argumento: filename Valor predeterminado: sin definir Identifica el archivo que contiene el estado de revocación del certificado, que se utiliza para la autenticación X. 509v3.
|
–DHParameters
| Nombre de m4: –confDH_PARAMETERS Argumento: filename Valor predeterminado: sin definir Identifica el archivo que contiene los parámetros Diffie-Hellman (DH).
|
–RandFile
| Nombre de m4: –confRAND_FILE Argumento: file:nombre_archivo o egd:socket UNIX Valor predeterminado: sin definir Utiliza el prefijo file: para identificar el archivo que contiene datos aleatorios o utiliza el prefijo egd: para identificar el socket de UNIX. Tenga en cuenta que, debido a que el SO Oracle Solaris admite el dispositivo generador de números random, no es necesario especificar esta opción. Consulte la página del comando man random(7D).
|
–ServerCertFile
| Nombre de m4: –confSERVER_CERT Argumento: filename Valor predeterminado: sin definir Identifica el archivo que contiene el certificado del servidor. Este certificado se utiliza cuando sendmail actúa como servidor.
|
–Timeout.starttls
| Nombre de m4: –confTO_STARTTLS Argumento: cantidad de tiempo Valor predeterminado: 1h Establece la cantidad de tiempo que el cliente SMTP espera una respuesta para el comando STARTTLS.
|
–TLSSrvOptions
| Nombre de m4: –confTLS_SRV_OPTIONS Argumento: V Valor predeterminado: sin definir Determina si el servidor solicita un certificado al cliente. Si esta opción está establecida en V, no se realiza la verificación del cliente.
|
|
Para que sendmail admita el uso de TLS del SMTP, las siguientes opciones se deben definir:
–CACertPath
–CACertFile
–ServerCertFile
–ClientKeyFile
Otras opciones no son necesarias.
Macros para ejecutar SMTP con TLS
En la tabla siguiente, se describen las macros utilizadas por el comando STARTTLS.
Tabla 3-12 Macros para ejecutar SMTP con TLS | |
${cert_issuer}
| Contiene el nombre distinguido (DN) de la autoridad de certificación (CA), que es la emisora del certificado.
|
${cert_subject}
| Contiene el DN del certificado que se denomina asunto de certificado.
|
${cn_issuer}
| Contiene el nombre común (CN) de la autoridad de certificación (CA), que es la emisora del certificado.
|
${cn_subject}
| Contiene el CN del certificado que se denomina asunto de certificado.
|
${tls_version}
| Contiene la versión de TLS que se utiliza para la conexión.
|
${cipher}
| Contiene un conjunto de algoritmos criptográficos (conocido como conjunto de cifrado) que se utiliza para la conexión.
|
${cipher_bits}
| Contiene en bits la longitud de clave del algoritmo de cifrado simétrico que se utiliza para la conexión.
|
${verify}
| Contiene el resultado de la verificación del certificado que se ha presentado. Los valores posibles son los siguientes: OK: la verificación se completó con éxito.
NO: no se presentó ningún certificado.
NOT: no se solicitó ningún certificado.
FAIL: el certificado que se presentó no se pudo verificar.
NONE: STARTTLS no se ha realizado.
TEMP: se produjo un error temporal.
PROTOCOL: se produjo un error de SMTP.
SOFTWARE: el protocolo de enlace de STARTTLS falló.
|
${server_name}
| Contiene el nombre del servidor con la conexión SMTP saliente actual.
|
${server_addr}
| Contiene la dirección del servidor con la conexión SMTP saliente actual.
|
|
Conjuntos de reglas para ejecutar SMTP con TLS
En la siguiente tabla, se describen los conjuntos de reglas que determinan si una conexión SMTP que utiliza TLS se debe aceptar, debe continuar o se debe rechazar.
Tabla 3-13 Conjuntos de reglas para ejecutar SMTP con TLS | |
tls_server
| Al actuar como un cliente, sendmail utiliza este conjunto de reglas para determinar si el servidor es actualmente admitido por TLS.
|
tls_client
| Al actuar como un servidor, sendmail utiliza este conjunto de reglas para determinar si el cliente es actualmente admitido por TLS.
|
tls_rcpt
| Este conjunto de reglas requiere la verificación del MTA del destinatario. Este restricción del destinatario hace que los ataques, como la falsificación del DNS, sean imposibles.
|
TLS_connection
| Este conjunto de reglas comprueba el requisito especificado por el RHS del mapa de acceso con los parámetros reales de la conexión TLS actual.
|
try_tls
| sendmail utiliza este conjunto de reglas para determinar la viabilidad de utilizar STARTTLS al conectarse a otro MTA. Si el MTA no puede implementar correctamente STARTTLS, STARTTLS no se utiliza.
|
|
Para obtener más información, consulte http://www.sendmail.org/m4/starttls.htmlhttp://www.sendmail.org/m4/starttls.html.
Consideraciones de seguridad relacionadas con la ejecución de SMTP con TLS
Como un protocolo de correo estándar que define servicios de envío de correo que se ejecutan por medio de Internet, SMTP no es un mecanismo de extremo a extremo. Debido a la limitación de este protocolo, la seguridad TLS mediante SMTP no incluye agentes de usuario de correo. Los agentes de usuario de correo actúan como una interfaz entre los usuarios y un agente de transferencia de correo, como sendmail.
Además, el correo podría ser enrutado mediante varios servidores. Para obtener una seguridad SMTP completa, toda la cadena de conexiones SMTP debe admitir TLS.
Por último, se debe tener en cuenta el nivel de autenticación y privacidad negociadas entre cada par de servidores o un par de cliente y servidor. Para obtener más información, consulte Capítulo 1, Uso de shell seguro (tareas) de Gestión de acceso mediante shell seguro en Oracle Solaris 11.2
.