• Bewerte uns auf OMR Reviews: Klick

  • Achtet bitte in den Beiträgen darauf, dass ihr keine Informationen teilt, die der DSGVO unterliegen können. Verpixelt bitte die entsprechenden Stellen in Screenshots, postet hier auf keinen Fall Messagatracks ohne Rücksprache und auch in den Log Files können persönliche oder sensible Daten enthalten sein.

    Macht uns auch bitte per PN darauf aufmerksam wenn ihr etwas seht. Schreibt mich (@sören) einfach direkt an. 

  • Zertifikate vom Deutschen Forschungsnetz beziehen (Harica CA)? Klick

  • Unterstütze uns: Teile dein Disclaimer-Template für Tests im zukünftigen Editor. Klick

Anleitung TLS-Serverhärtung in Bezug auf NSP (Basis: IIS Crypto)

Hallo zusammen,

anbei eine Anleitung zur Windows Server Härtung (Annahme: WS 2022 oder höher) in Bezug auf die TLS-Verschlüsselung: Protokolle und Ciphers mit Bezug auf die NSP-Gatewayrollen.
Die Ableitung der Einstellungen erfolgt vom IIS Crypto, konkret die Profile "Best Practice" und "Strict" dienen als Referenz für die Einstellungen.
Unterschied: Die zwischen den beiden Templates: TLS Cipher Suites (kein CBC bei "Strict")

Zur Vermeidung von Komplikationen im Betrieb z.B. "der Partner xyz.com kann nach der Härtung keine E-Mails mehr an das eigene Unternehmen senden" wird der NSP bzw. dessen NoSpamProxyIntranetRole Datenbank vorab ausgewertet und analysiert. Abweichungen zu den Profilen bzw. deren Ciphers/ TLS Versionen müssen ggf. in den persönlichen Richtlinien adaptiert werden!

Für die Auswertung am SQL DB bedarf es 2 Hilfstabellen:
Helper.TlsCipherSuites -> beinhaltet das Mapping der TLSCipherSuites, Inhalt TlsCipherSuite Enum
Helper.TlsProtocol -> beinhaltet das Mapping der TLS-Versionen, Inhalt: SecurityProtocolType Enum

ACHTUNG: Bevor man etwas ändert bitte Snapshots/ Backups erstellen oder ein Testsystem nutzen!

SQL-Abfrage:

Die beiden Tabellen werden als Hilfstabelle unter der Datenbank NoSpamProxyIntranetRole angelegt.
Hierzu die Werte aus den Links als csv-Datei aufbereiten und via Import im SQL Server Management Studio die Tabelle erstellen lassen.

Die SQL-Abfrage selbst:
(Tipp: Am besten noch weiter einschränken auf Regelname: "RuleName LIKE/ NOT LIKE 'Regelname %")

SQL:
SELECT MTE.Id
      ,MTE.MailId
      ,MTE.MessageId
      ,MTE.Size
      ,MTE.Subject
      ,MTE.Signed
      ,MTE.Encrypted
      ,MTE.SenderCertificateId
      ,MTE.Sent
      ,MTE.ProcessingTime
      ,MTE.Status
      ,MTE.RuleName
      ,MTE.Scl
      ,MTE.ValidationStatus
      ,MTE.RejectReason
      ,MTE.CyrenReferenceId
      ,MTE.ProcessingGatewayRole
      ,MTE.ReceiveConnectorName
      ,MTE.ClientIPAddress
      ,MTE.WasReceivedFromRelayServer
      ,MTE.LevelOfTrustId
      ,MTE.DetailsWereDeleted
      ,MTE.UrlSafeguardInfoWasDeleted
      ,MTE.FirstDeliveryAttempt
      ,MTE.DeliveryDurationInSeconds
      ,MTE.TenantId
      ,MTE.SenderCertificateValidationFlags
      ,MTE.TlsCipherSuite
      ,MTE.TlsProtocol
      ,MTE.CoreAntispamReferenceId
      ,TLSP.TlsProtocol as TLSProtocolTranslated
      ,TLSCS.TLSCypherSuites as TLSCypherSuitesTranslated
  FROM [NoSpamProxyIntranetRole].[MessageTracking].[MessageTrackEntry] MTE
  inner join [Helper.TlsCipherSuites] TLSCS on MTE.TlsCipherSuite = TLSCS.Value
  inner join [Helper.TlsProtocol] TLSP on MTE.TlsProtocol = TLSP.Value
  WHERE ReceiveConnectorName = 'SMTP on all addresses' AND Sent > '2025-01-01' AND Scl < 4;

