V předchozích článcích jsme diskutovali o několika účinných tipech, jak blokovat e-mailový spam. Tento tutoriál vám ukáže, jak nastavit OpenDMARC s Postfix SMTP serverem na CentOS/RHEL pro blokování e-mailového spoofingu a spamu. OpenDMARC je open source filtr e-mailových zásad DMARC pro MTA (Message Transport Agent, neboli server SMTP).
Co je DMARC
DMARC (Domain-based Message Authentication, Reporting and Conformance) je internetový standard (RFC 7489), který umožňuje vlastníkům domén zabránit tomu, aby jejich názvy domén byly používány e-mailovými spoofery. Než byl vynalezen DMARC, je pro špatné herce velmi snadné používat název domény jiných lidí v adrese odesílatele.
Pokud vlastník domény vytvořil DMARC DNS záznam pro své doménové jméno a přijímající e-mailový server implementoval DMARC ověření, pak musí špatní aktéři projít zarovnáním SPF nebo DKIM, aby prošli ověřením DMARC. Pokud kontrola DMARC selže, může být podvržený e-mail odmítnut. Koncoví uživatelé nikdy neuvidí. Pro špatného aktéra je obtížné projít SPF nebo DKIM, pokud není ohrožen e-mailový server vlastníka domény.
Příklad e-mailového spoofingu
Spammer mi poslal e-mail s výkupným pomocí winsaaluminyumankara.com
v adrese Od. Informace whois z winsaaluminyumankara.com
je veřejný. Je zřejmé, že spammer není osobou odpovědnou za toto doménové jméno.
winsaaluminyumankara.com
má záznam DMARC.
Pak jsem zkontroloval hlavičky e-mailů, které ukazují, že SPF selhalo. Neexistuje žádný podpis DKIM. Kontrola DMARC se tedy nezdaří. Toto je podvržený e-mail.
To ukazuje, že e-mailové spoofery nevyužívají pouze velké značky, ale jakákoli doménová jména na internetu mohou být vydávána špatnými herci. Bohužel politika DMARC pro tento název domény je p=none
, který říká přijímajícímu e-mailovému serveru, aby nedělal nic zvláštního, pokud kontrola DMARC selže. Pokud je zásada p=reject
, pak by můj Postfix SMTP server odmítl tento e-mail s OpenDMARC.
Paypal a Facebook vytvořily reject
Zásady DMARC pro název jejich domény.
Takže pokud se špatný herec pokusí podvrhnout Paypal nebo Facebook, můj e-mailový server může odmítnout podvržený e-mail pomocí OpenDMARC. Existuje mnoho dalších známých doménových jmen, které nasadily reject
Zásady DMARC, jak je vidět v tabulce níže.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Poskytovatel zabezpečené poštovní schránky Protonmail používá Postfix a OpenDMARC k provádění DMARC kontrol příchozích e-mailů a já vám ukážu, jak totéž udělat na vašem vlastním Postfix SMTP serveru.
Předpoklady
Tento výukový program je určen pro poskytovatele poštovních schránek a kohokoli, kdo provozuje svůj vlastní poštovní server, aby ochránil své uživatele před podvody e-mailovým spoofingem. Pokud jste vlastníkem názvu domény a chcete zabránit tomu, aby vaše doménové jméno bylo používáno e-mailovými spoofery, přečtěte si tento článek a vytvořte záznam DMARC a analyzujte zprávu DMARC. Také vám doporučuji přečíst si tento článek, pokud plně nerozumíte DMARC.
Před nastavením OpenDMARC byste měli mít na svém poštovním serveru spuštěnou ověřovací službu DKIM. OpenDMARC by měl být používán ve spojení s OpenDKIM. Pokud používáte Amavis k podepisování a ověřování DKIM, pak doporučuji přejít z Amavisu na OpenDKIM. Je to proto, že OpenDMARC nemůže číst výsledky ověření DKIM z Amavisu. Amavis nemusíte úplně odinstalovat. Jednoduše deaktivujte DKIM v Amavisu a poté nainstalujte a nakonfigurujte OpenDKIM.
Pokud nechcete přecházet na OpenDKIM, musíte integrovat Amavis s Postfixem přes rozhraní milter, což bude vysvětleno na konci tohoto článku.
Krok 1:Instalace a konfigurace OpenDMARC na CentOS/RHEL
OpenDMARC je software s otevřeným zdrojovým kódem, který může provádět kontrolu a hlášení DMARC. Můžete jej nainstalovat na CentOS/RHEL z úložiště EPEL.
instalace sudo dnf epel-releasesudo dnf instalace opendmarc
Spusťte OpenDMARC.
sudo systemctl spustit opendmarc
Povolit automatické spouštění při spouštění.
sudo systemctl povolit opendmarc
OpenDMARC naslouchá na 127.0.0.1:8893
. Spusťte následující příkaz a zkontrolujte jeho stav.
stav systemctl opendmarc
Výstup:
● opendmarc.service – Ověřování zpráv, hlášení a shoda na základě domény (DMARC) Milter Načteno:načteno (/usr/lib/systemd/system/opendmarc.service; povoleno; přednastaveno dodavatelem:zakázáno) Aktivní:aktivní (běží ) od Ne 2020-03-08 23:52:59 EDT; Před 1 minutou 4 s Dokumenty:muž:opendmarc(8) muž:opendmarc.conf(5) muž:opendmarc-import(8) muž:opendmarc-reports(8) http://www.trusteddomain.org/opendmarc/ Hlavní PID:19987 (opendmarc) Úkoly:3 (limit:5047) Paměť:1,1M CGroup:/system.slice/opendmarc.service └─19987 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/ opendmarc/opendmarc.pid
Poté upravte hlavní konfigurační soubor pomocí textového editoru.
sudo nano /etc/opendmarc.conf
Najděte následující řádek:
# název AuthservID
Ve výchozím nastavení OpenDMARC používá název hostitele MTA jako AuthserveID, ale pro službu ověřování je lepší použít jiný název, protože Amavisd-new přepíše hlavičku výsledků autentizace přidanou OpenDMARC. Můžete jej změnit na následující, což vám velmi snadno umožní zjistit, který program přidává kterou hlavičku autentizačních výsledků.
AuthservID OpenDMARC
Dále přidejte následující řádek. Nahraďte název hostitele svým skutečným názvem hostitele Postfixu. To říká OpenDMARC, aby důvěřoval výsledku ověření s mail.yourdomain.com
v ID. To je potřeba, když máte spuštěný OpenDKIM k ověření DKIM. Pokud název hostitele Postfix není součástí TrustedAuthservIDs
, pak OpenDMARC bude ignorovat hlavičku Authentication-Results vygenerovanou OpenDKIM.
TrustedAuthservIDs mail.yourdomain.com
Pak najděte následující řádek.
# IgnoreAuthenticatedClients false
Změňte hodnotu na true
ignorovat klienty SMTP, kteří jsou úspěšně autentizováni pomocí SMTP AUTH, což zahrnuje desktopové/mobilní poštovní klienty, kteří odesílají odchozí e-maily přes port 587.
IgnoreAuthenticatedClients true
Pak najděte tento řádek:
# RejectFailures false
Ve výchozím nastavení OpenDMARC neodmítne e-maily, které neprojdou kontrolou DMARC, i když jsou zásady domény nastaveny na p=reject
. Pokud chcete odmítnout e-maily, které neprojdou kontrolou DMARC, když jsou zásady domény nastaveny na p=reject
, pak odkomentujte tento řádek a změňte false
true
.
RejectFailures true
Najděte následující řádek.
# RequiredHeaders false
Změňte jej na:
RequiredHeaders true
Tím odmítnete e-maily, které neodpovídají standardům záhlaví e-mailů, jak je popsáno v RFC5322. Pokud například příchozí e-mail nemá From:
záhlaví nebo date:
záhlaví, bude zamítnuto. Pole From:, ze kterého nelze extrahovat název domény, bude také odmítnuto.
Ve výchozím nastavení bude OpenDMARC na CentOS/RHEL ignorovat všechny výsledky SPF v hlavičkách e-mailů a sám provádí kontroly SPF. To je řízeno následujícími dvěma parametry.
SPFIgnoreResults trueSPFSelfValidate true
Pokud dáváte přednost použití jiné služby kontroly SPF na vašem poštovním serveru, řekněte OpenDMARC, aby důvěřoval výsledkům SPF v hlavičkách e-mailů a prováděl kontroly SPF pouze tehdy, když nemůže najít výsledky SPF v hlavičkách.
SPFIgnoreResults falseSPFSelfValidate true
Uložte a zavřete soubor. Poté restartujte OpenDMARC, aby se změny projevily.
sudo systemctl restart opendmarc
Krok 2:Integrujte OpenDMARC s Postfix SMTP Server
Pokud používáte OpenDKIM
Upravte hlavní konfigurační soubor Postfixu.
sudo nano /etc/postfix/main.cf
Pokud jste postupovali podle mého návodu DKIM na CentOS 8/RHEL 8, měli byste mít v tomto souboru řádky jako níže. OpenDKIM naslouchá na 127.0.0.1:8891
.
# Konfigurace Miltermilter_default_action =acceptmilter_protocol =6smtpd_milters =inet:127.0.0.1:8891non_smtpd_milters =$smtpd_milters
Nyní stačí přidat OpenDMARC socket, aby Postfix mohl komunikovat s OpenDMARC. (Ujistěte se, že je za soketem OpenDKIM.) OpenDMARC naslouchá na 127.0.0.1:8893
.
# Konfigurace Miltermilter_default_action =acceptmilter_protocol =6smtpd_milters =inet:127.0.0.1:8891,inet:127.0.0.1:8893non_smtpd_milters =$smtpd_milters
Uložte a zavřete soubor. Poté restartujte Postfix, aby se změna projevila.
sudo systemctl restart postfix
Pokud používáte Amavis
Pokud používáte Amavis pro podepisování a ověřování DKIM jako v iRedMail , pak OpenDMARC nemůže číst výsledky ověření DKIM z Amavisu. Pro ověření podpisu DKIM si můžete nainstalovat OpenDKIM.
Nainstalujte OpenDKIM z úložiště EPEL (Extra Packages for Enterprise Linux).
instalace sudo dnf epel-releasesudo dnf instalace opendkim
Ve výchozím nastavení opendkim
balíček na CentOS/RHEL běží pouze v ověřovacím režimu. Nepřidává podpisy DKIM k odchozím e-mailům. To je to, co chceme, protože Amavis přidá podpisy DKIM. Upravte konfigurační soubor OpenDKIM.
sudo nano /etc/opendkim.conf
Najděte následující řádek.
KeyFile /etc/opendkim/keys/default.private
Protože nechceme, aby OpenDKIM podepisoval odchozí e-maily, musíme tento řádek zakomentovat, poté soubor uložit a zavřít.
Upravte hlavní konfigurační soubor Postfixu.
sudo nano /etc/postfix/main.cf
Přidejte následující řádky na konec tohoto souboru, takže Postfix bude moci volat OpenDKIM přes protokol milter. Pamatujte, že byste měli použít 127.0.0.1
jako adresa. Nepoužívejte localhost
.
# Konfigurace Miltermilter_default_action =acceptmilter_protocol =6smtpd_milters =inet:127.0.0.1:8891,inet:127.0.0.1:8893non_smtpd_milters =$smtpd_milters
Uložte a zavřete soubor. Poté přidejte postfix
uživateli opendkim
skupina.
sudo gpasswd -a postfix opendkim
Restartujte postfix
službu.
sudo systemctl restart postfix
Nyní můžeme spustit službu opendkim.
sudo systemctl spustit opendkim
A povolit automatické spouštění při spouštění.
sudo systemctl povolit opendkim
Krok 3:Testování ověření OpenDMARC
Nyní odešlete e-mail ze své druhé e-mailové adresy na adresu vaší domény. Poté zkontrolujte záhlaví e-mailů. Pokud OpenDMARC funguje správně, můžete vidět výsledky ověření DMARC jako níže.
Výsledky autentizace:OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com
Odeslal jsem e-mail ze svého účtu Gmail na e-mailovou adresu své domény a prošel ověřením DMARC. Pokud toto záhlaví e-mailu nevidíte, zkontrolujte protokoly pošty.
sudo nano /var/log/maillog
Níže uvidíte něco jako, což znamená, že OpenDMARC funguje.
opendmarc[26495]:61DAA3EA44:gmail.com pass
Pokud se zobrazí následující zpráva.
ignorování Authentication-Results at 1 from mail.linuxbabe.com
to znamená, že OpenDMARC ignoruje výsledky ověření SPF a DKIM, takže OpenDMARC nefunguje. Do /etc/opendmarc.conf
musíte přidat následující řádek a poté restartujte OpenDMARC.
TrustedAuthservIDs mail.yourdomain.com
Pokud změníte Postfix myhostname
nezapomeňte přidat nový název hostitele do TrustedAuthservIDs. Můžete přidat více názvů hostitelů oddělených čárkou.
TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.com
Testování OpenDMARC pomocí Telnet
Telnet můžete použít ke zfalšování jiného názvu domény, jako je paypal.com. Nejprve spusťte následující příkaz pro připojení k portu 25 vašeho poštovního serveru.
telnet mail.yourdomain.com 25
Poté pomocí následujících kroků odešlete falešný e-mail. (Zadáte tučné texty.)
HELO mail.paypal.com 250 mail.yourdomain.comMAIL FROM:<[email protected]> 250 2.1.0 OKRCPT TO:<[e-mail chráněný]> 250 2.1.5 OkDATA 354 Ukončete data pomocí. Od: [e-mail chráněný] Komu: [chráněno e-mailem] Předmět: Aktualizujte své heslo. Kliknutím na tento odkaz aktualizujete své heslo. . 550 5.7.1 zamítnuto zásadami DMARC pro paypal.comukončit
Jak můžete vidět, můj poštovní server odmítl tento e-mail, protože neprošel kontrolou DMARC a Paypal nasadil p=reject
zásady.
Poznámka: Pokud je zásada DMARC domény nastavena na p=quarantine
, pak OpenDMARC milter vloží podvržený e-mail do fronty pozastavení Postifxu na dobu neurčitou. Vedoucí pošty může vypsat všechny zprávy ve frontě pomocí postqueue -p
a použijte postsuper
nástroj příkazového řádku pro uvolnění zpráv ve frontě blokování.
(Volitelné) Integrujte Amavis s Postfixem přes Milter
Jak je vysvětleno v části předpoklady, doporučuji přejít z Amavisu na OpenDKIM, ale pokud nechcete přecházet, musíte integrovat Amavis s Postfixem přes rozhraní milter, aby OpenDMARC mohl číst výsledek ověření DKIM z Amavisu.
Nainstalujte amavisd-milter
balíček na CentOS/RHEL.
instalace sudo dnf amavisd-milter
Spusťte službu.
sudo systemctl start amavisd-milter
Povolit automatické spouštění při spouštění.
sudo systemctl povolit amavisd-milter
Amavisd-milter poslouchá na Unixovém soketu na /run/amavisd/amavisd-milter.sock
. Upravte hlavní konfigurační soubor Postfixu.
sudo nano /etc/postfix/main.cf
Přidejte následující řádky na konec souboru. Pamatujte, že byste měli umístit amavisd-milter Unix socket před OpenDMARC TCP socket.
# Milter configurationmilter_default_action =acceptmilter_protocol =6smtpd_milters =unix:/run/amavisd/amavisd-milter.sock,inet:127.0.0.1:8893non_smtpd_milters =$smtpd_milters
Zakomentujte také následující řádek, aby Postfix nepředával Amavis příchozí e-maily dvakrát.
content_filter =smtp-amavis:[127.0.0.1]:10024
Uložte a zavřete soubor. Poté přidejte postfix
do amavis
skupina, takže Postfix bude mít přístup k Amavis Unix socketu.
sudo gpasswd -a postfix amavis
Odchozí e-maily odeslané od ověřených uživatelů by neměly být předány Amavisu přes rozhraní milter, protože Amavis nepřidá podpis DKIM. Měli by používat 127.0.0.1:10026
jako obvykle, takže bude přidán podpis DKIM. Upravte soubor Postfix master.cf.
sudo nano /etc/postfix/master.cf
Najděte submission
součástka. Pokud jste postupovali podle mého návodu Amavis na CentOS/RHEL, mělo by to vypadat následovně.
podání inet n - y - - smtpd -o syslog_name =postfix / odevzdání -o smtpd_tls_security_level =šifrování -o smtpd_tls_wrappermode =no -o smtpd_sasl_auth_enable =yes -o smtpd_relay_restrictions =permit_sasl_authenticated, odmítnout -o smtpd_recipient_restrictions =permit_mynetworks, permit_sasl_authenticated, odmítnout - o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=smtp-amavis:[127.0.0.1]:10026
Nyní přidejte na konec následující možnost.
-o smtpd_milters=
Takhle:
podání inet n - y - - smtpd -o syslog_name =postfix / odevzdání -o smtpd_tls_security_level =šifrování -o smtpd_tls_wrappermode =no -o smtpd_sasl_auth_enable =yes -o smtpd_relay_restrictions =permit_sasl_authenticated, odmítnout -o smtpd_recipient_restrictions =permit_mynetworks, permit_sasl_authenticated, odmítnout - o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=smtp-amavis:[127.0.0.1]:10026 -o smtpd_milters=
Díky tomu služba odesílání Postfixu nebude vůbec používat milter, takže e-maily odeslané ověřenými uživateli nebudou předány Amavisu přes rozhraní milteru. Pamatujte, že před rovnítko (=) byste neměli přidávat mezery.
Tento řádek byste také měli přidat do smtps
komponenta.
Uložte a zavřete soubor. Restartujte Postfix, aby se změny projevily.
sudo systemctl restart postfix
Nyní bude OpenDMARC moci číst výsledek ověření DKIM z Amavisu a Amavis bude nadále přidávat podpis DKIM pro ověřené uživatele.