GNU/Linux >> Linux Esercitazione >  >> Cent OS

Configura OpenDMARC con Postfix su CentOS/RHEL per bloccare lo spoofing e-mail

Negli articoli precedenti, abbiamo discusso di diversi suggerimenti efficaci per bloccare lo spam e-mail. Questo tutorial ti mostrerà come configurare OpenDMARC con il server SMTP Postfix su CentOS/RHEL per bloccare lo spoofing e lo spam della posta elettronica. OpenDMARC è un filtro di criteri di posta elettronica DMARC open source per MTA (Message Transport Agent, noto anche come server SMTP).

Cos'è DMARC

DMARC (Domain-based Message Authentication, Reporting and Conformance) è uno standard Internet (RFC 7489) che consente ai proprietari di dominio di impedire che i loro nomi di dominio vengano utilizzati da spoofer di posta elettronica. Prima che DMARC venga inventato, è molto facile per i malintenzionati utilizzare il nome di dominio di altre persone nell'indirizzo Da.

Se un proprietario di dominio ha creato un record DNS DMARC per il proprio nome di dominio e un server di posta elettronica ricevente ha implementato la verifica DMARC, i malintenzionati devono superare l'allineamento SPF o DKIM per superare la verifica DMARC. Se il controllo DMARC ha esito negativo, l'e-mail contraffatta potrebbe essere rifiutata. Mai visto dagli utenti finali. È difficile per il cattivo attore superare SPF o DKIM, a meno che il server di posta elettronica del proprietario del dominio non sia compromesso.

Esempio di spoofing email

Uno spammer mi ha inviato un'e-mail di riscatto utilizzando winsaaluminyumankara.com nell'indirizzo Da. Le informazioni whois di winsaaluminyumankara.com è pubblico. Chiaramente lo spammer non è una persona responsabile di questo nome di dominio.

winsaaluminyumankara.com ha un record DMARC.

Quindi ho controllato le intestazioni delle e-mail, che mostrano SPF non riuscito. Non c'è la firma DKIM. Quindi il controllo DMARC ha esito negativo. Questa è un'email contraffatta.

Ciò dimostra che non solo i grandi marchi vengono utilizzati dagli spoofer di posta elettronica, ma qualsiasi nome di dominio su Internet potrebbe essere impersonato da malintenzionati. Sfortunatamente la politica DMARC per questo nome di dominio è p=none , che dice al server di posta elettronica ricevente di non fare nulla di speciale se il controllo DMARC ha esito negativo. Se la norma è p=reject , il mio server SMTP Postfix rifiuterebbe questa email con OpenDMARC.

Paypal e Facebook hanno creato un reject Criterio DMARC per il loro nome di dominio.

Quindi, se un cattivo attore tenta di falsificare Paypal o Facebook, il mio server di posta elettronica può rifiutare l'e-mail contraffatta con OpenDMARC. Ci sono molti altri noti nomi di dominio che hanno distribuito un reject Politica DMARC, come si può vedere nella tabella seguente.

  • 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

Il provider di cassette postali sicure Protonmail utilizza Postfix e OpenDMARC per eseguire controlli DMARC sulle e-mail in entrata e ti mostrerò come fare lo stesso sul tuo server SMTP Postfix.

Prerequisiti

Questo tutorial è rivolto ai fornitori di cassette postali e a chiunque gestisca il proprio server di posta, per proteggere i propri utenti dall'essere truffati dallo spoofing della posta elettronica. Se sei il proprietario di un nome di dominio e desideri impedire che il tuo nome di dominio venga utilizzato da spoofer e-mail, leggi questo articolo per creare un record DMARC e analizzare il rapporto DMARC. Ti consiglio anche di leggere quell'articolo se non comprendi appieno DMARC.

