Protocoles SPF DKIM DMARC

De wikilivois
Aller à la navigationAller à la recherche

Ces trois protocoles - SPF, DKIM, DMARC - répondent à des problématiques de sécurité différentes et doivent tous les 3 être implémentés pour s'assurer de la meilleure délivrabilité possible sur IP dédiée

SPF

Le principe

Le protocole SPF - Sender Policy Framework, qui se base sur les DNS de votre nom de domaine, permet de certifier que l'IP émettrice a bien le droit d'envoyer l'email. Ce protocole permet ainsi d'interdire à des tiers d'utiliser frauduleusement votre nom de domaine et de se faire passer par vous. Ce protocole est particulièrement efficace contre des attaques de phishing.

SPF est là pour dire aux serveurs mails de destination si l’expéditeur fait partie des machines autorisées. On peut au choix mettre une ou plusieurs adresses IP, ou inclure des informations disponibles dans d’autres zones DNS.

La configuration DNS

#dig TXT livois.com 
;; ANSWER SECTION:                                                                                                                                                                                                                                                             
livois.com.             10079   IN      TXT     "v=spf1 include:spf.mailjet.com include:_mailcust.gandi.net ?all" 

La configuration suivante autorise les serveurs smtp mailjet et gandi d'envoyer les mails des expéditeurs livois.com.

Chaque mécanisme peut être combiné avec un seul des quatre qualifieurs :

