Skonfiguruj OpenDMARC z Postfixem na Debianie, aby blokować spam/podszywanie się pod e-maile
W poprzednich artykułach omówiliśmy kilka skutecznych wskazówek dotyczących blokowania spamu e-mailowego. W tym samouczku dowiesz się, jak skonfigurować OpenDMARC z serwerem Postfix SMTP w Debianie, aby blokować fałszowanie wiadomości e-mail i spam. OpenDMARC to filtr zasad poczty e-mail DMARC typu open source dla MTA (Message Transport Agent, znany również jako serwer SMTP).
Co to jest DMARC
DMARC (Domain-Based Message Authentication, Reporting and Conformance) to standard internetowy (RFC 7489), który umożliwia właścicielom domen zapobieganie wykorzystywaniu ich nazw domen przez osoby fałszujące wiadomości e-mail. Zanim wynaleziono DMARC, złym aktorom bardzo łatwo było używać nazw domen innych osób w adresie Od: nadawcy.
Jeśli właściciel domeny utworzył rekord DNS DMARC dla swojej nazwy domeny, a odbierający serwer poczty e-mail wdrożył kontrolę DMARC, wówczas nieuczciwi aktorzy muszą przejść wyrównanie SPF lub wyrównanie DKIM, aby przejść kontrolę DMARC. Jeśli sprawdzenie DMARC nie powiedzie się, sfałszowana wiadomość e-mail może zostać odrzucona i nigdy nie będzie widoczna dla użytkowników końcowych. Złemu aktorowi trudno jest przekazać SPF lub DKIM, chyba że serwer poczty e-mail właściciela domeny zostanie naruszony.
Przykład fałszowania wiadomości e-mail
Spamer wysłał mi wiadomość e-mail z żądaniem okupu przy użyciu adresu " data-bind="text: viewFrom, title: viewFrom">winsaaluminyumankara.com w adresie Od. Informacje Whois o " data-bind="text: viewFrom, title: viewFrom">winsaaluminyumankara.com jest publiczny. Jest oczywiste, że spamer nie jest osobą odpowiedzialną za tę nazwę domeny.
" data-bind="text: viewFrom, title: viewFrom">winsaaluminyumankara.com ma rekord DMARC.
Następnie sprawdziłem nagłówki wiadomości e-mail, które pokazują, że SPF nie powiódł się. Nie ma podpisu DKIM. Zatem sprawdzenie DMARC kończy się niepowodzeniem. To jest sfałszowany e-mail.
To pokazuje, że nie tylko duże marki są wykorzystywane przez osoby fałszujące wiadomości e-mail - wszelkie nazwy domen w Internecie mogą zostać podszywane przez nieuczciwych aktorów. Niestety, polityka DMARC dla tej nazwy domeny to p=none, która nakazuje serwerowi odbierającemu pocztę e-mail, aby nie robił nic specjalnego, jeśli sprawdzenie DMARC nie powiedzie się. Jeśli zasadą jest p=reject, mój serwer SMTP Postfix odrzuci tę wiadomość e-mail za pomocą OpenDMARC.
Paypal i Facebook utworzyły politykę DMARC reject dla swojej nazwy domeny.
Jeśli więc zły aktor spróbuje sfałszować Paypal lub Facebook, mój serwer e-mail może odrzucić sfałszowaną wiadomość e-mail za pomocą OpenDMARC. Istnieje wiele innych dobrze znanych nazw domen, które wdrożyły politykę DMARC reject, co widać w poniższej tabeli.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dostawca bezpiecznej skrzynki pocztowej Protonmail używa Postfix i OpenDMARC do sprawdzania DMARC przychodzących wiadomości e-mail. Pokażę Ci, jak zrobić to samo na własnym serwerze Postfix SMTP.
Warunki wstępne
Ten samouczek jest przeznaczony dla dostawców skrzynek pocztowych i każdego, kto prowadzi własny serwer pocztowy, aby chronić swoich użytkowników przed oszustwami w postaci fałszowania wiadomości e-mail. Jeśli jesteś właścicielem nazwy domeny i chcesz zapobiec wykorzystywaniu Twojej nazwy domeny przez osoby fałszujące wiadomości e-mail, przeczytaj ten artykuł, aby utworzyć rekord DMARC i przeanalizować raport DMARC. Polecam również przeczytanie tego artykułu, jeśli nie do końca rozumiesz DMARC.
Aby skorzystać z tego samouczka, musisz najpierw przeprowadzić weryfikację SPF i DKIM, ponieważ DMARC podejmuje ostateczną decyzję na podstawie wyników weryfikacji SPF i DKIM.
Konfigurowanie OpenDMARC z serwerem Postfix SMTP w Debianie
OpenDMARC to oprogramowanie typu open source, które może przeprowadzać weryfikację i raportowanie DMARC. Jest już w repozytorium Debiana, więc możesz uruchomić następujące polecenie, aby go zainstalować.
sudo apt install opendmarcJeśli zostaniesz poproszony o skonfigurowanie bazy danych dla OpenDMARC za pomocą dbconfig-common, możesz bezpiecznie wybrać Nie.
Po zainstalowaniu zostanie uruchomiony automatycznie. Sprawdź jego status za pomocą:
systemctl status opendmarcWyjście :
● opendmarc.service - OpenDMARC Milter
Loaded: loaded (/lib/systemd/system/opendmarc.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2018-10-30 19:49:52 CST; 23s ago
Docs: man:opendmarc(8)
man:opendmarc.conf(5)
Main PID: 14858 (opendmarc)
Tasks: 6 (limit: 1110)
CGroup: /system.slice/opendmarc.service
└─14858 /usr/sbin/opendmarcWskazówka: Jeśli powyższe polecenie nie zakończy się natychmiast, możesz je zakończyć, naciskając klawisz Q.
Należy pamiętać, że automatyczne uruchamianie podczas uruchamiania systemu jest wyłączone. Możemy to włączyć poprzez:
sudo systemctl enable opendmarcNastępnie edytuj główny plik konfiguracyjny za pomocą edytora tekstu.
sudo nano /etc/opendmarc.conf
Znajdź następującą linię:
# AuthservID nameDomyślnie OpenDMARC używa nazwy hosta MTA jako AuthserveID, ale lepiej jest użyć innej nazwy dla usługi uwierzytelniania, ponieważ Amavisd-new nadpisze nagłówek wyników uwierzytelnienia dodany przez OpenDMARC. Możesz go zmienić na następujący, dzięki czemu bardzo łatwo zobaczysz, który program dodaje nagłówek wyników uwierzytelniania.
AuthservID OpenDMARCNastępnie dodaj następujący wiersz. Zastąp nazwę hosta prawdziwą nazwą hosta Postfix. To mówi OpenDMARC, aby zaufał wynikowi uwierzytelnienia z mail.yourdomain.com w identyfikatorze. Jest to potrzebne, jeśli masz uruchomione OpenDKIM, aby przeprowadzić weryfikację DKIM.
TrustedAuthservIDs mail.yourdomain.comJeśli nazwa hosta Postfix nie jest uwzględniona w TrustedAuthservIDs lub masz literówkę w nazwie hosta, OpenDMARC zignoruje nagłówek Authentication-Results wygenerowany przez OpenDKIM i znajdziesz następujący komunikat o błędzie dziennik poczty /var/log/mail.log
opendmarc[1133]: A436A205C9 ignoring Authentication-Results at 1 from mail.yourdomain.comNastępnie znajdź tę linię:
# RejectFailures falseDomyślnie OpenDMARC nie odrzuca e-maili, które nie przejdą kontroli DMARC, nawet jeśli polityka domeny jest ustawiona na p=reject. Jeśli wolisz odrzucać e-maile, które nie przeszły kontroli DMARC, gdy polityka domeny jest ustawiona na p=reject, odkomentuj tę linię i zmień false na true.
RejectFailures trueMożesz chcieć, aby OpenDMARC ignorował klientów SMTP, którzy zostali pomyślnie uwierzytelnieni poprzez SMTP AUTH. Na przykład mam serwer SMTP Postfix działający na moim serwerze internetowym bloga, który używa mojego głównego serwera pocztowego jako przekaźnika do wysyłania wiadomości e-mail z powiadomieniami, więc chcę, aby openDMARC ignorował wiadomości e-mail wysyłane z serwera internetowego mojego bloga. Dotyczy to również klientów poczty na komputery stacjonarne/mobilne, które wysyłają wychodzące wiadomości e-mail przez port 587. W takim przypadku dodaj następujący wiersz na końcu tego pliku.
IgnoreAuthenticatedClients trueDodaj następujący wiersz na końcu tego pliku.
RequiredHeaders trueSpowoduje to odrzucenie wiadomości e-mail, które nie są zgodne ze standardami nagłówków wiadomości e-mail opisanymi w dokumencie RFC5322. Na przykład, jeśli przychodząca wiadomość e-mail nie zawiera nagłówka From: ani date:, zostanie odrzucona. Pole From:, z którego nie można było wyodrębnić nazwy domeny, również zostanie odrzucone.
Zaleca się również dodanie następującej linii na końcu tego pliku. Spowoduje to, że OpenDMARC sam wykona zastępcze sprawdzenie SPF, gdy nie znajdzie żadnych wyników SPF w nagłówku wiadomości.
SPFSelfValidate trueOpenDMARC jest zaimplementowany jako milter (filtr poczty). Postfix może komunikować się z aplikacjami Milter poprzez gniazdo Unix. Domyślny plik gniazda używany przez OpenDMARC to /var/run/opendmarc/opendmarc.sock. Jednak demon SMTP Postfix dostarczany z Debianem działa w więzieniu chroot, co oznacza, że demon SMTP rozpoznaje wszystkie nazwy plików względem katalogu kolejki Postfix (/var/spool/postfix). Musimy więc zmienić plik gniazda używany przez OpenDMARC.
Znajdź następującą linię.
Socket local:/var/run/opendmarc/opendmarc.sockZmień to na:
Socket local:/var/spool/postfix/opendmarc/opendmarc.sockZapisz i zamknij plik. W Debianie 16.04 w tym pliku nie ma zdefiniowanego gniazda, wystarczy dodać powyższą linię do pliku.
Utwórz katalog do przechowywania pliku gniazda OpenDMARC i zmień jego własność, aby użytkownik opendmarc i grupa opendmarc mieli do niego dostęp.
sudo mkdir -p /var/spool/postfix/opendmarc
sudo chown opendmarc:opendmarc /var/spool/postfix/opendmarc -RZmień uprawnienia na 750, aby ograniczyć dostęp, aby użytkownicy spoza grupy opendmarc nie mogli uzyskać dostępu do tego katalogu.
sudo chmod 750 /var/spool/postfix/opendmarc/ -RDodaj użytkownika postfix do grupy opendmarc.
sudo adduser postfix opendmarcNastępnie uruchom ponownie OpenDMARC.
sudo systemctl restart opendmarcSkonfiguruj serwer SMTP Postfix
Edytuj główny plik konfiguracyjny.
sudo nano /etc/postfix/main.cfJeśli już skonfigurowałeś OpenDKIM, powinieneś mieć linie w tym pliku jak poniżej.
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_miltersTeraz wystarczy dodać plik gniazda OpenDMARC, aby Postfix mógł rozmawiać z OpenDMARC. (Upewnij się, że jest za gniazdem OpenDKIM.)
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock,local:opendmarc/opendmarc.sock
non_smtpd_milters = $smtpd_miltersZapisz i zamknij plik. Następnie uruchom ponownie Postfix, aby zmiana zaczęła obowiązywać.
sudo systemctl restart postfixJeśli używasz iRedMaila
Jeśli użyłeś iRedMail do skonfigurowania serwera pocztowego, nie masz OpenDKIM. iRedMail używa Amavis do podpisywania i weryfikacji DKIM, ale OpenDMARC nie może odczytać wyników weryfikacji DKIM z Amavis, co spowoduje niepowodzenie sprawdzania DMARC. Musimy zatem skonfigurować weryfikację DKIM w następujący sposób.
Uruchom następujące polecenie, aby zainstalować OpenDKIM.
sudo apt install opendkimEdytuj główny plik konfiguracyjny OpenDKIM.
sudo nano /etc/opendkim.confZnajdź następującą linię
#Mode svDomyślnie OpenDKIM będzie działać zarówno jako osoba podpisująca, jak i weryfikator (v). Ponieważ iRedMail używa już Amavis do podpisywania DKIM, potrzebujemy tylko OpenDKIM, aby działał jako weryfikator, aby OpenDMARC mógł odczytać wynik weryfikacji. Usuń symbol # i zmień tryb na weryfikator.
Mode vNastępnie dodaj następujące wiersze na końcu tego pliku.
#OpenDKIM user
# Remember to add user postfix to group opendkim
UserID opendkim
# Hosts to ignore when verifying signatures
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
Socket local:/var/spool/postfix/opendkim/opendkim.sockZapisz i zamknij plik. Dodaj użytkownika postfix do grupy opendkim.
sudo adduser postfix opendkimUtwórz plik zaufanych hostów.
sudo mkdir /etc/opendkim/
sudo nano /etc/opendkim/trusted.hostsDodaj następujące wiersze do nowo utworzonego pliku.
127.0.0.1
localhost
*.your-domain.comPowyższe oznacza, że wiadomości przychodzące z powyższych adresów IP i domen będą zaufane. Zapisz i zamknij plik. Następnie zmień właściciela.
sudo chown -R opendkim:opendkim /etc/opendkimNastępnie utwórz katalog do przechowywania pliku gniazda OpenDKIM i zezwól na dostęp tylko użytkownikowi i grupie opendkim.
sudo mkdir /var/spool/postfix/opendkim
sudo chown opendkim:opendkim /var/spool/postfix/opendkimJeśli możesz znaleźć następujący wiersz w pliku /etc/default/opendkim.
SOCKET="local:/var/run/opendkim/opendkim.sock"Zmień to na
SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"Następnie musimy edytować główny plik konfiguracyjny Postfix.
sudo nano /etc/postfix/main.cfDodaj następujące wiersze na końcu tego pliku, aby połączyć Postfix z OpenDKIM i OpenDMARC.
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock,local:opendmarc/opendmarc.sock
non_smtpd_milters = $smtpd_miltersZapisz i zamknij plik. Uruchom ponownie OpenDKIM, OpenDMARC i Postfix.
sudo systemctl restart opendkim opendmarc postfixTestowanie weryfikacji OpenDMARC
Teraz wyślij wiadomość e-mail z innego adresu e-mail, np. Gmaila, na adres swojej domeny. Następnie sprawdź nagłówki wiadomości e-mail. Jeśli OpenDMARC działa poprawnie, możesz zobaczyć wyniki weryfikacji DMARC jak poniżej.
Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.comWysłałem wiadomość e-mail z mojego konta Gmail na adres e-mail mojej domeny i przeszła ona weryfikację DMARC. Jeśli nie widzisz tego nagłówka e-maila, sprawdź swoje dzienniki poczty.
sudo nano /var/log/mail.logZobaczysz coś takiego jak poniżej, co oznacza, że OpenDMARC działa.
opendmarc[26495]: implicit authentication service: mail.linux-terminal.com
opendmarc[26495]: 61DAA3EA44: gmail.com passJeśli zobaczysz następujący komunikat.
ignoring Authentication-Results at 1 from mail.linux-terminal.comoznacza to, że OpenDMARC ignoruje wyniki weryfikacji SPF i DKIM, więc OpenDMARC nie działa. Musisz dodać następującą linię w pliku /etc/opendmarc.conf, a następnie zrestartować OpenDMARC.
TrustedAuthservIDs mail.yourdomain.comJeśli zmienisz parametr Postfix myhostname, pamiętaj o dodaniu nowej nazwy hosta do TrustedAuthservIDs. Możesz dodać wiele nazw hostów, oddzielając je przecinkami.
TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.comTestowanie OpenDMARC z Telnetem
Możesz użyć telnetu, aby sfałszować inną nazwę domeny, taką jak paypal.com. Najpierw uruchom następujące polecenie na komputerze lokalnym, aby połączyć się z portem 25 serwera pocztowego.
telnet mail.yourdomain.com 25Następnie wykonaj poniższe czynności, aby wysłać fałszywą wiadomość e-mail. (Wpisz pogrubiony tekst.)
HELO mail.paypal.com
250 mail.yourdomain.com
MAIL FROM:<[email >
250 2.1.0 Ok
RCPT TO:<[email >
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: [email
To: [email
Subject: Please update your password.
Click this link to update your password.
.
550 5.7.1 rejected by DMARC policy for paypal.com
quitJak widzisz, mój serwer pocztowy odrzucił tę wiadomość, ponieważ nie przeszła kontroli DMARC, a Paypal wdrożył politykę p=reject.
Uwaga: jeśli polityka DMARC domeny jest ustawiona na p=quarantine, Milter OpenDMARC umieści sfałszowaną wiadomość e-mail w kolejce wstrzymania Postifx na czas nieokreślony. Pocztowiec może wyświetlić listę wszystkich wiadomości w kolejce za pomocą komendy postqueue -p i użyć narzędzia wiersza poleceń postsuper, aby zwolnić wiadomości z kolejki wstrzymanych.
Jak dodać adres IP do białej listy w OpenDMARC
Jeśli chcesz pozwolić swojemu drugiemu serwerowi na przekazywanie wiadomości e-mail przez port 25 głównego serwera pocztowego, na którym działa OpenDMARC, powinieneś dodać do białej listy adres IP drugiego serwera w OpenDMARC, ponieważ OpenDMARC sprawdzi From: domena również w wiadomościach przekazujących.
Edytuj plik konfiguracyjny OpenDMARC.
sudo nano /etc/opendmarc.confDodaj następujący wiersz na końcu tego pliku.
IgnoreHosts /etc/opendmarc/ignore.hostsZapisz i zamknij plik. Następnie utwórz katalog /etc/opendmarc/.
sudo mkdir /etc/opendmarc/Utwórz plik ignore.hosts.
sudo nano /etc/opendmarc/ignore.hostsDodaj adresy IP, które chcesz umieścić na białej liście w tym pliku w następujący sposób:
127.0.0.1
12.34.56.78Zapisz i zamknij plik. Następnie uruchom ponownie OpenDMARC.
sudo systemctl restart opendmarcWniosek
Mam nadzieję, że ten samouczek pomógł ci skonfigurować OpenDMARC z serwerem Postfix SMTP w Debianie, aby blokować fałszowanie wiadomości e-mail i spam. Jak zawsze, jeśli uznałeś ten post za przydatny, zapisz się do naszego bezpłatnego biuletynu, aby uzyskać więcej porad i wskazówek. Uważaj 🙂