Dovresti avere un servizio di verifica DKIM in esecuzione sul tuo server di posta prima di configurare OpenDMARC. OpenDMARC deve essere utilizzato insieme a OpenDKIM. Se usi Amavis per eseguire la firma e la verifica DKIM, ti consiglio di passare da Amavis a OpenDKIM. Questo perché OpenDMARC non può leggere i risultati della verifica DKIM da Amavis. Non è necessario disinstallare completamente Amavis. Disabilita semplicemente DKIM in Amavis, quindi installa e configura OpenDKIM.

Se non ti piace passare a OpenDKIM, devi integrare Amavis con Postfix tramite l'interfaccia milter, che verrà spiegata alla fine di questo articolo.

Passaggio 1:installa e configura OpenDMARC su CentOS/RHEL

OpenDMARC è un software open source in grado di eseguire controlli e report DMARC. Puoi installarlo su CentOS/RHEL dal repository EPEL.

sudo dnf install epel-release

sudo dnf install opendmarc

Avvia OpenDMARC.

sudo systemctl start opendmarc

Abilita l'avvio automatico all'avvio.

sudo systemctl enable opendmarc

OpenDMARC è in ascolto su 127.0.0.1:8893 . Esegui il comando seguente per verificarne lo stato.

systemctl status opendmarc

Uscita:

● 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

Quindi modifica il file di configurazione principale con il tuo editor di testo.

sudo nano /etc/opendmarc.conf

Trova la seguente riga:

# AuthservID name

Per impostazione predefinita OpenDMARC utilizza il nome host MTA come AuthserveID, ma è meglio utilizzare un nome diverso per il servizio di autenticazione, perché Amavisd-new sovrascriverà l'intestazione dei risultati di autenticazione aggiunta da OpenDMARC. Puoi cambiarlo come segue, che sarà molto facile per te vedere quale programma aggiunge quale intestazione di autenticazione-risultati.

AuthservID OpenDMARC

Quindi, aggiungi la seguente riga. Sostituisci il nome host con il tuo vero nome host Postfix. Questo dice a OpenDMARC di fidarsi del risultato dell'autenticazione con mail.yourdomain.com nell'ID. Questo è necessario quando hai OpenDKIM in esecuzione per eseguire la verifica DKIM. Se il nome host Postfix non è incluso in TrustedAuthservIDs , OpenDMARC ignorerà l'intestazione Authentication-Results generata da OpenDKIM.

TrustedAuthservIDs mail.yourdomain.com

Quindi trova la riga seguente.

# IgnoreAuthenticatedClients false

Cambia il valore in true ignorare i client SMTP che sono stati autenticati correttamente tramite SMTP AUTH, che include client di posta desktop/mobile che inviano e-mail in uscita sulla porta 587.

IgnoreAuthenticatedClients true

Quindi trova questa riga:

# RejectFailures false

Per impostazione predefinita, OpenDMARC non rifiuterà le email che non superano il controllo DMARC, anche se la politica del dominio è impostata su p=reject . Se preferisci rifiutare le email che non superano DMARC, controlla quando la politica del dominio è impostata su p=reject , quindi decommenta questa riga e cambia false su true .

RejectFailures true

Trova la riga seguente.

# RequiredHeaders  false

Cambialo in:

RequiredHeaders    true

Ciò rifiuterà le e-mail che non sono conformi agli standard di intestazione e-mail come descritto in RFC5322. Ad esempio, se un'e-mail in arrivo non ha From: header o date: header, verrà rifiutato. R Da:verrà rifiutato anche il campo da cui non è stato possibile estrarre il nome di dominio.

Per impostazione predefinita, OpenDMARC su CentOS/RHEL ignorerà tutti i risultati SPF nelle intestazioni delle e-mail ed eseguirà i controlli SPF da solo. Questo è controllato dai seguenti due parametri.

SPFIgnoreResults true

SPFSelfValidate true

Se preferisci utilizzare un altro servizio di controllo SPF sul tuo server di posta, comunica a OpenDMARC di considerare attendibili i risultati SPF nelle intestazioni e-mail ed eseguire controlli SPF solo quando non riesce a trovare i risultati SPF nelle intestazioni.

SPFIgnoreResults false

