Configurer ParseDMARC sur le serveur Ubuntu 18.04, 16.04 pour analyser les rapports DMARC
ParseDMARC est un analyseur de rapports DMARC open source et auto-hébergé. Pour ceux qui ne le savent pas, DMARC est une norme de sécurité de messagerie qui peut protéger votre nom de domaine contre l'usurpation d'e-mail et également identifier les e-mails usurpés entrants pour protéger les utilisateurs finaux. Dans un article précédent, nous avons expliqué comment créer un enregistrement DNS DMARC pour votre nom de domaine et dans ce didacticiel, nous allons configurer ParseDMARC sur le serveur Ubuntu 18.04/16.04 afin de pouvoir analyser les rapports DMARC.
Conditions préalables
On suppose que vous avez créé un enregistrement DNS DMARC pour votre nom de domaine.
Pour générer des données visualisées, ParseDMARC s'appuie sur Elasticsearch et Kibana, tous deux gourmands en RAM. Ils utiliseront environ 2 Go de RAM après l’installation et nécessiteront plus de RAM pour traiter les données. Vous avez donc besoin d’un serveur avec au moins 3 Go de RAM. Vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 100 $sur DigitalOcean. (Pour les nouveaux utilisateurs uniquement). Si vous êtes déjà un utilisateur de DigitalOcean, vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 50 $sur Vultr (pour les nouveaux utilisateurs uniquement). Une fois que vous avez un compte chez DigitalOcean ou Vultr, installez Ubuntu 18.04 ou 16.04 sur votre serveur et suivez les instructions ci-dessous.
Installation de ParseDMARC sur Ubuntu 18.04 ou Ubuntu 16.04
ParseDMARC est un programme Python et peut être installé à partir du référentiel de logiciels PyPI (Python Package Index). Tout d’abord, nous devons installer le programme d’installation du package Python sur Ubuntu 18.04/16.04. Dans la commande suivante, nous installons le package python3-pip car ParseDMARC ne peut fonctionner qu'avec Python 3. Le package geoipupdate est utilisé pour mettre à jour la base de données MaxMind GeoIP.
sudo apt install python3-pip geoipupdateInstallez ensuite la dernière version stable de ParseDMARC avec la commande suivante.
sudo -H pip3 install -U parsedmarc
Pour vérifier les informations sur le package parsedmarc, vous pouvez exécuter
pip3 show -f parsedmarcPour voir les options de ligne de commande, exécutez
parsedmarc --helpInstallation d'Elasticsearch et Kibana sur Ubuntu 18.04/16.04
ParseDMARC est un programme de ligne de commande qui produit une sortie difficile à lire. Si vous souhaitez afficher les rapports DMARC visualisés dans une interface Web, vous devez installer deux autres programmes open source : Elasticsearch et Kibana. Elasticsearch est un moteur de recherche et d'analyse et Kibana permet aux utilisateurs de visualiser des données avec des tableaux et des graphiques dans Elasicsearch.
Nous pouvons installer Elasticsearch et Kibana à partir du référentiel officiel avec les commandes suivantes. Elasticsearch est écrit en langage de programmation Java, nous installons donc également le package default-jre-headless (environnement d'exécution Java) dans la dernière commande.
sudo apt-get install -y apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install -y default-jre-headless elasticsearch kibanaPar défaut, le service Elasticsearch systemd est désactivé. Vous pouvez le démarrer et l'activer avec les commandes suivantes.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearchVérifiez ensuite l'état.
systemctl status elasticsearchNous pouvons voir qu’il est maintenant activé et en cours d’exécution. (Indice : si cette commande ne se termine pas immédiatement, appuyez sur Q pour quitter.)
Nous devons également faire la même chose pour Kibaba.
sudo systemctl start kibana
sudo systemctl enable kibanaVérifiez l'état.
systemctl status kibana
Configuration du proxy inverse Nginx pour Kibana
Le serveur Web Kibana écoute sur 127.0.0.1:5601. Nous pouvons utiliser Nginx pour configurer un proxy inverse afin de permettre l'accès à distance et également de protéger l'interface Web de Kibana. Exécutez la commande suivante pour installer Nginx à partir du référentiel Ubuntu 18.04, 16.04.
sudo apt install nginxCréez un fichier d'hôte virtuel Nginx pour Kibana.
sudo nano /etc/nginx/conf.d/kibana.confMettez les lignes suivantes dans le fichier. Remplacez l'espace réservé si nécessaire et vous devez créer un enregistrement DNS A pour le sous-domaine.
server {
listen 80;
server_name dmarc.yourdomain.com;
access_log /var/log/nginx/dmarc.access;
error_log /var/log/nginx/dmarc.error;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -tSi le test réussit, rechargez Nginx pour que la modification prenne effet.
sudo systemctl reload nginxVous pouvez désormais accéder au tableau de bord Kibana sur dmarc.yourdomain.com. Cliquez sur le bouton Explorer par moi-même.
Activer HTTPS
Pour chiffrer le trafic HTTP lorsque vous visitez le tableau de bord Kibana via un nom de domaine, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur le serveur Ubuntu 18.04, 16.04.
sudo apt install certbotSi vous utilisez Nginx, vous devez également installer le plugin Certbot Nginx.
sudo apt install python3-certbot-nginx
Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email -d dmarc.yourdomain.comLe certificat devrait maintenant être obtenu et automatiquement installé.
Restreindre l'accès au tableau de bord Kibana
Par défaut, Kibana ne fournit pas d'authentification des utilisateurs. Pour permettre uniquement aux utilisateurs de confiance d'accéder au tableau de bord Kibana, nous pouvons activer l'authentification de base HTTP dans Nginx. Tout d'abord, nous devons installer le package apache2-utils qui fournit l'outil de création de fichier de mot de passe htpasswd.
sudo apt install apache2-utilsExécutez ensuite la commande suivante pour créer l'utilisateur admin. Vous devrez définir un mot de passe.
sudo htpasswd -c /etc/nginx/htpasswd adminEnsuite, modifiez le fichier d'hôte virtuel Kibana.
sudo nano /etc/nginx/conf.d/kibana.confAjoutez les deux lignes suivantes dans le bloc serveur listen 443 ssl.
auth_basic "Login required";
auth_basic_user_file /etc/nginx/htpasswd;
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -tSi le test réussit, rechargez Nginx pour que la modification prenne effet.
sudo systemctl reload nginxMaintenant que vous rechargez le tableau de bord Kibana dans votre navigateur Web, il vous sera demandé de saisir un nom d'utilisateur et un mot de passe.
Configuration de ParseDMARC
Afin d'utiliser ParseDMARC et d'envoyer des données à Elastisearch, nous devons créer un fichier de configuration.
sudo nano /etc/parsedmarc.iniMettez les lignes suivantes dans le fichier. Remplacez les espaces réservés si nécessaire.
[general]
# Save aggregate and forensic reports to Elasticsearch
save_aggregate = True
save_forensic = True
[imap]
# Log into the DMARC report email address and download data.
host = mail.yourdomain.com
port = 993
ssl = True
user = [email
password = your_password_here
watch = True
[elasticsearch]
# Send data to Elastichsearch, which listens on port 9200.
hosts = 127.0.0.1:9200
ssl = False
[smtp]
# For sending email
host = mail.yourdomain.com
port = 587
ssl = True
user = [email
password = your_password_here
from = [email
# send results to this address
to = [email
Enregistrez et fermez le fichier.
Exécuter ParseDMARC en tant que service Systemd
Nous pouvons exécuter manuellement ParseDMARC avec parsedmarc -c /etc/parsedmarc.ini (N'exécutez pas cette commande pour l'instant), mais il est plus pratique d'exécuter ParseDMARC en tant que service systemd en arrière-plan. Créez un fichier d'unité de service systemd pour ParseDMARC avec la commande suivante.
sudo nano /etc/systemd/system/parsedmarc.serviceMettez les lignes suivantes dans le fichier.
[Unit]
Description=parsedmarc mailbox watcher
Documentation=https://domainaware.github.io/parsedmarc/
Wants=network-online.target
After=network.target network-online.target elasticsearch.service
[Service]
ExecStart=/usr/local/bin/parsedmarc -c /etc/parsedmarc.ini
User=parsedmarc
Group=parsedmarc
Restart=always
RestartSec=5m
[Install]
WantedBy=multi-user.target
Enregistrez et fermez le fichier. Ce service systemd s'exécutera en tant qu'utilisateur parsedmarc, nous devons donc créer l'utilisateur avec la commande suivante.
sudo adduser --system --no-create-home --group parsedmarcNous devons également protéger le fichier /etc/parsedmarc.ini afin que seuls les utilisateurs root et du groupe parsedmarc puissent le lire.
sudo chown parsedmarc /etc/parsedmarc.ini
sudo chmod 600 /etc/parsedmarc.iniParseDMARC devra télécharger la base de données MaxMind GeoIP dans le répertoire /usr/share/elasticsearch/modules/ingest-geoip, donc l'utilisateur parsedmarc doit avoir une autorisation en écriture.
sudo setfacl -R -m "u:parsedmarc:rwx" /usr/share/elasticsearch/modules/ingest-geoip/Nous pouvons maintenant démarrer et activer le service parsedmarc systemd.
sudo systemctl start parsedmarc
sudo systemctl enable parsedmarcVérifiez l'état.
systemctl status parsedmarcParseDMARC commencera à récupérer les rapports DMARC à partir de l'adresse e-mail du rapport et les enverra à Elasticsearch pour analyse. Si vous recevez beaucoup d'e-mails de rapports DMARC, soyez patient pour laisser ParseDMARC terminer son travail.
Si le service parsedmarc n'est pas actif (en cours d'exécution), vous pouvez exécuter la commande suivante pour voir ce qui ne va pas.
sudo journalctl -eu parsedmarcImportation d'objets ParseDMARC dans Kibana
Pour utiliser le tableau de bord Kibana avec ParseDMARC, vous devez d'abord importer les objets ParseDMARC. Vous pouvez utiliser la commande suivante pour le télécharger sur votre ordinateur Linux ou Mac local.
wget https://raw.githubusercontent.com/domainaware/parsedmarc/master/kibana/export.ndjsonSi vous utilisez Windows, copiez simplement le lien https et collez-le dans la barre d'adresse du navigateur pour télécharger les données.
Ensuite, sur la page d'accueil d'Elastic, cliquez sur Kibana pour accéder au tableau de bord Kibana.
Ensuite, dans le tableau de bord Kibana, cliquez sur le bouton Ajouter vos données.
Ensuite, sélectionnez Objets enregistrés et cliquez sur le bouton Importer pour importer les objets ParseDMARC que vous avez téléchargés.
Analyser les rapports DMARC dans Kibana
Une fois que le service ParseDMARC systemd aura fini de lire les e-mails, les données du rapport DMARC apparaîtront dans Kibana. Le rapport le plus utile, à mon avis, est le résumé DMARC. Vous pouvez le vérifier en allant dans Objets enregistrés -> Résumé DMARC, puis en cliquant sur le bouton Afficher le tableau de bord. La chose la plus utile que vous puissiez faire avec le résumé DMARC est d'identifier les sources légitimes qui ont échoué à la vérification DMARC.
- Filtrez les résultats pour afficher uniquement les messages qui n’ont pas réussi DMARC.
- Ensuite, vous pouvez voir les dispositions des messages (comment les serveurs de messagerie de réception les traitent : ne rien faire, les mettre dans le dossier spam ou les rejeter).
- Faites défiler vers le bas pour voir les détails de l’alignement SPF et DKIM afin d’identifier la raison pour laquelle certaines sources légitimes ont échoué à la vérification DMARC.
Si l’expéditeur n’inclut pas la signature DKIM ou n’a pas d’enregistrement DNS inversé, il s’agit clairement de spam.
Ce qui me surprend, c'est que certains fournisseurs de boîtes mail utilisent leur propre nom de domaine dans la signature DKIM lors du transfert de mes e-mails légitimes. D'autres fournisseurs de boîtes aux lettres utilisent mon nom de domaine dans la signature DKIM mais échouent toujours à l'alignement DKIM. Pour approfondir la cause, vous pouvez consulter le rapport médico-légal individuel.
Conclusion
J'espère que ce tutoriel vous a aidé à configurer ParseDMARC sur Ubuntu 18.04 et Ubuntu 16.04 pour analyser les rapports DMARC. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous 🙂









