Tags: Verschlüsselung, Netzwerk
Server Message Block (SMB) dient nicht nur als Protokoll für den Zugriff auf freigegebene Ordner, sondern hinter den Kulissen auch für das Remote-Management oder die Verteilung von GPOs. Diese Kommunikation lässt sich seit SMB3 durch Verschlüsselung absichern, entweder für einzelne Shares oder ganze Server.
Das mit Windows 8 und Server 2012 eingeführte SMB 3 brachte eine Reihe neuer Features wie SMB Transparent Failover, SMB Multichannel oder SMB Direct. Diese erschlossen neue Einsatzgebiete für das Protokoll, darunter die Nutzung von Shares als Ablage für VMs unter Hyper-V oder für SQL-Datenbanken.
Einfache Absicherung der übertragenen Daten
Zu den Verbesserungen von SMB3 zählt aber auch die Verschlüsselung der Daten, die über das Netzwerk gehen. Sie schützt sensible Informationen vor Ausspähen und Diebstahl, ohne dass man dafür beispielsweise eine IPsec-Infrastruktur benötigt. Der Schutz lässt sich recht einfach über den Server Manager oder PowerShell aktivieren.
Die Konfiguration von SMB Encryption erfolgt nur auf dem Server, wahlweise für einzelne Freigaben oder den ganzen Rechner. Während sich die Verschlüsselung einzelner Shares auch über die GUI des Server Managers erledigen lässt, muss die Server-weite Konfiguration über PowerShell erfolgen.
Verschlüsselung für einzelne Freigaben aktivieren
Im Server Manager lässt sich SMB Encryption bereits beim Anlegen einer Freigabe mit Hilfe des Assistenten einschalten. Die entsprechende Option findet sich im Dialog Andere Einstellungen.
Sie lässt sich auch nachträglich aktivieren, indem man die Eigenschaften der betreffenden Freigabe öffnet und dort zu Einstellungen wechselt.
Unter PowerShell existieren Cmdlets, mit denen man den Status der SMB-Verschlüsslung von Freigaben abfragen und ändern kann. Welche Shares auf einem Server verschlüsselt über SMB3 ansprechbar sind, lässt sich mit diesem Kommando feststellen:
Get-SmbShare | select -Property Name, EncryptData
Um SMB Encryption für eine Freigabe zu aktivieren, ruft man Set-SmbShare auf:
Set-SmbShare -name <Name-der-Freigabe> -EncryptData 1
Server-weite SMB-Verschlüsselung
Möchte man generell die Kommunikation für alle Freigaben eines Servers verschlüsseln, dann muss man wie erwähnt zur PowerShell greifen. Auch hier besteht die Möglichkeit, erst den aktuellen Status abzufragen:
Get-SmbServerConfiguration | select EncryptData
Dieses Kommando gibt Auskunft über den Stand der SMB-Verschlüsselung auf dem lokalen Server. Es ließe sich auch auf einen Remote-Rechner über eine CIM-Session anwenden.
Wenn man die Server-weite SMB Encryption aktivieren möchte, dann gibt man folgenden Befehl ein:
Set-SmbServerConfiguration -EncryptData 1
Der Vorgang lässt sich sowohl für Shares als auch den ganzen Server rückgängig machen, indem man die beiden Aufrufe zur Aktivierung der Verschlüsselung so anpasst, dass der Parameter EncryptData der Wert 0 erhält:
Set-SmbServerConfiguration -EncryptData 0
Wenn man sich für SMB-Verschlüsselung auf dem ganzen Server entschieden hat, dann ist nach ihrer Aktivierung die Konfiguration auf Share-Ebene im Server Manager ausgegraut.
SMB3-Verschlüsselung in gemischten Umgebungen
Sobald SMB Encryption auf einem Server oder einer Freigabe aktiviert ist, dann können sich standardmäßig mit ihm nur mehr Clients verbinden, die SMB3 beherrschen, also die mindestens unter Windows 8 oder Server 2012 laufen.
Befinden sich aber noch ältere Clients im Netz, dann wird man diese in der Regel nicht aussperren. In manchen Fällen mag man sich dadurch behelfen können, dass man die SMB-Verschlüsselung nur für einzelne Shares aktiviert, auf die ältere OS-Versionen nicht zugreifen müssen.
Unverschlüsselte SMB-Kommunikation zulassen
Die von Microsoft dafür offiziell vorgesehene Lösung besteht aber darin, für Windows 7 oder Server 2008 eine unverschlüsselte Kommunikation zuzulassen. Dies kann man aber nicht für einzelne Freigaben, sondern nur für den ganzen Server erlauben oder verbieten:
Set-SmbServerConfiguration -RejectUnencryptedAccess [0 | 1]
Ein Angreifer könnte nun über einen Man in the middle Attack versuchen, den Server zu einer unverschlüsselten Übertragung der Daten zu bewegen, indem als Client die Kommunikation über SMB2 aushandelt.
Ein Feature namens Secure Negotiate soll derartige Versuche jedoch entdecken und die Verbindung zu einem solchen suspekten Client abbrechen. Dieser Sicherheitsmechanismus erkennt aber nur Angriffe, die ein Herunterstufen auf SMB2 verfolgen.
Ist SMB1 aktiviert und der Angreifer versucht, die Version 1 der Protokolls auszuhandeln, dann greift dieses Feature nicht. SMB1 sollte immer abgeschaltet werden, aber ganz besonders, wenn man sensible Daten über die SMB-Verschlüsselung schützen möchte.
1 Kommentar
Moin Herr Sommergut,
super Artikel, danke!
Eine Kleinigkeit: Wenn man unverschlüsselte Kommunikation zulassen möchte, muss man
Set-SmbServerConfiguration -RejectUnencryptedAccess 0
setzen; die inverse Logik...
Viele Grüße
Torsten Wittrock