{{tag>deutsch startpage it-security windows active-directory}} ====== SMB Hardening ====== ===== Technischer Hintergrund zum SMB Protokoll ===== [[wpde>Server Message Block]] ist anfällig für NTLM-Relay-Attacken, wenn Pakete nicht signiert werden. Diese [[wpde>Man-in-the-Middle-Angriff|Man-In-The-Middle-Attacke]] kapert Authentifizierungen zwischen Clients und Servern. Mit der Authentifizierung kann man auf dem Server eine Session starten und Daten entwenden. Die SMB-Signierung ordnet jeder initiierte Session explizit dem Client zu. Somit bleibt die Kaperung der Authentifizierung zwar immer noch möglich, wird jedoch verworfen, da die Session nicht signiert ist. In SMBv1 ist die SMB-Signierung im Standard deaktiviert. Dieses Protokoll ist veraltet, fehlerbehaftet, unsicher und sollte generell abgeschaltet werden. SMBv2 aktiviert SMB-Signierung zwar als Standardwert, nutzt es jedoch nur, wenn Server oder Client es als Voraussetzung verlangen. Dies ist in der Regel nicht der Fall. ^ ^ Server ^ ^ ^ ^ Client ^ Benötigt ^ Aktiviert ^ Deaktiviert (SMBv1) ^ | Benötigt | @lightgreen:Signiert | @lightgreen:Signiert | @lightgrey:nicht unterstützt | | Aktiviert | @lightgreen:Signiert | @orange:Signiert SMBv1, nicht signiert SMBv2 | @#FA8258:nicht signiert | | Deaktiviert (SMBv1) | @lightgrey:nicht unterstützt | @#FA8258:nicht signiert | @#FA8258:nicht signiert | Somit ergibt sich, dass SMB-Signierung auf den Server als Voraussetzung aktiviert werden muss. ===== Ablauf ===== flowchart Z[Ablauf] A[SMBv1 deaktivieren] B[SMB-Signierung] C(Client) D(Server) E(optionale Aktivierung) F(erzwungene Aktivierung) Z--Schritt 1-->A Z-->B B-->C B-->D C--Schritt 2-->E D--Schritt 3-->F ==== Schritt 1 – SMBv1 deaktivieren ==== === Clients === Clients können über das Anmeldeskript gehandhabt werden. Über die Powershell (Adminrechte erforderlich) kann der Status wie folgt abgefragt werden: Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol SMBv1 deaktiveren geht ebenfalls über die Powershell (Neustart erforderlich): Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol === Server === Für Server gelten die gleichen Kommandos. Im Vorfeld sollte ein Neustart eingeplant werden. ==== Schritt 2 – SMB-Signierung clientseitig optional aktivieren ==== Im nächsten Schritt wird das SMB-Signing optional auf der Clientseite aktiviert. Hierzu kann eine globale Gruppenrichtlinie gesetzt werden. Die entsprechenden Richtlinien sind hier zu finden: Computerkonfiguration -> Windows-Einstellungen -> Sicherheitseinstellungen -> Lokale Richtlinien -> Sicherheitsoptionen {{:it-security:gpo-smb1.png?800|}} Alternativ können die Einstellungen auch in der Registry gesetzt werden. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] "EnableSecuritySignature"=dword:00000001 "RequireSecuritySignature"=dword:00000000 ==== Schritt 3 – SMB-Signierung serverseitig forcen ==== === Option 1: via Gruppenrichtlinie === Computerkonfiguration -> Windows-Einstellungen -> Sicherheitseinstellungen -> Lokale Richtlinien -> Sicherheitsoptionen {{:it-security:gpo-smb2.png?800|}} === Option 2: via Powershell === == Status abrufen == Get-SmbClientConfiguration | select RequireSecuritySignature, EnableSecuritySignature Get-SmbServerConfiguration | select RequireSecuritySignature, EnableSecuritySignature == Erzwingen aktivieren == Set-SmbClientConfiguration -EnableSecuritySignature $true Set-SmbServerConfiguration -EnableSecuritySignature $true Set-SmbServerConfiguration -RequireSecuritySignature $true Set-SmbClientConfiguration -RequireSecuritySignature $true ---- Referenzen https://learn.microsoft.com/de-de/troubleshoot/windows-server/networking/overview-server-message-block-signing https://en.hackndo.com/ntlm-relay/