GNU/Linux >> Tutoriels Linux >  >> Cent OS

Configurer OpenDMARC avec Postfix sur CentOS/RHEL pour bloquer l'usurpation d'e-mails

Dans les articles précédents, nous avons discuté de plusieurs astuces efficaces pour bloquer le spam par e-mail. Ce didacticiel vous montrera comment configurer OpenDMARC avec le serveur SMTP Postfix sur CentOS/RHEL pour bloquer l'usurpation d'e-mails et le spam. OpenDMARC est un filtre de politique de messagerie DMARC open source pour les MTA (Message Transport Agent, alias serveur SMTP).

Qu'est-ce que DMARC

DMARC (Domain-based Message Authentication, Reporting and Conformance) est une norme Internet (RFC 7489) qui permet aux propriétaires de domaines d'empêcher que leurs noms de domaine soient utilisés par des usurpateurs de messagerie. Avant l'invention de DMARC, il était très facile pour les acteurs malveillants d'utiliser le nom de domaine d'autres personnes dans l'adresse De.

Si un propriétaire de domaine a créé un enregistrement DNS DMARC pour son nom de domaine et qu'un serveur de messagerie destinataire a mis en œuvre la vérification DMARC, les acteurs malveillants doivent réussir l'alignement SPF ou l'alignement DKIM afin de réussir la vérification DMARC. Si la vérification DMARC échoue, l'e-mail usurpé peut être rejeté. Ne jamais être vu par les utilisateurs finaux. Il est difficile pour le mauvais acteur de passer SPF ou DKIM, à moins que le serveur de messagerie du propriétaire du domaine ne soit compromis.

Exemple d'usurpation d'e-mail

Un spammeur m'a envoyé un e-mail de rançon en utilisant winsaaluminyumankara.com dans l'adresse De. Les informations whois de winsaaluminyumankara.com est publique. Il est clair que le spammeur n'est pas une personne responsable de ce nom de domaine.

winsaaluminyumankara.com a un enregistrement DMARC.

Ensuite, j'ai vérifié les en-têtes de courrier électronique, ce qui indique que SPF a échoué. Il n'y a pas de signature DKIM. La vérification DMARC échoue donc. Ceci est un e-mail usurpé.

Cela montre que non seulement les grandes marques sont utilisées par les usurpateurs d'e-mails, mais que tous les noms de domaine sur Internet peuvent être usurpés par de mauvais acteurs. Malheureusement, la politique DMARC pour ce nom de domaine est p=none , qui indique au serveur de messagerie de réception de ne rien faire de spécial si la vérification DMARC échoue. Si la politique est de p=reject , alors mon serveur SMTP de Postfix rejetterait cet e-mail avec OpenDMARC.

Paypal et Facebook ont ​​créé un reject Politique DMARC pour leur nom de domaine.

Donc, si un mauvais acteur essaie d'usurper Paypal ou Facebook, mon serveur de messagerie peut rejeter l'e-mail usurpé avec OpenDMARC. Il existe de nombreux autres noms de domaine bien connus qui ont déployé un reject Politique DMARC, comme indiqué dans le tableau ci-dessous.

  • bankofamerica.com
  • yahoo.com
  • chase.com
  • wellsfargo.com
  • facebook.com
  • google.com
  • youtube.com
  • twitter.com
  • reddit.com
  • instagram.com
  • linkedin.com
  • medium.com
  • pinterest.com
  • dropbox.com
  • microsoft.com
  • whatsapp.com

Le fournisseur de boîtes aux lettres sécurisées Protonmail utilise Postfix et OpenDMARC pour effectuer des vérifications DMARC sur les e-mails entrants et je vais vous montrer comment faire de même sur votre propre serveur SMTP Postfix.

Prérequis

Ce didacticiel s'adresse aux fournisseurs de boîtes aux lettres et à toute personne qui gère son propre serveur de messagerie, afin de protéger ses utilisateurs contre les arnaques par usurpation d'e-mails. Si vous êtes propriétaire d'un nom de domaine et que vous souhaitez empêcher l'utilisation de votre nom de domaine par des usurpateurs d'e-mails, veuillez lire cet article pour créer un enregistrement DMARC et analyser le rapport DMARC. Je vous recommande également de lire cet article si vous ne comprenez pas parfaitement DMARC.

Vous devez avoir un service de vérification DKIM en cours d'exécution sur votre serveur de messagerie avant de configurer OpenDMARC. OpenDMARC doit être utilisé conjointement avec OpenDKIM. Si vous utilisez Amavis pour effectuer la signature et la vérification DKIM, je vous recommande de passer d'Amavis à OpenDKIM. En effet, OpenDMARC ne peut pas lire les résultats de vérification DKIM d'Amavis. Vous n'avez pas à désinstaller complètement Amavis. Désactivez simplement DKIM dans Amavis, puis installez et configurez OpenDKIM.

