
Pour se plier aux nouvelles règles, on a commencé à les appliquer pour la plupart de nos clients. Et comme on veut déchiffrer ces trucs de rapports DMARC, on a opté pour des solutions open source.
La solution qu’on vous présente ici, est la seule qui tient la route pour gérer plusieurs domaines à la fois. Mais bon, le problème, c’est que le projet est un peu à l’abandon. Donc, je me suis dit que ce serait cool de vous filer un mode d’emploi pour pas galérer comme j’ai galéré
Dans ce billet, nous allons rester simples et nous ne rentrerons pas dans les détails concernant le DKIM, SPF, etc. Tout cela sera traité ultérieurement.
Le DMARC, acronyme de “Domain-based Message Authentication, Reporting, and Conformance” (Authentification, Rapports et Conformité basée sur le Domaine), est une norme de sécurité des e-mails qui vise à protéger les domaines contre la falsification et le phishing. Elle permet aux propriétaires de domaines de spécifier comment les messages électroniques provenant de leur domaine doivent être traités une fois qu’ils atteignent les destinataires.
Les principaux objectifs de DMARC sont :
Authentification des expéditeurs : DMARC utilise les protocoles SPF et DKIM pour vérifier l’authenticité des expéditeurs d’e-mails en comparant l’adresse IP de l’expéditeur avec les enregistrements DNS du domaine expéditeur.
Rapports de conformité : DMARC fournit des rapports détaillés sur la manière dont les e-mails provenant d’un domaine spécifique sont traités par les destinataires. Ces rapports aident les propriétaires de domaines à comprendre comment leurs e-mails sont gérés et à identifier d’éventuels problèmes d’authentification.
Conformité : DMARC offre aux propriétaires de domaines la possibilité de définir des politiques pour indiquer aux fournisseurs de services de messagerie comment traiter les e-mails qui ne respectent pas les mécanismes d’authentification établis (DKIM,SPF). Cela permet de réduire les risques liés au phishing et à la falsification des e-mails.
Depuis peu, les principaux acteurs de la messagerie tels que Google, Microsoft, Yahoo, etc., ont annoncé le renforcement des règles de sécurité liées à la distribution et à la réception des e-mails.
Les conséquences ? C’est simple : les domaines qui ne respectent pas cette directive peuvent voir leurs e-mails être rejetés.
Vous pouvez également conculter les articles suivant pour plus de détails : DMARC - A partir de février 2024…, Google et Yahoo ont mis à jour les exigences…
La partie barbante étant terminée, nous pouvons nous consacrer à dmarc-visualizer.
Comment vu plus haut, le DMARC a la possibilité de générer et d’envoyer des rapports.
Il est donc important d’avoir rajouter les champs nécessaire sur son dns, ça ressemble à ça :
_dmarc.domaine.tdl. 7200 IN TXT "v=DMARC1; p=none;
rua=mailto:[email protected]; pct=100"
Pour plus d’information : what are dmarc tags
Si vous avez plusieurs clients/domaines et que vous souhaitez envoyer vos rapports depuis des e-mails dédiés, il sera nécessaire d’autoriser les domaines externes à envoyer des e-mails vers le domaine de vos e-mails de rapport.
Pour se faire il faudra rentrer une entrée txt sur le domaine “domaine.tld”
*._report._dmarc.domaine.tld. 7200 IN TXT v=DMARC1;
Pour plus d’information : Qu’est-ce que le DMARC "External Destination Verification…
DMARC-Analyzer est un outil développé par Debricked qui se base sur l’outil parsedmarc ainsi que sur bien d’autres. Celui-ci nous permet d’analyser et de visualiser les résultats DMARC à l’aide d’outils open source.
Je ne suis pas le créateur de cet outil, j’ai simplement effectué un fork et adapté ce dernier pour un usage en production dans une entreprise. N’hésitez donc pas à vérifier si mes modifications au niveau du
patch notecorrespondent à votre utilisation .
PRÉREQUIS :
Recommandation systèmes :
PATCH NOTES :
- Activation du https par défaut sur Grafana et désactivation de l'accès anonyme sans connexion
- Ajout des self-cert par défaut pour une durée de 5 ans pour Grafana
- Mise à jour de l'image de Grafana de "8.5.4" à "LATEST" pour corriger les CVE et les bugs sur l'interface du tableau de bord.
- Modification du dashboard Grafana par une version plus recente et sans bug
- Ajout du tableau de bord par défaut "Grafana-DMARC_Reports.json"
- Mise à jour du fichier de configuration de la source de données pour Grafana "all.yml" afin de s'adapter à Elasticsearch et ajout de "maxConcurrentShardRequests: '256'" pour correspondre aux recommandations du créateur du tableau de bord.
- Mise à jour d'Elasticsearch de la version 7.17.5 à 8.12.1 : corrige des problèmes de sécurité.
- Correction des erreurs de droits d'ecriture pour Elasticsearch
- Adaptation de la version 8.12.1 d'Elasticsearch pour qu'elle corresponde au reste des services.
- Modification du fichier de configuration de parsedmarc et ajout IMAP et msgraph pour O365.
- Ajout du container GEOIP pour Grafana
Mon repo : https://git.npm.re/public/dmarc-visualizer
Cloner mon dépôt dans le répertoire de votre choix :
git clone https://git.npm.re/public/dmarc-visualizer.git
Ce qui donnera :

