MTA-STS (Strict Transport Security)
Es ist ja nicht so, dass es mit DANE, DMARC, STARTTLS, PGP, SMIME u.a. nicht schon genug SMTP-Abkürzungen geben würde. Aber Anfang 2016 haben ein paar große Provider (Microsoft, Google, Yahoo, Comcast, LinkedIn und 1&1) einen Vorschlag zur besseren Sicherung der Übertragung von Mails per SMTP beim IETF eingereicht.
RFC 8461 wurde verabschiedet: SMTP MTA Strict Transport Security (MTA-STS)
https://tools.ietf.org/html/rfc8461
Bei Exchange Online ist MTA-STS immer
ausgehend aktiv
Verbessern des Nachrichtenflusses mit MTA-STS
https://learn.microsoft.com/de-de/microsoft-365/compliance/enhancing-mail-flow-with-mta-sts?view=o365-worldwide
Eingehend müssen Sie selbst konfigurieren.
Das Problem: OpportunisticTLS
Die meisten Mailserver lauschen auf Port 25 um eingehende Mails anzunehmen. Der MX-Eintrag im DNS teilt der Welt mit, wo dieser Server zu suchen ist und der "Erstkontakt" findet immer erst einmal unverschlüsselt statt. Ein Absender, der im Prinzip Verschlüsselung per TLS unterstützt, erfragt dies durch eine "EHLO"-Anfrage und wertet die Antwort aus. Sie könne das einfach mit einem TELNET ausprobieren.
Da ich leider kein fließend TLS per Telnet spreche, komme ich hier erst mal nicht weiter aber ab dem Moment ist alles verschlüsselt. Aber die meisten Mailserver können durchaus TLS und unterstützen auch die Funktion "OpportunisticTLS". Wenn die Gegenseite TLS anbietet, dann kann der Sender diese auch nutzen und viele Nutzen dies auch. Exchange Online bietet z.B. STARTTLS an und über die Statistik können Sie einfach sehen, wie viele Hosts schon per TLS einliefern.
Allerdings ist das nur "freiwillig" und der Sender prüft in dem Fall auch nicht das Zertifikat des Empfänger. Getreu dem Motto: Besser per TLS mit einem beliebigen Zertifikat des Empfängers verschlüsseln als gleich im Klartext zu übertragen. Es schützt über nicht gegen die folgenden Probleme:
- DNS-Spoofing und Verifikation des "Richtigen Server"
Ein Angreifer könnte die DNS-Antworten an meinen Absende-Server verändern, so dass ich gar nicht an das richtige Ziel sondern mit einen anderen Server spreche und dort meine Mails ablegen. Der Server könnte sogar STARTTLS anbieten, muss es aber nicht. Auf jeden Fall hätte der Server meine unverschlüsselte Mail und kann sie mitlesen und an den richtigen Server weiterleiten. Wenn ich meine Domäne nicht per SPF, SenderID gesichert hätte, würde der Empfänger diese Mail auch von dem unautorisierten Relay annehmen und niemand würde etwas merken. Wer schaut schon die Header-Zeilen an und prüft den vorherigen Hop?
Die DNS-Fälschungen kann man nur z.B. mit DNSSEC verhindern aber das ist eine andere Story. - Unterdrücken von STARTTLS
Ein System, welches auf der Verbindung eingreifen kann, kann sowohl die EHLO Anfrage als auch die Klartext-Antwort auf die EHLO-Anfrage so ändern, dass der Absender gar nicht mitbekommt, dass die Gegenseite STARTTLS unterstützt. Er wird die Mail dann auch unterschlüsselt senden. - Opportunistisches TLS und falsches Zertifikat
Die meisten Mailserver nutzen schon STARTTLS aber versäumen es dabei das Zertifikat zu verifizieren. Sehr viele Server haben gar kein "öffentliches" Zertifikat und selbst wenn, muss es nicht mit dem Namen des Mailservers übereinstimmen. Hier ist viel Unsicherheit zu finden aber Mailserver nutzen dennoch STARTTLS. Besser eine Mail ist auf dem Teilstück vielleicht unsicher verschlüsselt als gar nicht verschlüsselt. Aber sicher ist das nicht
Es sind noch weitere fortschrittlichere Angriffsszenarien denkbar aber belassen wir es dabei.
Natürlich könnte nun der Server des Absenders irgendwie versuchen, die TLS-Verschlüsselung zu erraten oder zu lernen aber zuverlässig wäre das nicht. Auch könnte der Empfänger z.B. TLS vorschreiben und gar keine unverschlüsselte Verbindung annehmen. Damit verhindert er aber eingehende Mails von alten Systemen, die kein TLS können oder nutzen wollen. Für eine sichere TLS-Nutzung sollte ich ja nicht nur ein Zertifikat anfordern sondern dieses auch hinsichtlich des Namens, Gültigkeitszeitraum, Aussteller und CRL prüfen. Das kann aber vielleicht nicht jeder Server und nur weil es in der Vergangenheit möglich war, muss es heute nicht auch noch funktionieren. Auch Mailserver und Provider werden migriert oder ersetzt.
Dies ist alles nicht mit HSTS (HTTP Strict Transport Security) zu vergleichen, bei dem ein Webserver innerhalb einer bereits verschlüsselten HTTPS-Verbindung über einen zusätzlichen Header den Browser anweist, zukünftig nur noch verschlüsselt mit diesem Host zu kommunizieren, was ein unbemerktes Downgrade einer Verbindung auf http verhindern soll.
MTA_STS zielt allein darauf ab die Verbindung zwischen zwei Mailservern zu härten, damit sich niemand anderes als Empfängerserver ausgeben kann. Auf dem Server selbst sind die Mails aber weiterhin unverschlüsselt. Es etabliert als auch keine Ende-zu-Ende Verschlüsselung
Funktionsweise
Die Lösung sieht nun so aus, dass der Empfänger ausreichend sicher veröffentlicht, dass er Mails per TLS annimmt und dabei auch das angebotene Zertifikat vorschreibt. Der Absender muss dann vor dem Versand einfach kurz nachschauen, ob der Empfänger ein entsprechendes Manifest bereitstellt.
Die Idee ist nicht neu denn unter dem Begriff DANE - DNS-Based Authentication of Named Entities gibt es schon einen Weg, bei dem ein Administrator diese Informationen samt Zertifikat im DNS hinterlegt. Voraussetzung ist dabei aber die Nutzung von DNSSEC, denn ansonsten könnte ein Angreifer über DNS-Manipulationen diese Informationen natürlich auch fälschen. DNSSEC ist aber bei weitem noch nicht überall verfügbar und viele Administratoren werden sich auch damit schwer tun, die Informationen im DNS einzutragen.
MTA-STS kombiniert daher DNS und HTTPS, um diese Informationen zu veröffentlichen. Das ist zwar nicht 100% sicher aber für einen Angreifer schon recht schwer zu überlisten. Wenn Sie MTA-STS einrichten, dann brauchen Sie einen Webserver, der auf den Namen "mta-sts.<maildomain>" mit einem öffentlichen Zertifikat, Wildcard ist auch ok, reagiert und unter "/.well-known/mta-sts.txt" eine Datei ähnlich der Folgenden bereit hält:
version: STSv1 mode: enforce mx: mail.msxfaq.de mx: *.ionos.com max_age: 86400
Die Version muss immer "STSv1" lauten, während der Mode auch "testing" annehmen könnte. Ein oder mehrere MX- Zeilen geben die Zertifikatnamen vor, die legitime Zielserver vorweisen müssen. So können sich auch BackupMX ihres Providers oder einen Wechsel des Mailservers abbilden.
Eine besondere Bedeutung hat das Feld "max_age", welches in Sekunden die Dauer vorgibt, die ein Absender die einmal per HTTPS erhaltene Datei vorhalten soll. Die RFC empfiehlt hier eher Wochen, damit eben ein Angreifer nicht mal schnell dies verändern kann. Sehr lange Werte stören aber ihre eigene Flexibilität
Ein Sender kann aber nun nicht wegen jeder Mail an eine neue Domain einen HTTPS-Request starten. Daher kombiniert MTA-STS noch einen DNS-Record:
_mta-sts.msxfaq.dem text = "v=STSv1; id=20230331000000Z;"
Ein Mailserver macht also einfach eine "billige" DNS-Abfrage, wie er ansonsten auch MX-Records auflöst, um die ID zu erhalten. Nur wenn die DNS-Anfrage einen erfolgt hat und die ID sich seit dem letzten Mal geändert hat, holt der Mailserver per HTTPS die aktuelle Richtlinie. Für den Mailserver bedeutet das:
- Neue ID -> Neue Richtlinie laden
So kann de legitime Zonenbesitzer flexibel die Richtlinie im Rahmen des DNS-TTL anpassen. Sollte ein Angreifer die DNS-Zone gekapert haben, dann hilft das natürlich nichts - DNS-Anfrage unterdrückt oder Webserver
blockiert
Wenn ein Angreifer diese DNS-Abfragen per DoS o.ä. unterbindet, dann wird der Mailserver weiterhin die vorhandene Richtlinie aus dem Cache nutzen bis "max_age" abgelaufen ist. Nun verstehen Sie auch, dass max_age eher in Tagen oder Wochen denn Stunden oder Minuten sein sollte.
Die DNS-Anfrage hat laut RFC auch nicht die Funktion zwischen einem "Temporary Fail" und einem "permanent Fail" zu unterscheiden:
3. A message delivery attempt MUST NOT be permanently failed until the sender has first checked for the presence of a new policy (as indicated by the "id" field in the "_mta-sts" TXT record). Quelle: https://datatracker.ietf.org/doc/html/rfc8461#section-5.1
Wenn ein Server die Mail nicht zustellen kann, dann muss er zur Sicherheit noch einmal über eine DNS-Anfrage die ID prüfen, um ggfls. eine aktuellere Richtlinie zu besorgen, ehe er die Mail mit einem "PermanentFail" zurückgehen lässt.
Provider mit CNAME
Große Firmen haben ihren eigenen Mailserver und verwalten ihre Zertifikate eigenständig. Aber der überwiegende Teil der SMTP-Domänen werden über dem MX-Record entweder direkt zu einem Mailserver beim Provider oder einem gehosteten Spamdienstleister wie NoSpamProxy o.a. geleitet und dort habe Sie als Inhaber einer Domain keinen Zugriff. Natürlich könnten Sie nun einfach die Policy so umschreiben, dass die Zertifikate des Providers aufgeführt werden. Allerdings weiß ihr Provider ja nicht, ob sie MTA-STS konfiguriert haben und wenn der Provider dann den Namen der Mailserver und damit auch die Zertifikate ändert, bekommen Sie im schlimmsten Fall keine Mail mehr. Bei SPF, SenderID gibt es dazu eine "Include" oder "Redirect"-Statement. Bei MTA-STS ist ein CNAME:
The "_mta-sts" record MAY return a CNAME that points (directly or via other
CNAMEs) to a TXT record, in which case senders MUST follow the CNAME pointers.
This can be used for policy delegation, as described in Section 8.2.
Quelle: MTA-STS TXT Records
https://datatracker.ietf.org/doc/html/rfc8461#section-3.1
First, the Policy Domain must point the "_mta-sts" record, via CNAME, to the "_mta-sts"
record maintained by the provider. This allows the provider to control update
signaling.
8.2. Policy Delegation
https://datatracker.ietf.org/doc/html/rfc8461#section-8.2
Etwas kniffliger wird es aber bei der Policy. Hier können Sie nicht einfach einen A-Record oder CNAME auf den Provider leiten, weil dieser ja kein Zertifikat für "mta-sts.<maildomain>" hat. Sie müssen daher immer noch einen Webserver betreiben, der die passende Policy hat. Prüfen Sie doch mal, ob ihre offizielle Webseite "www.<maildomain>" ein Wildcard-Zertifikat hat. Dann könnten Sie dort die Url "/.well-known/mta-sts.txt über einen Reverse Proxy direkt vom Provider holen lassen.
Leider ist hier das Konzept von MTA-STS nicht gerade "Multi Tenant tauglich. Ich hätte mir schon gewünscht, dass ein CNAME für den mta-sts.<domaindomain> auf einen Provider vom MTA-STS-Client als Redirect aufgefasst worden wäre.
Test und Rückmeldung (TLSRPT)
Ehe sie nun voller Elan den DNS-Eintrag und die Webseite online schalten wollen, sollten Sie die Einführung planen. Es kann nämlich auch schief gehen, z.B. wenn Sie "max_age" viel zu hoch ansetzen und die Policy nicht 100% passt. Dann haben die Absender ganz lange eine falsche oder defekte Richtlinie. Zudem beschreibt MTA-STS auch ein Verfahren, mit dem Absender einen Statusreport, ähnlich zu DMARC liefern können. Sie legen dazu auch einen entsprechenden DNS-Eintrag an:
_smtp._tls TXT "v=TLSRPTv1;rua=mailto:tlsrptdemo@msxfaq.de"
Damit werden die absendenden Mailserver angewiesen, einen TLS-Report an die hinterlegte Mailadresse zu senden. Alternativ können sie auch eine URL verwenden, zu der die Ergebnisse per HTTPS gesendet werden. Laut Microsoft sendet Exchange Online solche Mails.
Email services that send email to your
domain and that support both MTA-STS and TLS-RPT send daily
reports to the provided email address. Details about TLS-RPT
are available in this RFC 8460. Microsoft has started
sending TLS-RPT reports to domains that have requested them.
https://techcommunity.microsoft.com/t5/exchange-team-blog/introducing-mta-sts-for-exchange-online/ba-p/3106386
- TLSRPT - SMTP TLS Reporting
- RFC 8460 SMTP TLS Reporting
https://www.rfc-editor.org/rfc/rfc8460.txt - SMTP TLS Reporting
https://www.rfc-editor.org/rfc/rfc8460.html
Wer nutzt es?
Da sie nun wissen, dass die Anfrage per DNS erfolgt und auch die Policy per HTTPS einfach heruntergeladen werden kann, können Sie einfach mal schauen, welche Hoster schon MTA-STS umgesetzt haben: (Stand Juli 2023)
Maildomain | DNS | _mta-sts MTA-STSPolicy | _smtp._tls TLSRPT Policy |
---|---|---|---|
microsoft.com |
"v=STSv1; id=20210331000000Z;" |
version: STSv1 mode: enforce mx: *.mail.protection.outlook.com max_age: 604800 |
"v=TLSRPTv1;rua=https://tlsrpt.azurewebsites.net/report" |
outlook.com |
"v=STSv1; id=20190225000000Z;" |
version: STSv1 mode: enforce mx: *.olc.protection.outlook.com max_age: 604800 |
"v=TLSRPTv1;rua=https://tlsrpt.azurewebsites.net/report" |
<tenantname>.onmmicrosoft.com |
Kein DNS-Eintrag |
Keine Policy |
|
gmail.com |
"v=STSv1; id=20190429T010101;" |
version: STSv1 mode: enforce mx: gmail-smtp-in.l.google.com mx: *.gmail-smtp-in.l.google.com max_age: 86400 |
"v=TLSRPTv1;rua=mailto:sts-reports@google.com" |
gmx.com |
"v=STSv1;id=20190416142000Z;" |
version: STSv1 mode: testing mx: mx00.gmx.net mx: mx01.gmx.net max_age: 604800 |
"v=TLSRPTv1;rua=mailto:smtp-tlsrpt@1und1.de" |
web.de |
"v=STSv1;id=20180928194800Z;" |
version: STSv1 mode: testing mx: mx-ha02.web.de mx: mx-ha03.web.de max_age: 604800 |
"v=TLSRPTv1;rua=mailto:smtp-tlsrpt@1und1.de" |
yahoo.com |
"v=STSv1; id=20161109010200Z;" |
version: STSv1 mode: testing mx: *.am0.yahoodns.net mx: *.mail.gm0.yahoodns.net mx: *.mail.am0.yahoodns.net max_age: 86400 |
"v=TLSRPTv1;rua=mailto:mta_sts.report@yahoo.com" |
bsi.bund.de |
na |
na |
na |
Einrichten
Wenn Sie nun darüber nachdenken, MTA-STS einzurichten, dann sollten Sie folgende Reihenfolge vornehmen.
- TLS prüfen
Zuerst sollten sie alle Mailserver, die aus dem Internet per MX-Record auflösbar sind, auf eine korrekte TLS-Konfiguration prüfen und sicherstellen, dass dies auch zukünftig immer der Fall ist. MTA-STS erfordert TLS 1.2 oder TLS 1.3. und Server Name Indication (SNI) Öffentliche Zertifikate laufen in der Regel nach 1 Jahr aus und sind zu verlängern. MTA-STS prüfe den Namen des Zertifikats und natürlich muss es für den Absender "vertrauenswürdig" sein, d.h. Aussteller, Gültigkeitsdauer, Name, CLR müssen passen.
Es gibt diverse Dienste wie https://www.checktls.com/TestReceiver, um solche ersten Tests zu machen. Sie sollten aber unabhängig davon die SMTP-Funktion in ihre eigenes Monitoring aufnehmen - Policy vorbereiten
Dazu müssen sie ALLE Mailserver, die über den MX-Record erreicht werden, und deren Zertifikate ermitteln und in der Datei hinterlegen. Für den Anfang würde ich die Richtline auf "testing" setzen und auch max_age eher kurz, z.B. 30 Minuten setzen. - Policy per Webserver veröffentlichen
Veröffentlichen Sie diese Datei dann über einen öffentlichen erreichbaren Webserver unter https://mta-sts.<maildomain>/.well-known/mta-sta.txt und prüfen Sie die Erreichbarkeit aus dem Internet einfach über einen Browser. Der WebServer liefert dann ein 200OK "Text/Plain"-Dokument aus, welches z.B. folgende Information enthält. Umleitungen (3xx) o.ä. sind nicht erlaubt. Bei Google sieht das wie folgt aus:
Die Abfrage ist auch per PowerShell schnell ausgeführt:
PS C:\> (Invoke-WebRequest "https://mta-sts.gmail.com/.well-known/mta-sts.txt").content version: STSv1 mode: report policy_id: 1503837332 mx: gmail-smtp-in.l.google.com mx: .gmail-smtp-in.l.google.com max_age: 86400
Die Einträge hinter dem "mx" sind die Namen der Mailserver, die in den Zertifikaten auftauchen. Damit der Absender aber überhaupt ein Zertifikat sieht, muss die Gegenseite natürlich STARTTLS unterstützen und der Absender auch STARTTLS anfordern und erzwingen. Der Mailserver muss dazu auch mindestens TLS 1.2 bereitstellen.
- DNS-Eintrag
Dann addieren Sie in ihrem DNS-Server einen entsprechenden DNS-Eintrag "_mta-sts.<maildomain> TXT "v=STSv1; id=20160707T010757Z;". Die ID muss einfach eine Zeichenkette sein, die bei jeder Änderung der Richtlinie geändert werden muss. Ein Hochzählen ist zwar nicht erforderlich, aber der klassische Zeitstempel wie bei einer DNS-Serial-Number hat sich hier eingebürgert.
Hinweis:
Der DNS-Eintrag lautet nicht mehr auf "_smtp_sts"
sondern "_MTA-STS".
Auch diese Abfrage geht schnell per PowerShell am Beispiel von google.com
PS C:\> Resolve-DnsName -Type txt _mta-sts.google.com Name Type TTL Section Strings ---- ---- --- ------- ------- _mta-sts.google.com TXT 300 Answer {v=STSv1; id=20210803T010101;}
- Warten und überwachen
Auf dem Mailserver sehen Sie erst einmal nicht viel. Alle Server, die bisher schon opportunisticStartTLS genutzt haben, nutzen auch weiter STARTTLS. Allerdings sollten Sie auf dem Webserver nun sehen, wie Mailserver die Richtlinie herunterladen. Zudem sollten Sie das Postfach überwachen, an welche die TLSRPT-Berichte gesendet werden - Policy scharf stellen
Wenn sie einige Tage keine Probleme gesehen haben, dann können sie in der Policy den Wert "mode: report" auf "mode: enforce" stellen und im DNS die ID ändern, damit alls MTA-STS-tauglichen Absender auf jeden Fall eine STARTTLS-Verbindung starten.
Denken Sie aber daran, dass sie mit MTA-STS nur den kompatiblen Gegenstellen vorgeben, sie mögen STARTTLS mit Zertifikatsprüfung machen. Andere Server können weiterhin opportunisticStartTLS nutzen oder ganz ohne TLS senden. Erzwingen können Sie dies eventuell auf ihrem Server für bestimmte wichtige Gegenstellen, z.B. über einen Exchange Online Partner Connector
- Verbessern des Nachrichtenflusses mit MTA-STS
https://learn.microsoft.com/de-de/microsoft-365/compliance/enhancing-mail-flow-with-mta-sts?view=o365-worldwide - Introducing PS.MTA-STS: a PowerShell
module to enhance mail flow security with
MTA-STS
https://techcommunity.microsoft.com/t5/exchange-team-blog/introducing-ps-mta-sts-a-powershell-module-to-enhance-mail-flow/ba-p/4075210
MTA-STS und Exchange Online
Wie sie oben schon gesehen haben, hat Microsoft sehr wohl für ihre Domain MTA-STS mit "enforce" konfiguriert aber die für Office 365 Tenantdomains "<tenantname>.onmicrosoft.com" und "<tenantname>.mail.onmicrosoft.com" gibt es keine DNS-Einträge. Sie können diese aber problemlos setzen:
Allerdings rate ich ihnen generell von der Nutzung der "onmicrosoft.com"-Domains ab und empfehle immer den Einsatz eigener Domains. Exchange Online unterstützt ansonsten MTA-STS
Alle Nachrichten, die von Exchange Online ausgehend an MTA-STS-geschützte
Empfänger gesendet werden, werden mit diesen zusätzlichen
Sicherheitsüberprüfungen, die vom MTA-STS-Standard festgelegt sind, überprüft.
Es gibt nichts, was Administratoren für die Anwendung tun müssen. Bei unserer
ausgehenden Implementierung werden die Wünsche der Empfängerdomänenbesitzer
durch ihre MTA-STS-Richtlinie geachtet. MTA-STS ist Teil der
Sicherheitsinfrastruktur von Exchange Online und daher immer aktiviert (wie
andere wichtige SMTP-Features).
https://learn.microsoft.com/de-de/microsoft-365/compliance/enhancing-mail-flow-with-mta-sts?view=o365-worldwide#outbound-protection
In die Gegenrichtung kann Exchange Online kaum was tun, denn TLS wird generell angeboten. Sie können aber natürlich für ihre Domains einen entsprechenden Webserver und DNS-Einträge beisteuern damit Mails an ihren Tenant auf jeden Fall per TLS am richtigen Server landen, sofern die Absender MTA-STS unterstützen.
Domänenbesitzer können Maßnahmen ergreifen, um E-Mails zu schützen, die mit
MTA-STS an ihre Domänen gesendet werden, wenn ihr MX-Eintrag auf Exchange Online
verweist
https://learn.microsoft.com/de-de/microsoft-365/compliance/enhancing-mail-flow-with-mta-sts?view=o365-worldwide#outbound-protection
Wenn Sie aber sicher sein wollen, dass von bestimmten oder sogar einliefernden Servern zumindest STARTTLS erzwungen wird, dann können Sie einen entsprechenden Partner-Connector für diese Domains oder "*" anlegen. Damit erzwingen Sie TLS aber der Angreifer kann sich immer noch davor schalten, wenn der Absender kein MTA-STS prüft.
Leider bietet Exchange Online aber keinen Webservice für TLSRPT-Meldungen an. Da dürfen Sie dann schon ein eigenes Postfach zur Auswertung oder einen externen Dienstleiter nutzen.
- Introducing MTA-STS for Exchange Online
https://techcommunity.microsoft.com/t5/exchange-team-blog/introducing-mta-sts-for-exchange-online/ba-p/3106386 - Verbessern des Nachrichtenflusses mit
MTA-STS
https://learn.microsoft.com/de-de/microsoft-365/compliance/enhancing-mail-flow-with-mta-sts?view=o365-worldwide#outbound-protection - Introducing PS.MTA-STS: a PowerShell
module to enhance mail flow security with
MTA-STS
https://techcommunity.microsoft.com/t5/exchange-team-blog/introducing-ps-mta-sts-a-powershell-module-to-enhance-mail-flow/ba-p/4075210
Unschärfen
Leider ist die RFC nicht in allen Belangen deutlich und so kann jeder absendende Mailserver eine leicht unterschiedliche Umsetzung wählen. Das fällt am ehesten auf, wenn Sie mit einer Testdomain eine falsche Policy anlegen, z.B. in der das Zertifikat nicht stimmt und eine sehr lang max_age hat. Das Ergebnis ist dann ja, dass sie keine Mails per von MTA-STS-Absendern bekommen, da diese die Policy auswerten, das falsche Zertifikat erkennen und die Zustellung stoppen. Mit aktiviertem TLSRPT - SMTP TLS Reporting können Sie dann die Fehler sogar als Empfänger nachvollziehen.
- GMail:
Bei GMAIL ist das Feld "max_age" anscheinend nicht das alleiniges Kriterium, wann eine Policy aktualisiert werden müsste. GMail holt auch zwischendurch mal die ID des DNS-Eintrags, um eine bei bedarf eine neue Policy zu ziehen. DAs macht ja auch sinn dass man nicht bis zum Ablauf von "max_age" wartet - Microsoft Exchange Online
Microsoft scheint diese Update-Prüfungen deutlich seltener zu machen. Eine falsche Policy scheint längere Zeit zu wirken und auch nicht pauschal für die Domain sondern pro Empfänger genutzt zu werden. Anders kann ich mir kaum vorstellen, warum Mails an Empfänger1 weiter unterbunden sind, während nach Korrektur der Policy dann Mails an einen neuen Empfänger wieder ankommen.
Wer etwas mehr über die Arbeitsweise von SMTP-Servern diesbezüglich herausfinden will, kann ja das Logging auf DNS und dem Webserver aktivieren und damit sehen, welche SourceIP-Adresse wann und wie häufig auf die DNS-Einträge und Textdatei zugreifen.
Das wäre dann eine Thema für eine eigene Seite
Bei der Implementierung von MTA-STS sollten Sie aber auch immer an die bösen Teilnehmer denken. Stellen Sie sich vor, ich lege eine mta-sts.txt-Datei mit Datenmüll an oder einfach nur XXL-Bytes Größe. Bei der nächsten Mail an meine Domain prüft ihr SMTP-Server den DNS-Eintrag und zieht die Policy per HTTPS. Kann ich da eine "Out of memory"-Condition oder vielleicht sogar einen Speicherüberlauf provozieren? Rechnen Sie also mit dem schlimmsten.
Rückbau
Mit dem Wissen um die Funktion von MTA-STS können Sie auch einfach den Rückbau durchführen:
- Update der Policy
Zuerst sollen Sie die Richtlinie auf "mode=none" anpassen. Auch den Wert von "max_age" sollten Sie auf einen kleinen Wert legen, damit später die Gegenstellen den Eintrag zügig aus dem Cache entfernen. - DNS-Eintrag aktualisieren
Dann ändern Sie wieder das Feld "id" im DNS-TXT-Eintrag, damit alle Clients die neue Richtlinie ziehen. Ein Client sollte ja mit dem TTL des DNS-Eintrags den wieder beziehen und damit erkennen, dass die Policy neu zu laden ist - Warten
Dann müssen Sie abwarten, bis alle Gegenstellen irgendwann mal die neue Richtlinie gezogen haben. Eine DNS-Anfrage machen diese Server meist nur, wenn auch eine Mail an ihre Domain zu senden ist. Daher müssten sie mindestens solange warten, bis "max_age" der bisher gültigen Richtlinien abgelaufen sind
Danach können Sie dann den DNS-Eintrag löschen und die Bereitstellung der Policy über HTTPS deaktivieren.
Zwischenstand
Der Nutzen von MTA-STS hängt von der Einführung auf Mailservern ab. Cloud-Anbieter können das relativ schnell umsetzen aber bis die Millionen privater Mailserver eine MTA-STS-Prüfung machen und die noch mehr Domain auc MTA-STS-Einträge per DNS und eine Policy per HTTP bereitstellen, wird dauern. Aber auch bei der Entwicklung anderer Techniken wie TLS 1.2 Enforcement, Spam und UCE - Filter: SPF, SenderID, Spam und UCE - Filter: DKIM, DMARC und anderer RFCs dauert es manchmal Jahre, bis eine Wirkung erzielt wird.
Wenn ihr empfangender Server aber sauber TLS spricht, dann spricht nichts dagegen, dies über MTA-STS auch der Welt bekannt zu geben.
Weitere Links
- TLS Security
- STARTTLS ist nicht genug !
- DMARC
- DNSSEC
- TLSRPT - SMTP TLS Reporting
- DANE - DNS-Based Authentication of Named Entities
- Spam und UCE - Filter: SPF, SenderID
- Spam und UCE - Filter: DKIM
- TLS 1.2 Enforcement
- Server Name Indication (SNI)
-
RFC8461 SMTP MTA Strict Transport Security (MTA-STS)
https://datatracker.ietf.org/doc/html/rfc8461 -
Verbessern des Nachrichtenflusses mit MTA-STS
https://learn.microsoft.com/de-de/microsoft-365/compliance/enhancing-mail-flow-with-mta-sts?view=o365-worldwide -
Introducing PS.MTA-STS: a PowerShell module to enhance mail flow
security with MTA-STS
https://techcommunity.microsoft.com/t5/exchange-team-blog/introducing-ps-mta-sts-a-powershell-module-to-enhance-mail-flow/ba-p/4075210 - SMTP Strict Transport Security draft-margolis-smtp-sts-00
https://tools.ietf.org/html/draft-margolis-smtp-sts-00 - Is SMTP STS a major step towards email security?
https://blog.mailfence.com/is-smtp-sts-a-major-step-towards-email-security/ - SMTP Strict Transport Security Coming Soon to Gmail, Other
Webmail Providers
https://threatpost.com/smtp-strict-transport-security-coming-soon-to-gmail-other-webmail-providers/123789/ - SMTP Strict Transport Security may improve transport
encryption for email
https://www.feistyduck.com/bulletproof-tls-newsletter/issue14_smtp_strict_transport_security.html - MTA-STS (Strict Transport Security)
https://www.frankysweb.de/mta-sts-strict-transport-security/ - Bessere Transportverschlüsselung zwischen Mailservern
https://www.golem.de/news/smtp-sts-bessere-transportverschluesselung-zwischen-mailservern-1603-119955.html - What is SMTP STS? How It improves Email Security for
StartTLS
https://thehackernews.com/2016/03/smtp-sts-email-security.html - SMTP MTA Strict Transport Security (MTA-STS)
https://datatracker.ietf.org/doc/draft-ietf-uta-mta-sts/ - STARTTLS Checker
https://www.checktls.com/TestReceiver - SMTP MTA-STS TestTools
https://www.fraudmarc.com/smtp-mta-sts-policy-check/
https://aykevl.nl/apps/mta-sts/ - Opportunistic Security: Some Protection Most of the Time
https://tools.ietf.org/html/rfc7435 - MTA-STS (Strict Transport Security)
https://www.frankysweb.de/mta-sts-strict-transport-security/