Guide de sécurité de la messagerie : SPF, DKIM et DMARC
Introduction
Les e-mails représentent un vecteur d'attaque très populaire puisqu'ils sont largement utilisés par des cybercriminels. En effet, l'ensemble des collaborateurs d'une entreprise est touché, bien que la plupart ne soient pas sensibilisés à la sécurité informatique. Deux types d'attaques sont largement répandus : le phishing et le spoofing d'e-mail, respectivement hameçonnage et usurpation d'identité, que l'on définira par la suite. Ce guide a pour but de présenter les enjeux liés à la sécurité des échanges par mail et d'expliquer les grands principes du SPF, DKIM et DMARK ainsi que leur implémentation.
Le SPF, DKIM et DMARK sont des normes visant à sécuriser l'authentification et la conformité des messages. Ce guide présente ces 3 normes et aide à leur bonne mise en place pour un domaine à sécuriser.
Comprendre les enjeux
Qu'est-ce que le Spoofing d'Email ?
Le spoofing est un type d'attaque dans laquelle une personne malveillante se fait passer pour une autre personne. Cette usurpation d'identité permet à l'attaquant de récupérer des informations sensibles, c'est très dangereux pour les entreprises et organisations, car cela peut engendrer un vol de données et également un piratage par la suite.
Vérification de l'authenticité d'un email
Les mécanismes SPF/DKIM/DMARC permettent de vérifier l'authenticité des e-mails suivant plusieurs méthodes décrites dans la suite de ce document. Néanmoins, pour une compréhension globale, ces mécanismes peuvent se représenter sous le schéma ci-dessous.
Afin de mettre en place une politique de sécurité pour les e-mails il est important de lister les serveurs (nom de domaine ou IP) qui sont autorisés à envoyer des e-mails depuis votre domaine. Ces serveurs que vous allez lister seront légitimes, ils sont par conséquent propres à votre activité tel que vos serveurs de messageries ou autres services tiers auquel vous avez souscrit.
Sender Policy Framework (SPF)
Qu'est-ce que le SPF ?
Le SPF pour Sender Policy Framework a pour fonction la prévention contre l'usurpation d'adresses e-mails en vérifiant l'émetteur. En effet, le SPF joue un rôle clé et il est souvent utilisé par les cybercriminels dans le cadre de campagnes de phishing dans des entreprises.
De ce fait, il est important de configurer correctement le SPF pour authentifier l'émetteur d'un e-mail. En effet, le serveur de messagerie de destination va vérifier le nom de domaine de l'expéditeur à partir de l'en-tête de l'e-mail. Il va ensuite émettre une requête DNS pour récupérer le contenu de l'enregistrement DNS de type TXT) pour le domaine en question. Cette action permet d'obtenir la liste des serveurs de messagerie légitimes afin de comparer cette liste avec le serveur de messagerie à l'origine de l'e-mail.
Si le serveur émetteur est autorisé, l'e-mail est considéré comme authentique et est accepté. À l'inverse, le serveur de réception peut rejeter l'e-mail ou le marquer comme suspect le cas échéant.
Mise en place du SPF
Pour mettre en place une politique SPF, il faut ajouter un enregistrement TXT dans la zone DNS publique du domaine concerné (qui délivre et reçois des e-mails).
Pour ajouter un enregistrement SFP qui concerne une IP publique la syntaxe est la suivante :
v=spf1 ip4:12.34.56.78 -all
v=spfi
correspond à la version de SPF qui est utilisé.
On peut remplacer (ou ajouter) une IPv6 avec 'ip6' au lieu de 'ip4'.
Pour ajouter un enregistrement SFP qui concerne un nom de domaine d'un serveur la syntaxe est la suivante :
v=spf1 include:_spf.domaine.com -all
La dernière expression correspond à l'acceptation ou rejet du mail si les conditions précédentes ne correspondent pas.
- +all : pass
- -all : fail
- ~all : softfail
- ?all : neutral
Seul les cas -all et ~all sont utilisés en production. Dans un premier temps, il est conseillé de laisser en ~all pour vérifier la validité de l'enregistrement. Lorsque l'enregistrement est vérifié, il faut passer en -all pour bloquer effectivement les emails provenant de serveurs mails illégitimes.
Exemple d'un enregistrement SPF
Pour le domaine cyberlab.local on souhaite autoriser seulement l'adresse IP 12.34.56.78 puis le domaine cyberlab2.com, le reste sera rejeté.
Ajout de la ligne suivante dans la zone DNS publique du domaine cyberlab.
v=spf1 ip4:12.34.56.78 include:_spf.cyberlab2.com -all
La sortie d'une commande de résolution de type dig ou nslookup affiche :
La chaîne de caractère doit être strictement inférieure à 255 caractères.
DomainKeys Identified Mail (DKIM)
Qu'est-ce que DKIM ?
Le DKIM pour Domain Keys Identified Mail est capable de prévenir la falsification d'e-mail, il vérifie la non-modification d'un contenu e-mail par signatures cryptographiques.
Ce protocole assure la signature des échanges par un échange de clés, publique et privée. La clé privée est stockée dans le serveur expéditeur tandis que la clé publique est renseignée via l'enregistrement DNS. La signature de l'expéditeur est ajoutée à l'en-tête des e-mails, c'est le serveur d'envoi qui signe avec sa clé privée. Le serveur de destination interroge l'enregistrement DNS public pour obtenir la clé publique et ainsi vérifier l'empreinte.
Configuration du DKIM
La configuration du DKIM passe par plusieurs étapes :
- G énération d'une paire de clés
- Configuration du serveur de messagerie
- Configuration de la zone DNS
La génération des clés et la configuration de votre serveur de messagerie sont propre au contexte de votre entreprise, seul l'enregistrement DNS est expliqué dans ce guide.
Exemple d'une configuration DKIM
La structure de l'enregistrement DNS est différente de celle réalisée pour SPF. En fait, le nom de l'enregistrement contient l'emplacement de la clé publique en plus du nom de domaine.
selecteur-cyberlab._domainkey.cyberlab.local
La valeur de l'enregistrement à l'inverse ressemble à celle implémentée pour le SPF, on renseigne en plus la clé publique générée précédemment.
v=DKIM1; k=rsa; p=cléPublique
v=DKIM1
fait référence à la version du DKIM.
k=rsa
correspond à l'algorithme utilisé.
p=cléPublique
indique la clé publique DKIM.
On retrouve donc la configuration SFP et DKIM dans la capture ci-dessus.
Tout comme le SFP la chaîne de caractère doit être strictement inférieure à 255 caractères.
Domain-based Message Authentication, Reporting, and Conformance (DMARC)
Avec SPF et DKIM la récupération du domaine de l'expéditeur est effectué par sur le champ "Return-Path" (ou "Mail From") au lieu de "From" qui est visible par l'utilisateur. Il est nécessaire d'utiliser le DMARC en complément pour corriger ce problème. En effet une modification de ces deux champs peut permettre à un attaquant de cacher son domaine d'émission pour réussir son usurpation d'identité.
Qu'est-ce que DMARC ?
Le DMARK pour Domain-based Message Authentication, Reporting & Conformance est capable de protéger contre l'usurpation et la falsification comme SFP et DKIM et également la surveillance de l'envoi d'e-mails pour un domaine.
Configuration du DMARC
L'enregistrement DMARC de type TXT doit s'appeler "_dmarc" dans votre zone DNS
_dmarc.cyberlab.local
La valeur de l'enregistrement ressemble à celle implémentée pour le SPF.
v=DMARC1 ; p=politique; rua=mailto:email; pct=100; adkim=s; aspf=s
pct=100
: indique que cette règle s’applique à 100% des e-mails. Mais, on pourrait s'en passer car c'est la configuration par défaut.
aspf=s
:
-
"s"
signifie Strict. Cela signifie que l'adresse de l'expéditeur dans l'en-tête "From" de l'e-mail doit correspondre exactement au nom de domaine de l'expéditeur dans l'enregistrement SPF pour que l'alignement SPF soit respecté. Idéal pour lutter contre le phishing, le spam, etc. -
"r"
signifie Relaxed (mode par défaut). Cela signifie que l'alignement SPF est respecté tant que le domaine de l'expéditeur dans l'en-tête "From" de l'e-mail et l'adresse de l'expéditeur dans l'enregistrement SPF partagent le même domaine principal (ce qui permet d'autoriser les sous-domaines).
adkim=s
: même principe que pour le paramètre précédent ("s" ou "r") mais pour l'alignement DKIM.
rua=mailto:postmaster@it-connect.tech
: spécifie l'adresse e-mail à laquelle envoyer les rapports sur l'activité DMARC (important !).
Trois politiques différentes existent :
-
p=none : ce mode ne procure aucune protection, mais peut s'avérer utile pour être en mode "audit" (surveillance) et savoir qui envoie des e-mails pour votre domaine, et surtout quels sont les e-mails potentiellement rejetés (à cause d'une adresse IP manquante dans le SPF, par exemple) ;
-
p=quarantine : Les e-mails non authentifiés sont considérés comme spams ;
-
p=reject : Les e-mails non authentifiés sont rejetés (ce qui peut entrainer des pertes d'e-mails).
Exemple d'enregistrement DMARC
v=DMARC1 ; p=quarantine; rua=mailto:postmaster@cyberlab.local; pct=100; adkim=s; aspf=s
Conclusion
Pour conclure, il est nécessaire d'utiliser le SPF / DKIM et DMARC en complément pour corriger les défauts de conception d'une messagerie trop permissive. La mise en place de SPF, DKIM et DMARC est une démarche importante pour renforcer la sécurité du domaine de messagerie. Lorsque ces trois configurations sont utilisées ensemble, ils permettent de lutter efficacement contre le spam, le phishing et d'autres formes d'abus basés sur l'e-mail.
Bibliographie et ressources complémentaires :
https://www.it-connect.fr/securite-messagerie-spf-dkim-dmarc-pour-les-debutants/
https://powerdmarc.com/fr/dmarc-for-dummies/
https://dmarc.org/presentations/Email-Authentication-Basics-2015Q2.pdf