|
Rozmiar: 5266
Komentarz: + periodic
|
← Wersja 14 z 2016-03-29 10:37:19 ⇥
Rozmiar: 10084
Komentarz: + podstrony
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 3: | Linia 3: |
| <<TableOfContents()>> | <<Action(print,Wydrukuj dokumentację)>>` `<<Action(SlideShow,Pokaż jako slajdy)>><<BR>> <<TableOfContents()>><<Navigation(children)>> |
| Linia 15: | Linia 16: |
| portupgrade -N mail/opendmarc | portupgrade -N mail/opendmarc lang/p5-Switch databases/p5-DBI databases/p5-DBD-mysql www/p5-HTTP-Message |
| Linia 19: | Linia 20: |
| pkg install mail/opendmarc }}} |
pkg install mail/opendmarc lang/p5-Switch databases/p5-DBI databases/p5-DBD-mysql www/p5-HTTP-Message }}} /!\ Pakiety [[FreshPorts:lang/p5-Switch|p5-Switch]], [[FreshPorts:databases/p5-DBI|databases/p5-DBI]] oraz pozostałe są potrzebne przez narzędzia `opendmarc-import`, `opendmarc-reports` oraz `opendmarc-expire` |
| Linia 46: | Linia 48: |
| AutoRestart false | AutoRestart true |
| Linia 52: | Linia 54: |
| IgnoreAuthenticatedClients false | IgnoreAuthenticatedClients true |
| Linia 76: | Linia 78: |
| opendmarc_enable="NO" # => DaemonTools | opendmarc_enable="YES" # => DaemonTools nie jest potrzebne |
| Linia 88: | Linia 90: |
| echo 127.0.0.1 >> /usr/local/etc/opendmarc/ignore.hosts | |
| Linia 107: | Linia 110: |
| (To już było na stronie głównej) | (!) (To już było na stronie głównej). Chociaż wszystko wskazuje na to, że nie jest to potrzebne: opendmarc działa bardzo dobrze samodzielnie. |
| Linia 110: | Linia 113: |
| 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: {{{#!shell numbers=off cat /usr/local/share/doc/opendmarc/schema.mysql | mysql -h localhost -u <user> -p opendmarc }}} Albo dla innej nazwy bazy danych: {{{#!shell numbers=off 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 [[UniMaster|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`: {{{#!shell numbers=off # --- 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`: {{{#!shell numbers=off 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''". |
|
| Linia 122: | Linia 156: |
== main.cf == |
|
| Linia 130: | Linia 166: |
| == sender-access.px == Aktualny szablon konfiguracji serwera [[http://www.postfix.org/|postfix|target="_blank"]] 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 }}} |
|
| Linia 136: | Linia 180: |
| = 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 [[attachment:dmarc.xslt|załączony plik]]. == Dodanie pliku xslt do raportu == Po rozpakowaniu raportu do katalogu widzianego przez serwer www najlepiej wykonać polecenie: {{{#!shell numbers=off 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 jednolinijkowca<<FootNote(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.)>>: {{{#!shell numbers=off 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ć [[https://tools.ietf.org/html/draft-crocker-dmarc-bcp-03#section-7.2|odpowiedni rozdział|target="_blank"]] RFC opisującego protokół DMARC. == Niby dobrze, ale nie do końca == Na podstawie poniższego przykładu: {{{#!csv numbers=off Relying IP;message count;reason and disposition;From header (opt. envelope);SPF;DKIM 209.85.215.69;1;;bsdserwis.com;netlog.com; }}} Polityka nie została spełniona, ponieważ: 1. Nadawca nie jest wpisany do SPF 1. Brak jest DKIM 1. 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 |
|
| Linia 137: | Linia 213: |
| {i} <<GetVal(SlownikNewBsd,adm-podpis)>> | {i} ` `<<GetVal(SlownikNewBsd,adm-podpis)>> |
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)