+ (plus) pour un résultat favorable. Il peut être omis, ex : +mx est équivalent à mx.
? (point d'interrogation) pour un résultat neutre. Interprété comme NONE (aucune règle).
~ (tilde) pour un léger échec. Intermédiaire entre le neutre et l'échec, il est utilisé pour le débogage. Typiquement, ces messages sont acceptés mais estampillés comme tels.
- (moins) pour un échec total. Le mail doit être rejeté.

Le ?all indique que les mails qui proviennent d'autres serveurs doivent être considérés comme neutre.


DKIM

Le principe

Le protocole DKIM - DomainKeys Identified Mail - est un protocole cryptographique se basant sur l'utilisation de clés publiques qui sont publiés dans vos DNS. Le protocole permet de signer votre email avec votre nom de domaine, comme vous pourriez signer une lettre avec votre signature. Le destinataire de votre email est sûr que l'email qu'il a reçu a bien été écrit par vous et n'a pas été altéré durant sa transmission. Ce protocole est particulièrement efficace contre des attaques type "man in the middle".

Tous les courriels émanant de Yahoo, GMail, AOL et FastMail contiennent en principe une signature DKIM.

DKIM permet d’ajouter une signature à l’en-tête de chaque message envoyé. Cete signature est propre à votre domaine, elle est générée par une clé privée. La clé publique qui y correspond est ajoutée à votre domaine, dans un enregistrement DNS. Quand un serveur de réception (Gmail, Hotmail, ou n’importe quel serveur d’entreprise par exemple) reçoit votre message, il vérifie la clé publique pour déterminer si votre clé privée à été utilisée pour générer la signature du message. Si cette clé privée n’est pas utilisée, le message est alors considéré comme une tentative de phishing ou de spam.


Configuration mailjet

Le service de messagerie mailjet propose la sécurisation DKIM des mails. La page domaine https://app.mailjet.com/account/sender/domain_info/domainexxx.xxx de mailjet, explique comment configurer le DNS:

mailjet._domainkey 1800 IN TXT "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDABEsjBctGnYmUoICiZ1vSW9H35jaSqZbi2JgxkuFB77AatlKsGvkbjW3eX0H8MGshn8c78naVbuqMDZUr3eZFCw+4aJEXiQhOii6SktoInaHieet8KbkKWKb0CCIJ8kITsSSTx12FW/LqaxeFG4l/g7Fqy0wNjm84UAZ8vIGn7QIDAQAB"

Exemple d'en-tête de mail:

Received: from 87.253.234.124 by s602e.ik2.com (IK2 SMTP Server); Sat, 10 Nov 2018 17:16:52 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; q=dns/txt;
  d=bnc3.mailjet.com; i=admin=3Dlivois.com@bnc3.mailjet.com; s=mailjet;
  h=message-id:mime-version:from:to:subject:date:list-unsubscribe:x-csa-complaints:
  x-mj-mid:x-mj-smtpguid:x-report-abuse-to:content-type;
  bh=4SRktCfs0flDfaAdtfhJE/ahmebLbaQQr8i6rU4qawA=;
  b=hyUZ4y8VS8ds+nTKomE6eDfl1/OfL9C0uk4C6p1m+Kkgw3lxh2op4MHOE
 JY+OWIR/B3voW22Px+cVser7Y+mKKGadwR65Jk0EgLgQ1OBghRTuW1oMpuP1
 tWQva6pKqZd//ehrdSphWxhfcUEqsSXxydkJWm8OPc21jJ94RT7TPA=
Message-Id: <50f9361b.AMMAAB6wJrMAAAAAAAAAAAByMNQAAAAAN-cAAAAAAAzCyABb5xKA@mailjet.com>
MIME-Version: 1.0
From: admin@livois.com
To: christophe@livois.com
Subject: Scan X543

Traduction:

  • v=1; le protocole DKIM utilisé est la version 1
  • a=rsa-sha256; l'algorithme de signature est rsa-sha256
  • c=relaxed/simple; l'algorithme de canonicalisation est relaxed pour le header et simple pour le corps du mail
  • q=dns/txt; la méthode pour récupérer la clé publique est via DNS
  • d=bnc3.mailjet.com; l'identifiant de domaine responsable de la signature (SDID) est bnc3.mailjet.com
  • i=admin=3Dlivois.com@bnc3.mailjet.com; The Agent or User Identifier (AUID) on behalf of which the SDID is taking responsibility
  • s=mailjet; la clé publique à utiliser pour la vérification est celle du sélecteur mailjet
  • h=message...type; correspond à la liste des en-têtes signés
  • bh=4SRk...; est le hachage du corps
  • b=hyUZ4...; sont les véritables signature numériques des contenus (en-têtes et corps de mail) ;


A noter que le service mail de gandi ne propose pas la sécurisation DKIM.

DMARC

Le principe

Les deux protocoles DKIM et SPF sont complémentaires et répondent à des types d'attaque différentes. Néanmoins ils ont l'inconvénient de ne pas donner de conduite à tenir en cas d'attaque. Le protocole DMARC - Domain-based Mail Authentication, Reporting and Conformance - pallie ce manque et donne des indications en cas d'attaque : il est en particulier possible d'être averti si quelqu'un usurpe votre identité (si l'attaquant utilise une IP non autorisée ou si l'attaquant a modifié le contenu de votre email par exemple).

Une politique DMARC autorise l'expéditeur à indiquer que ses e-mails sont protégés par SPF et/ou DKIM et dit au destinataire que faire si ces méthodes d'authentification échouent (ex : rejeter tous les emails sans DKIM et prévenir une adresse email). DMARC supprime les conjectures que le destinataire doit faire à propos de la façon de gérer ces messages en échec, limitant ou supprimant l'exposition de l'utilisateur aux messages potentiellement frauduleux ou dangereux. DMARC fournit également un moyen pour les destinataires de rendre compte à l'émetteur du message qu'il a réussi ou échoué l'évaluation DMARC.

DMARC ne fonctionne que si vous envoyez tous vos messages via votre domaine. Les messages envoyés en votre nom par un fournisseur tiers ne seront pas authentifiés et pourraient être rejetés pour cette raison, selon la disposition définie dans vos règles. Pour authentifier les messages envoyés par un fournisseur tiers, vous devez soit lui communiquer votre clé DKIM afin qu'il puisse l'inclure dans les messages, soit lui demander de faire transiter le courrier par votre réseau.

Les politiques DMARC sont publiées dans le Domain Name System (DNS) public du domaine comme entrée TXT et annonce ce que le destinataire d'un email doit faire si celui-ci ne satisfait pas les mécaniques d'authentification.

Google a rédigé des pages claires et concrètes sur le sujet.

Configurer le DNS

Ajouter un enregistrement texte du type:

_dmarc 1800 IN TXT "v=DMARC1; p=none; rua=mailto:admin@livois.com"

Traduction:

  • v=DMARC1; il s'agit de la version du protocole
  • p=none; pas de règle particulières
  • rua=mailto:admin@livois.com le destinataire du rapport agrégé est admin@livois.com

Exemple de rapport

Mail envoyé par yahoo. Le spf n'est pas validé mais le mail passe car la politique choisie n'est pas restrictive.

 <record>
    <row>
      <source_ip>77.238.176.97</source_ip>
      <count>1</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>pass</dkim>
        <spf>fail</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>livois.com</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>yahoo.com</domain>
        <result>pass</result>
        <selector>s2048</selector>
      </dkim>
      <dkim>
        <domain>livois.com</domain>
        <result>pass</result>
        <selector>mailjet</selector>
      </dkim>
      <spf>
        <domain>bnc3.mailjet.com</domain>
        <result>softfail</result>
      </spf>
    </auth_results>
  </record>

Certains outils comme dmarcian permettent d'analyser les rapports.

Test des configurations