GNU/Linux >> Tutoriels Linux >  >> Linux

Comment sécuriser vos services de messagerie Linux avec SSL/TLS

Traditionnellement, les services de messagerie envoient des données de manière non protégée. Que vous envoyiez des e-mails via SMTP ou que vous les receviez via IMAP ou POP, les valeurs par défaut sont en texte clair. Avec de plus en plus d'applications en ligne appliquant le chiffrement et le consensus général pour protéger vos données, il est préférable de sécuriser vos services de messagerie avec un certificat de sécurité SSL/TLS (Secure Sockets Layer/Transport Layer Security).

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Tout d'abord, un examen rapide des services et des protocoles de messagerie. Les e-mails sont envoyés via un service appelé Simple Mail Transport Protocol (SMTP) à l'aide du port TCP 25. Ce protocole envoie des e-mails de serveur à serveur en fonction des recherches d'enregistrements DNS mail exchanger (MX). Une fois qu'un e-mail se trouve sur le serveur de messagerie, il est récupéré à l'aide de l'un des deux services suivants :Internet Message Access Protocol (IMAP) via le port TCP 143 ou Post Office Protocol (POP3) via le port TCP 110. Tous ces services, par défaut, envoyez votre e-mail et votre authentification vers/depuis ces services en texte brut ; c'est donc très peu protégé !

Pour protéger les données de messagerie et l'authentification, ces services ont ajouté une fonction de sécurité dans laquelle ils peuvent utiliser un certificat SSL/TLS pour envelopper le flux de données et la communication avec le cryptage. La manière dont le cryptage SSL/TLS sécurise les informations dépasse le cadre de cet article, mais l'article sur la sécurité Internet de Bryant Son le couvre de manière très détaillée. À un niveau élevé, le chiffrement SSL/TLS est un algorithme de chiffrement public/privé.

En ajoutant ces fonctionnalités de sécurité aux services, ils peuvent écouter sur de nouveaux ports TCP :

Service Port TCP par défaut Port SSL/TLS
SMTP 25 587
IMAP 143 993
POP3 110 995

Générer des certificats SSL/TLS

Les certificats SSL/TLS peuvent être générés gratuitement à l'aide d'outils comme OpenSSL, ou ils peuvent être achetés à des prix divers auprès d'autorités de certification publiques (AC). Dans le passé, générer votre propre certificat était facile et fonctionnait dans la plupart des cas, mais avec la demande croissante d'une meilleure sécurité, la plupart des clients de messagerie ne font pas confiance aux certificats SSL/TLS auto-générés sans exception manuelle.

Si votre cas d'utilisation est privé ou à des fins de test, il est logique d'économiser de l'argent avec un certificat auto-généré. Mais si vous le déployez auprès d'un grand groupe ou si vous avez des clients payants, vous serez mieux servi en achetant un certificat auprès d'une entreprise publique et de confiance qui les vend.

Dans les deux cas, le processus pour commencer à demander un nouveau certificat consiste à utiliser l'outil OpenSSL sur votre système Linux pour créer une demande de signature de certificat (CSR) :

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

Cette commande créera un nouveau CSR et une clé privée en même temps pour le service que vous essayez de sécuriser. Le processus vous posera un certain nombre de questions associées au certificat :détails de l'emplacement, nom de domaine complet (FQDN) du serveur, informations de contact par e-mail, etc. Une fois que vous aurez rempli les informations, la clé et le CSR seront générés.

Si vous générez votre propre certificat

Si vous souhaitez générer votre propre certificat, vous devez créer votre propre autorité de certification racine avant d'émettre la commande CSR ci-dessus. Vous pouvez créer votre propre autorité de certification racine avec :

$ openssl genrsa -des3 -out myCA.key 2048

Il vous demandera d'ajouter une phrase de passe. Veuillez lui donner une phrase de passe sécurisée et ne la perdez pas :il s'agit de votre clé d'autorité de certification racine privée et, comme son nom l'indique, c'est la racine de toute confiance dans vos certificats.

Ensuite, générez le certificat CA racine :

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

Après avoir répondu à quelques questions supplémentaires, vous générerez un certificat d'autorité de certification racine d'une durée de vie de cinq ans.

À l'aide du fichier CSR des étapes ci-dessus, vous pouvez demander qu'un nouveau certificat soit généré et signé par l'autorité de certification racine que vous venez de créer :

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

