SMB / CIFS Protokoll V1.7 (c) Stor IT Back 2025
Das SMB-Protokoll (Server Message Block) ist eine Netzwerkdateifreigabe, genauer gesagt ein Protokoll.
Die eigentliche Funktion von SMB ist die Dateifreigabe, es umfasst noch zusätzliche Funktionen wie Drucken im Netzwerk, Authentifizierung, Sperren von Dateien und
das Suchen von SMB-Servern im Netzwerk.
Jedes Windows Client- und Server-Betriebssystem beherrscht SMB in verschiedenen Versionen und wird zum Datei-Austausch genutzt. Aber auch Linux-Distributionen und andere
Betriebssysteme nutzen SMB bzw. CIFS. So können auch Dateien einfach zwischen Windows und Linux ausgetauscht werden. Auf der Seite von Linux übernimmt Samba die Funktion.
Vergleichbar ist SMB bzw. CIFS mit NFS aus der Unix- und Linux-Welt.
Wo liegt der Unterschied zwischen SMB und CIFS? Sind das eigentlich zwei unterschiedliche Begriffe für die gleiche Sache? Oder ist das eine von Microsoft
und das andere von einem anderen Hersteller, also eine reine Patentfrage des Begriffes? Und welche Funktion bringt SMB bzw. CIFS?
Die erste Entwicklung stammt von IBM aus den Achtziger Jahren und wurde SMB genannt. SMB steht hierbei für Server Message Block. Es handelt sich hierbei
um ein Filesharing-Protokoll. Es sollten Dateien einfach und komfortable über ein lokales Netzwerk geschrieben und gelesen werden, dies war und ist die Funktion. Die Freigaben auf dem Host
wurden als Shares bezeichnet. Auf den Clients ist es dann der CIFS Mount oder SMB Mount.
CIFS (Common Internet File System) ist eine Implementierung durch die Firma Microsoft, entwickelt für das Windows Betriebssystem. Es ist also eine Form von SMB, eine
spezielle Implementierung.
Die beiden Begriffe bedeuten also etwas vereinfacht die gleiche Sache. Ein Client der CIFS spricht kann auf einen Server mit SMB zugreifen und umgekehrt, die Version muss kompatibel sein.
Welcher Begriff ist den jetzt der richtige? Der heute passende Begriff ist SMB, moderne Systeme setzen nicht mehr CIFS, sondern SMB ein. Selbst bei Microsoft wird seit
Windows Vista SMB 2 und seit Windows 8 bzw. Windows Server 2012 SMB 3 eingesetzt. SMB 2 und SMB 3 nutzen also deutliche Verbesserungen gegenüber von CIFS.
Was ist denn jetzt aber Samba? Samba ist eine Implementierung von SMB auf Unix bzw. Linux Rechnern. Samba wurde entwickelt, um Linux Clients einen Zugriff auf Windows Server
zu ermöglichen bzw. Windows Clients den Zugriff auf Linux Server.
Unter Linux bzw. Unix Rechnern wird sonst nur das NFS Netzwerkdateisystem (Network File System) genutzt. Das ist allerdings ein vollständig anderes Protokoll als SMB oder
CIFS. Eine NFS Client kann also nicht mit einem SMB Server Daten austauschen.
Das SMB Protokoll implementiert ein Netzwerkdateisystem (File-Server-Protokoll), welches vom Filesystem des Servers relativ
unabhängig ist. Microsoft stellt SMB bzw. früher CIFS auf Basis des NTFS zur Verfügung, mit Samba wird SMB auf Linux und Unix
Servern mit zum Beispiel EXT3, EXT4, ZFS oder XFS aufgebaut. Eine ältere Entwicklung des SMB bzw. CIFS Protokoll war das
LAN-Manager-Produkt auf Basis des NetBIOS-Protokoll.
In der Praxis wird das SMB-Protokoll für die Freigabe von Dateien von einem zentralen
Server an verschiedene Clients genutzt. Dies sind häufig Office-Daten, Bilder und Zeichnungen oder Videos. Seit SMB 3.0
können die Freigaben auch für Virtualisierung (Hyper-V) und Microsoft SQL Server genutzt werden.
Wie bei NFS können bei SMB auch Dateien gemeinsam genutzt werden, es können Dateien gleichzeitig gelesen werden. Auf eine
Datei kann meist nur ein Client schreibend zugreifen, aber verschiedene Clients können auf verschiedene Dateien auf
einer Freigabe schreibend zugreifen. Dies ist ein großer Unterschied zu iSCSI-Freigaben oder anderen Block-Devices.
Das SMB Protokoll wurde 1983 bei IBM vorgestellt. Verschiedene Firmen arbeiteten dann an der
Weiterentwicklung des Protokolls, unter anderem Microsoft, IBM, SCO und das Samba-Team. Microsoft entwickelte
in dieser Zeit sicherlich die meisten Erweiterungen, allerdings bis 2007 als Closed Source. Danach
hat Microsoft wichtige Verfahren offen gelegt.
Mit Windows NT 4.0 hat Microsoft das Ur-SMB veröffentlicht, damals als CIFS bezeichnet. Mit Windows 2000 kam dann die
SMB Version 1.0 raus, bei Windows Server 2008 dann die SMB Version 2 und mit Windows Server 2012 die neuste SMB 3 Version.
| SMB-Version | Windows Version | Samba Version | Features |
| CIFS | Windows NT 4.0 | Samba 1 | |
| SMB1 / SMB 1.0 | Windows 2000 | Samba 2 | SMB über TCP/IP |
| SMB2 / SMB 2.0 | Windows Vista / Server 2008 | Samba 3.5 | Performancesteigerung, weniger Befehle |
| SMB2 / SMB 2.1 | Windows 7 / Server 2008 R2 | neuer Locking-Mechanismus | |
| SMB3 / SMB 3.0 | Windows 8 / Server 2012 | Samba 4.0 | für Hyper-V, Verschlüsselung |
| SMB3 / SMB 3.0.2 | Windows 8.1 / Server 2012 R2 | ||
| SMB3 / SMB 3.1.1 | Windows 10 / Server 2016 | Samba 4.3 | Verschlüsselung, Integritätsprüfung |
SMB Transparent Failover:
Ist eine Freigabe auf einem Clusterdateiserver vorhanden, so wird beim Ausfall eines Nodes (oder der Wartung) die
Freigabe transparent auf einem anderen Node weiter bedient, ohne die Anwendungen zu unterbrechen, die Dateien in
diesen Freigaben speichern. Neben einem Fileserver-Cluster auf Basis von Windows Server 2012 werden auch Clients in
der Version Windows 8 bzw. Server 2012 benötigt.
SMB Scale Out:
Werden in einem Fileserver-Cluster Clustervolumes der Version 2 (Cluster Shared Volumes CSV) genutzt, so kann ein direkter Zugriff
von Clients auf alle Cluster-Nodes über SMB 3.0 erfolgen. Dies bedeutet eine bessere Laster-Verteilung, sowohl für die
Cluster-Nodes wie auch für die Clients.
SMB Multichannel:
Mit dem Multichannel werden verschiedene Netzwerkverbindungen zwischen Client und Server zusammengefasst. Die Daten laufen
über die verschiedenen Pfade und bieten einen Lastausgleich. Sollte ein Pfad ausfallen, so werden transparent die übrigen Pfade
genutzt. Dieses Verfahren ist ähnlich dem Multipathing bei iSCSI oder Fibre Channel.
SMB Direct:
SMB Direct unterstützt Netzwerkkarten mit RDMA Features. RDMA (Remote Direct Memory Access) ermöglicht den direkten Zugriff der
Netzwerkkarte auf den Speicher einer Applikation. Damit müssen die Daten nicht zwischen Applikationsspeicher und
Netzwerk-Puffer hin und her kopiert werden. Dies spart einmal CPU-Zeit und verringert die Latenzzeit einer IO-Operation. Bei
SMB 3.0 bedeutet dies einen performanteren Zugriff auf die Daten, was sich speziell bei Hyper-V und Microsoft SQL Server
positiv auswirkt.
Leistungsindikatoren für Serveranwendungen:
Die neuen SMB-Leistungsindikatoren liefern detaillierte, nach Freigabe unterteilte Daten über Durchsatz, Latenz und I/O pro Sekunde.
Dies ermöglicht die Leistung von SMB 3.0-Dateifreigaben zu analysieren, in denen ihre Daten gespeichert sind.
Diese Indikatoren sind speziell für Serveranwendungen wie Hyper-V und SQL Server konzipiert, die Dateien in Remote-Dateifreigaben speichern.
SMB Verschlüsselung:
Dies ist eine End-to-End Verschlüsselung vom SMB 3.0 Client zum Server. Es schützt den Datenstrom vor Lauschangriffen
auf nicht vertrauenswürdigen Verbindungen. So kann zum Beispiel eine Filialanbindung über das Internet ohne zusätzliche
Hard- oder Software realisiert werden. Die Verschlüsselung wird auf Freigabebasis oder für einen gesamten Server konfiguriert.
SMB Directory Leasing:
Das Directory Leasing verbessert die Antwortzeiten von Anwendungen in Filialen mit langsamer Anbindung.
Durch die Verwendung von Verzeichnis-Leases werden Roundtrips vom Client zum Server reduziert,
da Metadaten von einem Verzeichniscache mit längerer Lebensdauer abgerufen werden. Die Cache-Kohärenz
bleibt erhalten, da Clients benachrichtigt werden, wenn sich Verzeichnisinformationen auf dem Server ändern.
Der BranchCache ist eine Optimierung bei Wide Area Network (WAN) Übertragungen von Dateien zwischen Windows Systemen. Dieses Feature ist seit Windows Server 2008 R2 und Windows 7
verfügbar. Dabei werden Dateien auf den lokalen Systemen zwischengespeichert, die sonst über WAN Verbindungen vom Server geholt werden müssten. Also eine Optimierung
bei der Anbindung von verteilten Büros und remoten Clients über langsame Verbindungen.
Dabei gibt es zwei verschiedene Modelle: Einmal der Distributed Cache und zum anderen der Hosted Cache. Beim Hosted Cache wird in den verteilten Büros
jeweils ein Server benötigt, der die Daten speichert und den Clients zur Verfügung stellt. Der Vorteil dieser Lösung ist es, dass der Server Cache für
alle Clients im Büro das Caching übernimmt.
Beim Distributed Cache übernimmt dies jeder Client selbst. Benötigen also zwei Clients in einem entfernten Büro die gleiche Datei und der erste Client ist offline, dann müssen die
beiden Clients jeweils unabhängig die Datei cachen, aber auch vom zentralen Server holen. Weiterhin funktioniert das Distributed Caching nur in einem Subnet im
entfernten Büro. Sind dort verschiedene Subnets installiert, dann muss der Hosted Cache genutzt werden.
Der BranchCache kann nicht nur bei File Servern (SMB/CIFS), sondern auch bei Webservern und Applikationsservern genutzt werden. Es muss auf den Servern
der Background Intelligent Transfer Service (BITS) aktiviert sein. Ein Beispiel hierfür ist der WSUS Dienst (Microsoft Windows Server Update Services).
Die vollständige Unterstützung von BranchCache in Clients ist in der Enterprise Versionen vorhanden, also zum Beispiel Windows 10 Enterprise oder Windows 8.1 Enterprise. Nicht
aber in den Pro Versionen, dort ist nur der BITS Support verfügbar.
Die Konsistenz der Daten ist natürlich weiterhin gewährleistet. Ändert ein User im verteilten Büro eine Datei, so wird diese direkt auf den zentralen Server
über die WAN Verbindung geschrieben. Sollte jetzt ein anderer User die gleiche Datei anfordern, dann wird erst die Änderung vom zentralen Server zum
Cache geladen und dann erst zum User ausgeliefert. Die funktioniert sowohl beim Hosted Cache, wie auch bei Distributed Cache.
Viele Anwender in Unternehmen nutzen SMB täglich und meist auch ohne größere Probleme. Selbst in einem reinen Windows Netzwerk sind
verschiedene SMB Versionen im Einsatz und auch das meist reibungslos. Aber wo können im Zusammenspiel zwischen Server und Client Probleme
auftreten?
Eine Klippe sind die verschiedenen Protokoll aber schon, Microsoft hat innerhalb von Updates in Windows 10 zum Beispiel das SMB 1.0 abgeschaltet. Greift
der Windows 10 Client auf einen Windows 2016 oder 2019 Server zu, dann kommt es zu keinen Problemen. Beide nutzen das 3.x Protokoll und alles läuft.
Nutzen die Clients aber SMB 1 Shares, zum Beispiel von älteren NAS Systemen, dann ist der Zugriff nicht mehr möglich, da der Client die
Version 1.0 nicht mehr unterstützt. Das lässt sich aber in den Windows Features von Windows 10 einfach wieder aktivieren:

