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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.