Wydrukuj tę dokumentację Pokaż jako slajdy

Uruchomienie MTA-STS oraz raportowania TLS

Sam mechanizm nie jest bardzo świeży, niemniej nie jest mocno rozpowszechniony. Z drugiej strony warto, przynajmniej w komunikacji z Google.

Konfiguracja specjalnej witryny webowej

Przed przystąpieniem do konfiguracji, musi powstać wpis w DNSie o nazwie mta-sts.domena.tld chociażby na potrzeby wystawienia certyfikatu SSL. Jak już będzie, to trzeba wykonać konfigurację:

# --- definicja serwera HTTP -----------------------------------
#
server {
    listen 217.182.201.233:80;
    listen [2001:41d0:602:4e9::1]:80;
    server_name mta-sts.bsdserwis.com;

    location ~ ^/(?!.well-known/acme-challenge/) {
        return 301 https://$server_name/.well-known/mta-sts.txt;
    }

    # logowanie
    access_log /var/log/nginx/mta-sts.bsdserwis.com/access.log main;
    error_log /var/log/nginx/mta-sts.bsdserwis.com/error.log;

    include codenix/014-acmele.conf;
    include codenix/000-cmsploit.conf;
    include codenix/004-dot-ht.conf;
    include codenix/004-err-page-404.conf;
    include codenix/004-err-page-5xx.conf;
    include codenix/004-pillaging-dvcs.conf;
    include codenix/005-no-logging.conf;
    include codenix/005-x-frame.conf;
    include expires.conf;
}

# --- definicja serwera HTTPS ----------------------------------
#
server {
    listen 217.182.201.233:443 http2 ssl;
    listen [2001:41d0:602:4e9::1]:443 http2 ssl;
    server_name mta-sts.bsdserwis.com;

    ssl_certificate      certs/mta-sts.bsdserwis.com.chained.pem;
    ssl_certificate_key  certs/mta-sts.bsdserwis.com.key;

    include codenix/005-x-robots-tag-all.conf;
    include codenix/005-x-headers-security.conf;

    # logowanie
    access_log /var/log/nginx/mta-sts.bsdserwis.com/access.log main;
    error_log /var/log/nginx/mta-sts.bsdserwis.com/error.log;

    root /var/www/htdocs/virtuals/mta-sts.bsdserwis.com/data;
    index index.html;

    location /.well-known/ {}

    include codenix/000-mta-sts-txt.conf;
    include codenix/000-cmsploit.conf;
    include codenix/004-dot-ht.conf;
    include codenix/004-err-page-404.conf;
    include codenix/004-err-page-5xx.conf;
    include codenix/004-pillaging-dvcs.conf;
    include codenix/005-no-logging.conf;
    include codenix/005-x-frame.conf;
}

Plik tekstowy z polityką

Tryby polityki:

Zaś sama polityka wygląda następująco:

version: STSv1
mode: testing
max_age: 86400
mx: mx1.bsdserwis.com
mx: mx2.bsdserwis.com
mx: mx3.bsdserwis.com

UWAGA!!! Wpis w polityce musi pokrywać się z wpisami z dns-u (rekordy MX). W przeciwnym przypadku raporty będą zawierać, że mta-sts zawiera błędy. Dodatkowo certyfikat samego serwera pocztowego musi zawierać w sobie nazwę, która jest wypisana w polityce. W przeciwnym przypadku ponownie zgłoszony zostanie błąd (niezgodność nazw z certyfikatami). Tak więc w przypadku serwera głównego jest to problem: konieczność zrobienia oddzielnych katalogów (polityk) dla każdej z obsługiwanych domen albo też wpisanie podstawowego serwera mx1.bsdserwis.com jako podstawowego serwera obsługi poczty1.

Reasumując: jest to dobry mechanizm, w przypadku obsługiwania jednej domeny, gdzie nie trzeba się dużo napracować, aby utworzyć całą konfigurację...

Uruchomienie kontroli w MTA (postfix)

Serwer pocztowy może wykonywać kontrolę, jak wysyłać oraz przyjmować pocztę za pomocą STARTTLS. W tym używamy narzędzia mta-sts-resolver.

Zainstalowanie potrzebnych pakietów

Za pomocą własnego repozytorium pakietów należy zainstalować:

pkg install -Uy devel/py-uvloop py38-postfix-mta-sts-resolver-1.1.1

Dogranie certyfikatów

Należy sprawdzać logi serwera, czy coś nie wisi w kolejce z powodu niezaufanych wystawców certyfikatów. Przy pierwszym uruchomieniu okazało się, że trzeba dograć następujące certyfiakty:

fetch http://globalsign.tbs-certificats.com/GlobalSignRoot2028.crt -o /etc/ssl/
fetch http://www.tbs-x509.com/Comodo_AAA_Certificate_Services.crt -o /etc/ssl/
fetch https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem -o /etc/ssl/

c_rehash /etc/ssl

Uruchomienie demona

Należy odpowiednio zmodyfikować plik /etc/rc.conf.d/mta_sts jak również plik konfiguracyjny (domyślnie /usr/local/etc/mta-sts-daemon.yml) a następnie uruchomić demona:

service mta_sts start

Konfiguracja main.cf

W pliku main.cf należy umieścić następującą konfigurację:

smtp_tls_policy_maps = socketmap:inet:127.0.0.1:8461:postfix

a następnie "przeładować" postfix-a.

Konfiguracja DNS

W konfiguracji dla danej domeny muszą powstać 3 rekordy.

mta-sts

Jest rekord odpowiedzialny za wskazanie serwera webowego (połączenie szyfrowane), który przetrzymuje w specjalnym URLu plik z polityką STS. Przyjęto zasadę, że ten rekord wskazuje na podstawowy serwer pocztowy.

mta-sts   IN   CNAME mx1

_smtp._tls

Jest to rekord odpowiadający na przesyłanie raportów dotyczących mta-sts. W swojej składni bardzo przypomina rekordy DMARC: Jeżeli chcemy przekierować raportowanie na inną domenę, to oczywiście wystarczy rekord CNAME:

_smtp._tls  IN  CNAME _smtp._tls.bsdserwis.com.

_mta-sts

Jak już zostało wszystko skonfigurowane, to można dodać rekord włączający politykę mta-sts (trzeba zrobić na końcu). Jako wartość ID proponowana jest wartość w postaci daty oraz godziny (YYYYMMDDhhmmss).

_mta-sts 7200 IN TXT "v=STSv1; id=20220101000000"

Analogicznie jak dla rekordu _smtp._tls jest możliwe przekierowanie na inną domenę:

_mta-sts  IN  CNAME _mta-sts.bsdserwis.com.

Źródła w sieci internet

  1. https://www.digitalocean.com/community/tutorials/how-to-configure-mta-sts-and-tls-reporting-for-your-domain-using-apache-on-ubuntu-18-04

  2. https://community.bitnami.com/t/how-to-create-a-subdomain-to-serve-a-single-txt-file-for-mta-sts/59774/2

  3. https://blog.jeanbruenn.info/2021/07/31/howto-setup-mta-sts-and-tlsrpt/

  4. https://gist.github.com/Tugzrida/4206a67bb037e30e0d2c3eb0dc2b1d3c

  5. https://datatracker.ietf.org/doc/html/rfc8461

  6. https://datatracker.ietf.org/doc/html/rfc8460


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

  1. A nie chcę tego robić, aby przy kolejnej migracji serwera mieć zapewnioną elastyczność - rozdzielenie nazw w ramach *.mua.codenix.pl. (1)

MtaSts (ostatnio edytowane 2022-03-28 11:06:32 przez wtps0n)