Si vous n'aimez pas passer à OpenDKIM, vous devez intégrer Amavis à Postfix via l'interface milter, qui sera expliquée à la fin de cet article.

Étape 1 :Installer et configurer OpenDMARC sur CentOS/RHEL

OpenDMARC est un logiciel open source qui peut effectuer des vérifications et des rapports DMARC. Vous pouvez l'installer sur CentOS/RHEL à partir du référentiel EPEL.

sudo dnf install epel-release

sudo dnf install opendmarc

Démarrez OpenDMARC.

sudo systemctl start opendmarc

Activer le démarrage automatique au démarrage.

sudo systemctl enable opendmarc

OpenDMARC écoute sur 127.0.0.1:8893 . Exécutez la commande suivante pour vérifier son état.

systemctl status opendmarc

Sortie :

● opendmarc.service - Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter
   Loaded: loaded (/usr/lib/systemd/system/opendmarc.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-03-08 23:52:59 EDT; 1min 4s ago
     Docs: man:opendmarc(8)
           man:opendmarc.conf(5)
           man:opendmarc-import(8)
           man:opendmarc-reports(8)
           http://www.trusteddomain.org/opendmarc/
 Main PID: 19987 (opendmarc)
    Tasks: 3 (limit: 5047)
   Memory: 1.1M
   CGroup: /system.slice/opendmarc.service
           └─19987 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid

Modifiez ensuite le fichier de configuration principal avec votre éditeur de texte.

sudo nano /etc/opendmarc.conf

Recherchez la ligne suivante :

# AuthservID name

Par défaut, OpenDMARC utilise le nom d'hôte MTA comme AuthserveID, mais il est préférable d'utiliser un nom différent pour le service d'authentification, car Amavisd-new écrasera l'en-tête des résultats d'authentification ajouté par OpenDMARC. Vous pouvez le remplacer par ce qui suit, ce qui vous permettra de voir très facilement quel programme ajoute quel en-tête de résultats d'authentification.

AuthservID OpenDMARC

Ensuite, ajoutez la ligne suivante. Remplacez le nom d'hôte par votre vrai nom d'hôte Postfix. Cela indique à OpenDMARC de faire confiance au résultat de l'authentification avec mail.yourdomain.com dans l'ID. Ceci est nécessaire lorsque vous avez OpenDKIM en cours d'exécution pour effectuer la vérification DKIM. Si le nom d'hôte de Postfix n'est pas inclus dans les TrustedAuthservIDs , alors OpenDMARC ignorera l'en-tête Authentication-Results généré par OpenDKIM.

TrustedAuthservIDs mail.yourdomain.com

Trouvez ensuite la ligne suivante.

# IgnoreAuthenticatedClients false

Remplacez la valeur par true pour ignorer les clients SMTP qui sont authentifiés avec succès via SMTP AUTH, ce qui inclut les clients de messagerie de bureau/mobile qui envoient des e-mails sortants sur le port 587.

IgnoreAuthenticatedClients true

Trouvez ensuite cette ligne :

# RejectFailures false

Par défaut, OpenDMARC ne rejettera pas les e-mails qui échouent à la vérification DMARC, même si la politique du domaine est définie sur p=reject . Si vous préférez rejeter les e-mails qui échouent au DMARC, vérifiez si la politique du domaine est définie sur p=reject , puis décommentez cette ligne et changez false à true .

RejectFailures true

Trouvez la ligne suivante.

# RequiredHeaders  false

Changez-le en :

RequiredHeaders    true

Cela rejettera les e-mails qui ne sont pas conformes aux normes d'en-tête d'e-mail décrites dans RFC5322. Par exemple, si un e-mail entrant n'a pas From: en-tête ou date: en-tête, il sera rejeté. Un champ De :dont aucun nom de domaine n'a pu être extrait sera également rejeté.

Par défaut, OpenDMARC sur CentOS/RHEL ignorera tous les résultats SPF dans les en-têtes d'e-mail et effectuera lui-même les vérifications SPF. Ceci est contrôlé par les deux paramètres suivants.

SPFIgnoreResults true

SPFSelfValidate true

Si vous préférez utiliser un autre service de vérification SPF sur votre serveur de messagerie, dites à OpenDMARC de faire confiance aux résultats SPF dans les en-têtes d'e-mail et d'effectuer uniquement des vérifications SPF lorsqu'il ne trouve pas de résultats SPF dans les en-têtes.

SPFIgnoreResults false

SPFSelfValidate true

Enregistrez et fermez le fichier. Redémarrez ensuite OpenDMARC pour que les modifications prennent effet.

sudo systemctl restart opendmarc

Étape 2 :Intégrer OpenDMARC au serveur SMTP de Postfix

Si vous utilisez OpenDKIM

Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Si vous avez suivi mon tutoriel DKIM sur CentOS 8/RHEL 8, vous devriez avoir des lignes dans ce fichier comme ci-dessous. OpenDKIM écoute sur 127.0.0.1:8891 .

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters

Il ne vous reste plus qu'à ajouter le socket OpenDMARC pour que Postfix puisse communiquer avec OpenDMARC. (Assurez-vous qu'il se trouve après le socket OpenDKIM.) OpenDMARC écoute sur 127.0.0.1:8893 .

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix pour que le changement prenne effet.

