Wydrukuj dokumentację Pokaż jako slajdy
Spis Treści
| /WyluskanieRaportow |
Konfiguracja OpenDMARC
DMARC powstał w celu wyeliminowania fałszywych wiadomości (podszywających się pod jakąś domenę). DMARC ma na celu uproszczenie konfiguracji, wykluczenie false-positive, itd. Więcej szczegółów można znaleźć pod adresem https://dmarc.org/overview/.
Instalacja
Tak jak w przypadrku OpenDKIM konieczne jest doinstalowanie libmilter. Niemniej ponieważ DMARC jest kolejnym milterem w stosunku do OpenDKIM, zatem ten krok można pominąć.
Sama instalacja opendmarc przebiega jak inne paczki w systemie:
# z wykorzystaniem portupgrade
#
portupgrade -N mail/opendmarc lang/p5-Switch databases/p5-DBI databases/p5-DBD-mysql www/p5-HTTP-Message
# albo za pomocą repozytorium pkg.bsdserwis.com
#
pkg install mail/opendmarc lang/p5-Switch databases/p5-DBI databases/p5-DBD-mysql www/p5-HTTP-Message
Pakiety p5-Switch, databases/p5-DBI oraz pozostałe są potrzebne przez narzędzia opendmarc-import, opendmarc-reports oraz opendmarc-expire
Plik konfiguracyjny
Przygotawanie pliku na podstawie pliku instalacyjnego:
cd /usr/local/etc/
cp mail/opendmarc.conf.sample opendmarc.conf
Albo korzystając z repozytorium konfiguracji przegrać przygotowany plik:
# ----------------------------------------------------------------------- # # Je/zeli nazwa serwera r/o/zni si/e od nazwy podanej w postfix, to lepiej # wpisa/c nazw/e prezentowan/a przez postfix (np. mx1.bsdserwis.com) # # W trakcie instalacji skryptu trzeba poprawi/c to lokalnych ustawie/n # # ----------------------------------------------------------------------- # AuthservID HOSTNAME # --- pozosta/le ustawienia --------------------------------------------- # AuthservIDWithJobID false AutoRestart true Background true DNSTimeout 5 EnableCoreDumps false FailureReports false HistoryFile /var/db/opendmarc/opendmarc.dat IgnoreAuthenticatedClients true IgnoreHosts /usr/local/etc/opendmarc/ignore.hosts MilterDebug 0 # lista pobierana z sieci internet, zatem powinna trafi/c do katalogu z # bazami OpenDMARC # PublicSuffixList /var/db/opendmarc/effective_tld_names.dat RecordAllMessages false RejectFailures false ReportCommand /usr/local/sbin/sendmail -t RequiredHeaders false SoftwareHeader false SPFIgnoreResults false SPFSelfValidate false Syslog true SyslogFacility mail TrustedAuthservIDs HOSTNAME UMask 027 UserID mailnull:mailnull
Dodanie do rc.conf
opendmarc_enable="YES" # => DaemonTools nie jest potrzebne
opendmarc_runas="mailnull:mailnull"
opendmarc_pidfile="/var/run/opendmarc/pid"
opendmarc_socketspec="inet:8893@localhost"
opendmarc_cfgfile="/usr/local/etc/mail/opendmarc.conf"
Przygotowanie katalogów oraz plików przed pierwszym uruchomieniem
mkdir -p /var/run/opendmarc /var/db/opendmarc /usr/local/etc/opendmarc
chown mailnull:mailnull /var/run/opendmarc /var/db/opendmarc
touch /usr/local/etc/opendmarc/ignore.hosts
echo 127.0.0.1 >> /usr/local/etc/opendmarc/ignore.hosts
Pobranie Public Suffix List
wget --no-check-certificate -q -N -P /var/db/opendmarc https://publicsuffix.org/list/effective_tld_names.dat
Dodanie skryptu do periodic.conf
### /etc/periodic.conf
###
# --- aktualizacja Public Suffix List dla OpenDMARC --------------
#
weekly_opendmarc_update_public_suffix_list_enable="YES"
weekly_opendmarc_update_public_suffix_list_verbose="NO"
Uruchomienie usługi poprzez deamontools
(To już było na stronie głównej). Chociaż wszystko wskazuje na to, że nie jest to potrzebne: opendmarc działa bardzo dobrze samodzielnie.
Import opendmarc.dat do bazy danych
Aby codzienne zadanie sprawdzania raportów mogło działać, potrzebna jest baza danych mySQL. Po utworzeniu (na lokalnym lub zdalnym serwerze) należy wykonać następujące kroki:
cat /usr/local/share/doc/opendmarc/schema.mysql | mysql -h localhost -u <user> -p opendmarc
Albo dla innej nazwy bazy danych:
cat /usr/local/share/doc/opendmarc/schema.mysql | sed -E '/^(CREATE DATABASE|USE)/d' | mysql -h <db_host> -u <user> -p <db_name>
Skrypt dla periodic
Korzystając z repozytorium konfiguracji należy przegrać skrypt 920.dmarc-reports, który będzie rozsyłał raporty dla innych domen (obcych). W celu uruchomienia skryptu należy ustawić następujące zmienne w /etc/periodic.conf:
# --- codzienne wysy/lanie raport/ow OpenDMARC -------------------
#
daily_dmarc_reports_enable="YES"
daily_dmarc_reports_verbose="NO"
daily_dmarc_reports_dbhost="localhost"
daily_dmarc_reports_dbname="opendmarc"
daily_dmarc_reports_smtp_server="localhost.bsdserwis.com"
daily_dmarc_reports_report_email="dmarc@wtp3.org"
daily_dmarc_reports_report_org="wtp3.org"
oraz dane "sensytywne" w /etc/periodic.conf.local:
daily_dmarc_reports_dbuser="<user>"
daily_dmarc_reports_dbpass="<password>"
Przed uruchomieniem warto "dostroić" zawartość pliku /usr/local/etc/opendmarc/ignore.hosts, aby nie wysyłać raportów dla np. loopback, czy też domen "niepożądanych".
Konfiguracja w DNS
Konfiguracja DNS nie jest trudna (wręcz trywialna). Najlepiej skorzystać z pomocy Google'a, gdzie wszystko podane jest w formie skrótowej.
Dodanie wpisów dot. przekierowania raportów
Zgodnie z dokumentacją DMARC należy wykonać wpisy w DNS, aby móc przyjmować (czy bardziej wysyłać raporty) do innej domeny, aniżeli domena kontrolowana przez DMARC. Postać powienien mieć wpis:
codenix.pro._report._dmarc.bsdserwis.com IN TXT "v1=DMARC"
Na powyższym przykładzie w domenie codenix.pro można wpisać rua=mailto:dmarc@bsdserwis (dot) com.
Konfiguracja postfixa
main.cf
## main.cf
##
## Dopisanie nowego "socketu" do listy wszystkich smtpd_milters
##
smtpd_milters = {milteropendkim.sock}, inet:127.0.0.1:8893
sender-access.px
Aktualny szablon konfiguracji serwera postfix powoduje, że raporty nie są wysyłane via localhost. Dlatego też w bazie /usr/local/etc/mail/local/sender-access.px konieczne jest dodanie wpisów:
# należy dostosować w lokalnej konfiguracji # dmarc@bsdserwis.com OK
Źródła w sieci internet
Strona domowa OpenDMARC1
Specyfikacja protokołu1 DMARC
Parsowanie raportów
Raporty DMARC są w postaci XML. Zatem trudno czytelne. Można jednak za pomocą dodania nieskomplikowanego pliku xslt parsować raporty do postaci bardziej czytelnej.
Zawartość parsera
Patrz załączony plik.
Dodanie pliku xslt do raportu
Po rozpakowaniu raportu do katalogu widzianego przez serwer www najlepiej wykonać polecenie:
find ./ -mindepth 1 -type f -mtime -+5h | xargs -n1 perl -pi -e 'next unless /^<feed/; print "<?xml-stylesheet type=\"text/xsl\" href=\"dmarc.xslt\"?>\n";'
Poprawa daty raportów na czytelną
Daty (timestamps) są zapisane w postaci "epoch seconds". Nie jest to do końca czytelne. Zatem raporty można zmodyfikować poprzez następującego jednolinijkowca2:
find ./ -mindepth 1 -type f -mtime -+5h | xargs -n1 perl -pi -e 'next unless /(begin|end)/; s/([0-9]+)/localtime($1)/eo;'
Analiza raportu zbiorczego
Raport zbiorczy pozwala na dokładną analizę, czy wszystkie warunki są spełnione odnośnie do poprawności danego nadawcy. Wszelkie wątpliwości może rozwiać odpowiedni rozdział RFC opisującego protokół DMARC.
Niby dobrze, ale nie do końca
Na podstawie poniższego przykładu:
Polityka nie została spełniona, ponieważ:
- Nadawca nie jest wpisany do SPF
- Brak jest DKIM
- MAIL FROM: jest z @netlog.com (zatem SPF w takim raporcie świeci na zielono), ale From: było już @bsdserwis.com. Czyli brak spójności
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
Otwiera się w nowym oknie/nowej karcie przeglądarki. (1 2 3 4)
Chociaż dokładna analiza pliku xsl wskazuje, że data powinna być poprawiona na czytelną. Tak samo jako powinno być możliwość sortowania po kolumnach. Szablon XSLT odwołuje się do wersji XSLT 1.0, w której była odpowiednia "biblioteka" odpowiedzialna za zamianę daty na formę czytelną. W XSLT 2.0 jest wsparcie "natywne". Reasumując: trzeba napisać własnego XSLa, który ładnie zaprezentuje raporty. (5)