SPFSelfValidate true

Salva e chiudi il file. Quindi riavvia OpenDMARC per rendere effettive le modifiche.

sudo systemctl restart opendmarc

Fase 2:integra OpenDMARC con il server SMTP Postfix

Se usi OpenDKIM

Modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/main.cf

Se hai seguito il mio tutorial DKIM su CentOS 8/RHEL 8, dovresti avere righe in questo file come di seguito. OpenDKIM è in ascolto su 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

Ora devi solo aggiungere il socket OpenDMARC in modo che Postfix possa parlare con OpenDMARC. (Assicurati che sia dopo il socket OpenDKIM.) OpenDMARC è in ascolto su 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

Salva e chiudi il file. Quindi riavvia Postfix per rendere effettive le modifiche.

sudo systemctl restart postfix

Se usi Amavis

Se utilizzi Amavis per la firma e la verifica DKIM come in iRedMail , quindi OpenDMARC non può leggere i risultati della verifica DKIM da Amavis. Puoi installare OpenDKIM per verificare la firma DKIM.

Installa OpenDKIM dal repository EPEL (Extra Packages for Enterprise Linux).

sudo dnf install epel-release

sudo dnf install opendkim

Per impostazione predefinita, il opendkim il pacchetto su CentOS/RHEL viene eseguito solo in modalità di verifica. Non aggiungerà firme DKIM alle e-mail in uscita. Questo è ciò che vogliamo perché Amavis aggiungerà le firme DKIM. Modifica il file di configurazione di OpenDKIM.

sudo nano /etc/opendkim.conf

Trova la riga seguente.

KeyFile   /etc/opendkim/keys/default.private

Dal momento che non vogliamo che OpenDKIM firmi le email in uscita, dobbiamo commentare questa riga, quindi salvare e chiudere il file.

Modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/main.cf

Aggiungi le seguenti righe alla fine di questo file, così Postfix sarà in grado di chiamare OpenDKIM tramite il protocollo milter. Nota che dovresti usare 127.0.0.1 come indirizzo. Non utilizzare 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

Salva e chiudi il file. Quindi aggiungi postfix utente a opendkim gruppo.

sudo gpasswd -a postfix opendkim

Riavvia postfix servizio.

sudo systemctl restart postfix

Ora possiamo avviare il servizio opendkim.

sudo systemctl start opendkim

E abilita l'avvio automatico all'avvio.

sudo systemctl enable opendkim

Fase 3:test della verifica OpenDMARC

Ora invia un'e-mail dal tuo altro indirizzo e-mail al tuo indirizzo di dominio. Successivamente, controlla le intestazioni delle e-mail. Se OpenDMARC funziona correttamente, puoi vedere i risultati della verifica DMARC come di seguito.

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

Ho inviato un'e-mail dal mio account Gmail all'indirizzo e-mail del mio dominio e ha superato la verifica DMARC. Se non vedi questa intestazione e-mail, controlla i log di posta.

sudo nano /var/log/maillog

Vedrai qualcosa come sotto, il che significa che OpenDMARC funziona.

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

Se vedi il seguente messaggio.

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

significa che OpenDMARC sta ignorando i risultati della verifica SPF e DKIM, quindi OpenDMARC non funziona. Devi aggiungere la seguente riga in /etc/opendmarc.conf file, quindi riavvia OpenDMARC.

TrustedAuthservIDs mail.yourdomain.com

Se modifichi il Postfix myhostname parametro, ricordarsi di aggiungere il nuovo nome host a TrustedAuthservIDs. Puoi aggiungere più nomi host, separati da virgole.

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

Test di OpenDMARC con Telnet

Puoi usare telnet per falsificare un altro nome di dominio, come paypal.com. Innanzitutto, esegui il comando seguente per connetterti alla porta 25 del tuo server di posta.

telnet mail.yourdomain.com 25

Quindi utilizzare i seguenti passaggi per inviare un'e-mail contraffatta. (Digita i testi in grassetto.)

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