Die Screenshots zeigen die Einstellmöglichkeiten von SMB 1.0 bei den unterschiedlichen Update-Versionen von Windows 10. Wenn der Windows 10
Client nicht mehr auf das NAS zugreifen kann, dann müssen einfach nur die entsprechenden Features im Windows 10 aktiviert werden.
Aber das SMB Protokoll wird nicht nur bei Windows Clients genutzt. Auch ein Linux Client kann auf SMB Shares zugreifen. Selbst auf einen Samba Server
(der ja auch auf einem Linux läuft), kann der Linux Client per SMB zugreifen. Aber warum denn das, ist doch doppelte Umsetzung? Wenn die Zugriffsrechte
im Samba für Windows Clients gesetzt werden, dann kann der Linux Client ohne weitere Definitionen auf das Rechtesystem von Samba zugreifen.
Ein Linux Client verhält sich dann also genauso wie ein Windows Client.
Aber eines ist dabei wichtig: Normalerweise wird ein SMB Share mit mount -f cifs user=test1,domain=DOM //192.168.1.1/datenremote /datenlokal gemountet. Jetzt
wird ein Linux Client aber Unix-Berechtigungen auch bei dem SMB Share nutzen (wollen). Dies kann im Falle eines Samba Servers zu Problemen führen. Soll nur die
Samba-Berechtigungen genutzt werden, dann muss der Share mit mount -f cifs user=test1,domain=DOM,nounix //192.168.1.1/datenremote /datenlokal.
Hier mal ein Aufzug der man-Pages von mount-cifs:
nounix
Disable the CIFS Unix Extensions for this mount. This can be useful in order to turn off multiple settings at once.
This includes POSIX acls, POSIX locks, POSIX paths, symlink support and retrieving uids/gids/mode from the server.
This can also be useful to work around a bug in a server that supports Unix Extensions.
Wird das nicht mit nounix gemountet, dann unterscheiden sich die Berechtigungen von Dateien unter Umständen von denen der Windows Clients. Ein Windows Client kann dann unter Umständen nicht auf die Dateien zugreifen.
Was sind SMB und CIFS, und wie unterscheiden sie sich?
SMB (Server Message Block) ist ein Netzwerkprotokoll für Datei-, Drucker- und andere Ressourcenzugriffe. CIFS (Common Internet File System) ist ein älterer Dialekt des SMB-Protokolls, der vor allem in Windows-Systemen der 90er und frühen 2000er Jahre verwendet wurde. Moderne Systeme setzen überwiegend auf SMB2 oder SMB3, die sicherer, schneller und effizienter sind. Für Administratoren ist es wichtig zu wissen, dass CIFS heute als veraltet gilt und nur noch in Legacy-Umgebungen genutzt werden sollte.
Warum sollte man SMB statt CIFS verwenden?
SMB2/3 bieten deutlich bessere Performance, moderne Sicherheitsfunktionen wie Verschlüsselung und Signierung und reduzieren die Anzahl der benötigten Netzwerkpakete. CIFS hingegen ist ineffizient und anfällig für Sicherheitsprobleme. In heutigen Umgebungen ist CIFS nur noch relevant, wenn man aus Kompatibilitätsgründen mit sehr alten NAS-Systemen oder alten Windows-Versionen arbeiten muss. Für alle produktiven Systeme wird dringend SMB2 oder höher empfohlen.
Wie überprüfe ich unter Windows, welche SMB-Versionen aktiviert sind?
Über PowerShell kannst du mit Get-SmbServerConfiguration prüfen, welche Dialekte aktiv sind. Spezifische Versionen lassen sich über Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol anzeigen. Windows deaktiviert SMB1 standardmäßig in aktuellen Versionen, und das sollte auch so bleiben. Die Ausgabe hilft Administratoren, veraltete Versionen zu erkennen und gegebenenfalls Sicherheitsmaßnahmen anzupassen.
Was ist der BranchCache im SMB?
Der BranchCache ist eine Optimierung bei Wide Area Network (WAN) Übertragungen von Dateien zwischen Windows Systemen. Er besteht aus Hosted Cache und Distributed Cache.
Was ist SMB Multichannel und wann sollte man es verwenden?
SMB Multichannel (ab SMB3) erlaubt parallele Datenübertragung über mehrere Netzwerkpfade, um Geschwindigkeit und Ausfallsicherheit zu erhöhen. Es setzt mehrere NICs oder NIC-Teaming voraus und eignet sich besonders für File-Server mit hoher Last. Die Funktion wird von aktuellen Windows- und Samba-Versionen unterstützt. In Speicherumgebungen oder Backup-Infrastrukturen kann sie deutliche Performancegewinne bringen.
Wie kann ich die SMB-Performance optimieren?
Nutze aktuelle SMB-Versionen (SMB3.x), da sie effizienter arbeiten und Features wie Multi-Channel unterstützen. Stelle sicher, dass Server und Clients genügend Netzwerk- und I/O-Ressourcen haben. Unter Linux können Tuning-Parameter in Samba, etwa aio read size, socket options oder vfs_fruit, spürbare Vorteile bringen. Auch das Vermeiden von Antivirus-Scans auf Netzwerkpfaden kann die Performance verbessern, sollte aber vorsichtig eingesetzt werden.
Wie sichere ich SMB-Verbindungen bestmöglich ab?
Aktiviere SMB-Signierung oder -Verschlüsselung (ab SMB3) auf Server- und Client-Seite. Stelle sicher, dass nur moderne SMB-Versionen verwendet werden, indem ältere Dialekte wie SMB1 deaktiviert werden. Verwende starke Passwörter, AD-Authentifizierung und prüfe regelmäßig Berechtigungen und Freigabestrukturen. Zusätzlich ist es sinnvoll, Freigaben über separate Netzwerke oder VLANs zu segmentieren.
Was ist Samba und wofür wird es genutzt?
Samba ist eine Open-Source-Implementierung des SMB-Protokolls für Linux/Unix-Systeme. Damit können Linux-Server Datei- und Druckdienste für Windows-Clients bereitstellen oder sogar als Active-Directory-Member oder Domain Controller dienen. Samba ist äußerst flexibel konfigurierbar, eignet sich aber auch für einfache NAS-ähnliche Freigaben. Viele Unternehmen nutzen Samba-basierte File-Server als kostengünstige und stabile Alternative zu Windows Servern.
Wie aktiviere oder deaktiviere ich SMB1 oder SMB2/3 in Windows?
SMB1 lässt sich über Windows-Features deaktivieren oder via PowerShell (Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol). SMB2/3 ist standardmäßig aktiv und sollte nicht deaktiviert werden, da moderne Windows-Versionen darauf angewiesen sind. Wenn ausnahmsweise Kompatibilität benötigt wird (z. B. ältere industrielle Geräte), sollte SMB1 nur temporär und isoliert aktiviert werden. Dokumentation und risikobewusste Planung sind dabei essenziell.