sudo systemctl restart postfix

Si vous utilisez Amavis

Si vous utilisez Amavis pour la signature et la vérification DKIM comme dans iRedMail , alors OpenDMARC ne peut pas lire les résultats de vérification DKIM d'Amavis. Vous pouvez installer OpenDKIM pour vérifier la signature DKIM.

Installez OpenDKIM à partir du référentiel EPEL (Extra Packages for Enterprise Linux).

sudo dnf install epel-release

sudo dnf install opendkim

Par défaut, le opendkim package sur CentOS/RHEL s'exécute uniquement en mode vérification. Il n'ajoutera pas de signatures DKIM aux e-mails sortants. C'est ce que nous voulons car Amavis ajoutera des signatures DKIM. Modifier le fichier de configuration OpenDKIM.

sudo nano /etc/opendkim.conf

Trouvez la ligne suivante.

KeyFile   /etc/opendkim/keys/default.private

Comme nous ne voulons pas qu'OpenDKIM signe les e-mails sortants, nous devons commenter cette ligne, puis enregistrer et fermer le fichier.

Modifier le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier, afin que Postfix puisse appeler OpenDKIM via le protocole milter. Notez que vous devez utiliser 127.0.0.1 comme adresse. N'utilisez pas localhost .

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

Enregistrez et fermez le fichier. Ajoutez ensuite postfix utilisateur à opendkim groupe.

sudo gpasswd -a postfix opendkim

Redémarrez postfix services.

sudo systemctl restart postfix

Nous pouvons maintenant démarrer le service opendkim.

sudo systemctl start opendkim

Et activez le démarrage automatique au démarrage.

sudo systemctl enable opendkim

Étape 3 :Test de la vérification OpenDMARC

Envoyez maintenant un e-mail depuis votre autre adresse e-mail vers votre adresse de domaine. Après cela, vérifiez les en-têtes des e-mails. Si OpenDMARC fonctionne correctement, vous pouvez voir les résultats de la vérification DMARC comme ci-dessous.

Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com

J'ai envoyé un e-mail depuis mon compte Gmail à l'adresse e-mail de mon domaine et il a passé la vérification DMARC. Si vous ne voyez pas cet en-tête d'e-mail, vérifiez vos journaux de messagerie.

sudo nano /var/log/maillog

Vous verrez quelque chose comme ci-dessous, ce qui signifie qu'OpenDMARC fonctionne.

opendmarc[26495]: 61DAA3EA44: gmail.com pass

Si vous voyez le message suivant.

ignoring Authentication-Results at 1 from mail.linuxbabe.com

cela signifie qu'OpenDMARC ignore les résultats de vérification SPF et DKIM, donc OpenDMARC ne fonctionne pas. Vous devez ajouter la ligne suivante dans /etc/opendmarc.conf fichier, puis redémarrez OpenDMARC.

TrustedAuthservIDs mail.yourdomain.com

Si vous changez le Postfix myhostname paramètre, n'oubliez pas d'ajouter le nouveau nom d'hôte à TrustedAuthservIDs. Vous pouvez ajouter plusieurs noms d'hôte, séparés par une virgule.

TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.com

Tester OpenDMARC avec Telnet

Vous pouvez utiliser telnet pour usurper un autre nom de domaine, tel que paypal.com. Tout d'abord, exécutez la commande suivante pour vous connecter au port 25 de votre serveur de messagerie.

telnet mail.yourdomain.com 25

Utilisez ensuite les étapes suivantes pour envoyer un e-mail frauduleux. (Vous saisissez les textes en gras.)

HELO mail.paypal.com
250 mail.yourdomain.com
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From:     [email protected]
To:       [email protected]
Subject:  Please update your password.

