SMB Hardening
Technischer Hintergrund zum SMB Protokoll
Server Message Block ist anfällig für NTLM-Relay-Attacken, wenn Pakete nicht signiert werden. Diese 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 | Signiert | Signiert | nicht unterstützt |
Aktiviert | Signiert | Signiert SMBv1, nicht signiert SMBv2 | nicht signiert |
Deaktiviert (SMBv1) | nicht unterstützt | nicht signiert | nicht signiert |
Somit ergibt sich, dass SMB-Signierung auf den Server als Voraussetzung aktiviert werden muss.
Ablauf
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
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
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