L’activation du SSL sur Elasticsearch peut parfois être un véritable défi ! De mon côté, je n’ai pas réussi à le faire fonctionner correctement. Java a tendance à remonter une erreur “bad_certificate”. Je te souhaite bon courage si tu décides de l’activer, et je suis tout ouïe si tu trouves une solution qui marche pour toi
Nous allons commencer par éditer le fichier .env
Je vais pas détailler la façon de comment générer une clé maxmind le process ici l’explique accès bien
Ce qui donne :
#generation de clé : https://support.maxmind.com/hc/en-us/articles/4407111582235-Generate-a-License-Key
GEOIPUPDATE_ACCOUNT_ID=795643
GEOIPUPDATE_LICENSE_KEY=1YfanI_67ddSNmmjnerçhd57yqJnFVkTCcawDHdW_mmk
GEOIPUPDATE_FREQUENCY=24
Si vous etes sur du IMAP, example: google, ovh, ionos etc… vous devrez éditer uniquement la partie [imap]
cela étant assez simple je ne vais pas plus détailler
Pour les utilisateurs Microsoft : il faudra commenter [imap] et décommenter [msgraph]
Il faudra ensuite se rendre sur Microsoft Entra est inscrire une nouvelle application, vous pouvez suivre cette procédure de Microsoft: Inscrire une application sur la Plateforme…
Quand cela sera fait il faudra donner des droits applicatif et non utilisateur a cette application :
Vous devez créer un enregistrement d’application dans Azure AD et demander à un administrateur d’accorder à l’application l’autorisation Microsoft Graph
Mail.ReadWrite(déléguée). Si vous utilisez l’authentificationUsernamePasswordet que la boîte aux lettres est différente du nom d’utilisateur, vous devez accorder à l’applicationMail.ReadWrite.Shared.
Et remplissez la partie msgraph avec les informations de l’application. N’oubliez pas de créer un certificat d’authentification pour l’application :
...
#Microsoft 365 OK
[msgraph]
auth_method = ClientSecret #ne pas changer
client_id = 796dea12-9376-4c2e-859c-5ad0993c2a14 #id de l'app azure
client_secret = aWv8Q~9.Q__ZH9lLQuoEPZWm9zH0VmGjdI5-FaER #clé secret de l'app azure
tenant_id = a23e33f6-dac3-4910-80a4-98ce4ca41334 #ID du tenant azure
mailbox = [email protected] #mettre une licence exchange
....

Il faudra rajouter la bal qui sera utiliser pour recevoir les rapports a l’application ex: [email protected]
Si vous utilisez la méthode d’authentification par
ClientSecret, vous devez accorder l’autorisationMail.ReadWrite(application) à l’application. Vous devez également restreindre l’accès de l’application à une boîte aux lettres spécifique, car elle autorise toutes les boîtes aux lettres par défaut. Utilisez la commandeNew-ApplicationAccessPolicydans le module PowerShell Exchange. Si vous devez limiter la portée de la stratégie aux boîtes aux lettres partagées, vous pouvez les ajouter à un groupe de sécurité activé par messagerie et utiliser cela comme ID de groupe.
Ce-ci n’est pas spécifié par Parsedmarc, mais il faudra que le compte dispose d’une licence Exchange. Je n’ai pas réussi à le faire fonctionner sans. Cependant, pas besoin de contourner le compte du côté de MFA
Il faudra installer les modules Exchange-Online : Vous pouvez suivre cette procédure si ce dernier n’est pas deja installer PowerShell : comment installer le module Exchange Online V3 ? :
New-ApplicationAccessPolicy -AccessRight RestrictAccess
-AppId "<CLIENT_ID>" -PolicyScopeGroupId "<MAILBOX>"
-Description "Restrict access to dmarc reports mailbox."
Cela montre que le service "parsedmarc" a pu se connecter avec succès :

Nous pouvons maintenant lancer les container, pour ce faire on va taper la commande :
docker compose up -d
Résulat :
[+] Running 4/4
✔ Container dmarc-visualizer-geoipupdate-1 Started 0.4s
✔ Container dmarc-visualizer-elasticsearch-1 Started 0.6s
✔ Container dmarc-visualizer-grafana-1 Started 0.6s
✔ Container dmarc-visualizer-parsedmarc-1 Started 0.8s
Nous pouvons accéder au service via l’ip de la vm\vps : https://localhost:3001
Le login et mot de passe sera admin