Mit diesem Ergebnis hat man dann einen Überblick, was bei einem so aufschlägt und kann abschätzen welche Protokolle/ Ciphers mit welchem Impakt angepasst werden können. Zur besseren Aufbereitung Export nach PowerShell (Group-Object) oder Excel etc.

Die Härtung erfolgt in diesem Beispiel via GPP für Registry Einstellungen und dem administrativen Template für die Reihenfolge der Cipher Suites.
Die Registrywerte sind hexadezimal und vom Typ REG_DWORD:

TLS-Protokolle
Doing: Alles Versionen kleiner 1.2 deaktivieren, 1.2/ 1.3 aktivieren
Path: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\<VERSION>\[Server/Client]
Items: PCT 1.0, SSL 1.0, SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3

Verison < 1.2:
Enabled = 0000000
DisabledByDefault = 00000001
Verison >= 1.2:
Enabled = 0000001
DisabledByDefault = 00000000

Beispiel für TLS 1.0
1752055036360.png

Ciphers:
Doing: Alles bis auf Triple DES 168, AES 128/128 und AES 256/256 deaktivieren.
Path: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\<CIPHER>
Items: NULL,DES 56/56,RC2 40/128,RC2 56/128,RC2 128/128,RC4 40/128,RC4 56/128,RC4 64/128,RC4 128/128,Triple DES 168,AES 128/128,AES 256/256
Enabled: aktiviert: FFFFFFFF, deaktiviert: 00000000

1752055026045.png

Hashes:
Doing: Alle aktivieren
Path: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\<HASH-NAME>
Items: MD5, SHA, SHA256, SHA384, SHA512
Value: FFFFFFFF

1752054995803.png

KeyExchangeAlgorithms:
Doing: Alle aktivieren
Path: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\<KeyExchangeAlgorithm>
Items: Diffie-Hellman, PKCS, ECDH
Value: FFFFFFFF

Mindestlänge
Doing: Mindestlänge auf 2048 Bit festlegen
Path: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman
Items: ServerMinKeyBitLength
Value: 00000800 (2048 Bit)

1752054983913.png

Ciphers Reihenfolge:
Doing: Die vom Server angebotenen TLS-Ciphersuit in eine präferierte Reihenfolge (stärkste -> schwächste) Reihenfolge ordnen.
GPO Path: Administrative Templates/Network/SSL Configuration Settings/SSL Cipher Suite Order

Best practice:
TLS_CHACHA20_POLY1305_SHA256,TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

Strict (keine CBC Encryption):
TLS_CHACHA20_POLY1305_SHA256,TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

Sollzustand in der Registry:
1752055248168.png

Prüfung vorher und nachher:
Zur Analyse des aktuellen Zustandes und nach der Härtung kann u.a. die folgende Website genutzt werden: https://www.ssllabs.com/index.html

Sofern der MX direkt nicht funktioniert, die LargeFiles-Adresse verwenden.

Ich hoffe die o.g. Anleitung ist für den ein oder anderen hilfreich, sollte man sich bisher mit der Thematik noch nicht beschäftig haben und im Zweifel noch TLS 1.0 Verbindungen akzeptieren.

Großes Dankeschön an Naratec, IIS Crypto für die Grundlagen.
Bei Fragen zum Inhalt einfach mal deren FAQs durchlesen :)

LG
Fabian
 
Zuletzt bearbeitet:
Zurück
Oben