Click this link to update your password.
.
550 5.7.1 rejected by DMARC policy for paypal.com
quit

Comme vous pouvez le voir, mon serveur de messagerie a rejeté cet e-mail car il n'a pas passé le contrôle DMARC et Paypal a déployé un p=reject politique.

Remarque : Si la politique DMARC d'un domaine est définie sur p=quarantine , alors OpenDMARC milter placera l'e-mail usurpé dans la file d'attente en attente de Postifx indéfiniment. Le postmaster peut répertorier tous les messages dans la file d'attente avec postqueue -p commande et utilisez la commande postsuper utilitaire de ligne de commande pour libérer les messages dans la file d'attente.

(Facultatif) Intégrez Amavis à Postfix via Milter

Comme expliqué dans la section des prérequis, je recommande de passer d'Amavis à OpenDKIM, mais si vous n'aimez pas changer, vous devez intégrer Amavis à Postfix via l'interface milter, afin qu'OpenDMARC puisse lire le résultat de la vérification DKIM d'Amavis.

Installez le amavisd-milter package sur CentOS/RHEL.

sudo dnf install amavisd-milter

Démarrez le service.

sudo systemctl start amavisd-milter

Activer le démarrage automatique au démarrage.

sudo systemctl enable amavisd-milter

Amavisd-milter écoute sur le socket Unix à /run/amavisd/amavisd-milter.sock . Modifier le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin du fichier. Notez que vous devez placer le socket Unix amavisd-milter avant le socket TCP OpenDMARC.

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/run/amavisd/amavisd-milter.sock,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

Commentez également la ligne suivante, afin que Postfix ne transmette pas deux fois les e-mails entrants à Amavis.

content_filter = smtp-amavis:[127.0.0.1]:10024

Enregistrez et fermez le fichier. Ajoutez ensuite postfix à l'amavis groupe, afin que Postfix puisse accéder au socket Amavis Unix.

sudo gpasswd -a postfix amavis

Les e-mails sortants soumis par des utilisateurs authentifiés ne doivent pas être transmis à Amavis via l'interface milter, car Amavis n'ajoutera pas de signature DKIM. Ils doivent utiliser 127.0.0.1:10026 comme d'habitude, afin que la signature DKIM soit ajoutée. Modifiez le fichier Postfix master.cf.

sudo nano /etc/postfix/master.cf

Trouver la submission composant. Cela devrait ressembler à ceci si vous avez suivi mon tutoriel Amavis sur CentOS/RHEL.

submission     inet     n    -    y   -    -    smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_tls_wrappermode=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o content_filter=smtp-amavis:[127.0.0.1]:10026

Ajoutez maintenant l'option suivante à la fin.

-o smtpd_milters=

Comme ceci :

submission     inet     n    -    y   -    -    smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_tls_wrappermode=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o content_filter=smtp-amavis:[127.0.0.1]:10026
 -o smtpd_milters=

Ainsi, le service de soumission Postfix n'utilisera aucun milter, de sorte que les e-mails soumis par des utilisateurs authentifiés ne seront pas transmis à Amavis via l'interface milter. Notez que vous ne devez pas ajouter d'espace avant le signe égal (=).

Vous devez également ajouter cette ligne au smtps composant.

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
  -o smtpd_milters=

Enregistrez et fermez le fichier. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

Désormais, OpenDMARC pourra lire le résultat de la vérification DKIM d'Amavis, et Amavis continuera d'ajouter la signature DKIM pour les utilisateurs authentifiés.


Cent OS
  1. Comment installer le serveur de messagerie postfix sur RHEL 8 / CentOS 8

  2. RHEL 8 / CentOS 8 ouvre le port FTP 21 avec pare-feu

  3. Comment définir ou modifier le nom d'hôte dans CentOS 7 / RHEL 7

  4. Comment installer et intégrer DKIM avec OpenDKIM et Postfix sur un VPS CentOS 6

  5. Comment définir un nom d'interface personnalisé avec NetworkManager dans CentOS/RHEL 7

Comment configurer facilement un serveur de messagerie complet sur CentOS 7 avec iRedMail

Comment configurer facilement un serveur de messagerie complet sur CentOS 8 avec iRedMail

Configurer SpamAssassin sur CentOS/RHEL pour bloquer le spam par e-mail

7 conseils efficaces pour bloquer le spam par e-mail avec Postfix sur CentOS/RHEL

Partie 4 :Configurer SPF et DKIM avec Postfix sur le serveur de messagerie CentOS 8/RHEL 8

Comment configurer un VPN basé sur IPsec avec Strongswan sur CentOS/RHEL 8