Saisissez votre mot de passe de clé d'autorité de certification racine privée pour créer et signer le certificat.

Vous avez maintenant les deux fichiers nécessaires pour configurer vos services de messagerie pour une sécurité renforcée :le fichier de clé privée, mail.mydomain.key , et le fichier de certificat public, mail.mydomain.pem .

Si vous achetez un certificat

Si vous achetez un certificat auprès d'un fournisseur, il vous demandera de télécharger ce CSR sur son système, car il est utilisé comme entrée pour générer le certificat SSL/TLS. Le certificat sera accessible sous forme de fichier (tel que mail.mydomain.pem ). De nombreux fournisseurs SSL exigent également que vous téléchargiez un certificat intermédiaire. Si tel est le cas, vous devez combiner les deux fichiers de certificat en un seul, afin que le service de messagerie puisse les traiter ensemble. Vous pouvez combiner votre certificat avec un certificat intermédiaire tiers avec :

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

Notez que l'extension du fichier de sortie est .pem , qui signifie Privacy-Enhanced Mail.

Vous avez maintenant les deux fichiers dont vous avez besoin pour configurer vos services de messagerie pour une sécurité renforcée :le fichier de clé privée, mail.mydomain.key , et le fichier de certificat combiné public, mail.mydomain.pem .

Créer un répertoire sûr pour vos fichiers

Que vous ayez créé votre propre clé ou que vous en ayez acheté une auprès d'un fournisseur, créez un répertoire sécurisé appartenant à la racine pour les deux fichiers que vous avez créés ci-dessus. Un exemple de flux de travail pour créer un jeu sécurisé serait :

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

Assurez-vous de définir les autorisations sur vos fichiers après les avoir copiés dans /etc/pki/tls avec :

$ chmod 600 /etc/pki/tls/*

Configurer vos services SMTP et IMAP

Ensuite, configurez les services SMTP et IMAP pour utiliser les nouveaux certificats de sécurité. Les programmes utilisés dans cet exemple pour SMTP et IMAP sont postfix et colombier .

Modifier / etc / postfix/main.cf dans votre éditeur de texte préféré. Ajoutez les lignes suivantes :

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

Personnalisez votre configuration

Les options suivantes vous permettent de désactiver/activer différents chiffrements, protocoles, 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

Modifier /etc/dovecot/dovecot.conf en ajoutant ces trois lignes :

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

Ajoutez les options suivantes pour désactiver/activer différents chiffrements, protocoles, etc. (je vous laisse comprendre et prendre en compte ceux-ci) :

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

Définir le contexte pour SELinux

Si votre distribution Linux a activé SELinux, définissez le contexte SELinux correct pour vos nouveaux fichiers de certificat.

Pour Postfix SELinux :

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

Pour Dovecot SELinux :

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

Redémarrez les deux services et connectez-vous avec vos configurations de client de messagerie mises à jour. Certains clients de messagerie détectent automatiquement les nouveaux numéros de port ; d'autres vous demanderont de les mettre à jour.

Testez votre configuration

Testez rapidement depuis la ligne de commande avec openssl et le s_client plug-in :

$ 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

Ces commandes de test afficheront une pléthore de données sur la connexion, le certificat, le chiffrement, la session et le protocole que vous utilisez. Ce n'est pas seulement un bon moyen de valider que la nouvelle configuration fonctionne, mais aussi de confirmer que vous utilisez le certificat et les paramètres de sécurité appropriés que vous avez définis dans le postfix ou pigeonnier fichiers de configuration.

Restez en sécurité !


Linux
  1. Comment sécuriser un compte compatible cPanel avec un certificat SSL Lets Encrypt

  2. Comment sécuriser un compte compatible cPanel avec un certificat Sectigo SSL

  3. Comment gérer les certificats Lets Encrypt SSL/TLS avec certbot

  4. Comment sécuriser le nom d'hôte Plesk sur le port 8443 avec un certificat SSL

  5. Comment sécuriser les connexions avec des certificats SSL/TLS

Comment installer le certificat SSL/TLS gratuit Let's Encrypt sur votre ou vos domaines avec cPanel ?

Comment sécuriser le socket TCP de Docker avec TLS

Comment vérifier la date d'expiration SSL sur Plesk

Comment surveiller vos serveurs Linux avec Checkmk

Comment sécuriser Nginx avec le certificat SSL Let's Encrypt

Comment sécuriser un pare-feu Linux avec les règles IPTables