Come puoi vedere, il mio server di posta ha rifiutato questa email perché non ha superato il controllo DMARC e Paypal ha distribuito un p=reject politica.

Nota: Se il criterio DMARC di un dominio è impostato su p=quarantine , quindi OpenDMARC milter metterà l'e-mail contraffatta nella coda di attesa di Postifx indefinitamente. Il postmaster può elencare tutti i messaggi in coda con postqueue -p comando e usa il postsuper utilità della riga di comando per rilasciare i messaggi nella coda di attesa.

(Opzionale) Integra Amavis con Postfix tramite Milter

Come spiegato nella sezione dei prerequisiti, consiglio di passare da Amavis a OpenDKIM, ma se non ti piace cambiare, devi integrare Amavis con Postfix tramite l'interfaccia milter, in modo che OpenDMARC possa leggere il risultato della verifica DKIM da Amavis.

Installa amavisd-milter pacchetto su CentOS/RHEL.

sudo dnf install amavisd-milter

Avvia il servizio.

sudo systemctl start amavisd-milter

Abilita l'avvio automatico all'avvio.

sudo systemctl enable amavisd-milter

Amavisd-milter è in ascolto su socket Unix su /run/amavisd/amavisd-milter.sock . Modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/main.cf

Aggiungi le seguenti righe alla fine del file. Nota che dovresti posizionare il socket Unix amavisd-milter prima del 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

Commenta anche la riga seguente, in modo che Postfix non passerà due volte le email in arrivo ad Amavis.

content_filter = smtp-amavis:[127.0.0.1]:10024

Salva e chiudi il file. Quindi aggiungi postfix agli amavis gruppo, quindi Postfix sarà in grado di accedere al socket Amavis Unix.

sudo gpasswd -a postfix amavis

Le e-mail in uscita inviate da utenti autenticati non devono essere passate ad Amavis tramite l'interfaccia milter, perché Amavis non aggiungerà la firma DKIM. Dovrebbero usare 127.0.0.1:10026 come al solito, in modo che venga aggiunta la firma DKIM. Modifica il file Postfix master.cf.

sudo nano /etc/postfix/master.cf

Trova il submission componente. Dovrebbe apparire come segue se hai seguito il mio tutorial su Amavis su 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

Ora aggiungi la seguente opzione alla fine.

-o smtpd_milters=

In questo modo:

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=

In questo modo il servizio di invio di Postfix non utilizzerà affatto il milter, in modo che le e-mail inviate da utenti autenticati non vengano passate ad Amavis tramite l'interfaccia del milter. Nota che non dovresti aggiungere spazio prima del segno di uguale (=).

Dovresti anche aggiungere questa riga a smtps componente.

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=

Salva e chiudi il file. Riavvia Postfix per rendere effettive le modifiche.

sudo systemctl restart postfix

Ora OpenDMARC sarà in grado di leggere il risultato della verifica DKIM da Amavis e Amavis continuerà ad aggiungere la firma DKIM per gli utenti autenticati.


Cent OS
  1. Come installare il server di posta Postfix su RHEL 8 / CentOS 8

  2. RHEL 8 / CentOS 8 apre la porta FTP 21 con firewalld

  3. Come impostare o modificare il nome host in CentOS 7 / RHEL 7

  4. Come installare e integrare DKIM con OpenDKIM e Postfix su CentOS 6 VPS

  5. Come impostare un nome di interfaccia personalizzato con NetworkManager in CentOS/RHEL 7

Come configurare facilmente un server di posta completo su CentOS 7 con iRedMail

Come configurare facilmente un server di posta completo su CentOS 8 con iRedMail

Configura SpamAssassin su CentOS/RHEL per bloccare la posta indesiderata

7 suggerimenti efficaci per bloccare lo spam e-mail con Postfix su CentOS/RHEL

Parte 4:configurazione di SPF e DKIM con Postfix su CentOS 8/RHEL 8 Mail Server

Come configurare una VPN basata su IPsec con Strongswan su CentOS/RHEL 8