CIFS- und SMB-Dateifreigabeprotokolle: Die Unterschiede erklärt

Bei der Auswahl eines Protokolls zum Teilen von Dateien über das Netzwerk stößt man in Softwareoberflächen und Dokumentationen häufig auf die Begriffe SMB und CIFS. Manche Nutzer glauben, dass SMB und CIFS dasselbe sind, und es kann schwierig sein, den Unterschied klar zu erkennen. Schauen wir uns jedoch einmal an, warum CIFS nicht als Synonym für SMB verwendet werden kann. Erfahren Sie mehr über die Unterschiede zwischen den Protokollen SMB und CIFS und wie die Begriffe verwendet werden.

NAKIVO für das NAS-Backup

NAKIVO für das NAS-Backup

Schnelles Backup und Wiederherstellung für Gigabytes an Daten auf NAS-Geräten sowie Windows- und Linux-Dateifreigaben. Wiederherstellen Sie alles, was Sie benötigen, innerhalb von Sekunden – wann immer Sie es brauchen.

Was ist SMB?

SMB (Server Message Block) ist ein Netzwerkprotokoll, das auf der Anwendungsschicht des OSI-Kommunikationsmodells arbeitet. SMB wird verwendet, um Ressourcen über das Netzwerk zu teilen. Das SMB-Protokoll wird häufig verwendet, um Dateien auf Dateiservern zu teilen, Dateien zwischen Benutzercomputern auszutauschen und Dateien zwischen Computern zu kopieren.

Neben der Bearbeitung von Dateien umfasst der Verwendungsfall von SMB auch die Nachrichtenübermittlung und das Drucken (allgemeine Remote-Transaktionen) sowie das Durchsuchen von Computern in Netzwerken. IBM entwickelte SMB im Jahr 1983, und seitdem wurde das Protokoll mal verbessert.

Was ist eine SMB-Dateifreigabe?

SMB-Dateifreigaben sind Verzeichnisse auf einem Remote-Host, die über das SMB-Protokoll zur Verfügung gestellt werden. Sie werden auf Dateiservern konfiguriert, und für diese Freigaben kann Lese- und Schreibzugriff eingerichtet werden. Ein Dateiserver kann mehrere SMB-Freigaben haben.

So funktioniert SMB: Was leistet SMB?

SMB basiert auf dem Client-Server-Netzwerkprinzip. Das Protokoll verwendet eine Reihe von Datenpaketen, die eine vom Client gesendete Anfrage oder eine vom Server gesendete Antwort enthalten. Clients können über eine IP-Adresse oder einen Hostname eine Verbindung zu einem Server herstellen. Diese SMB-Datenpakete lassen sich wie folgt klassifizieren:

  • Sitzungssteuerungspakete, die Verbindungen zu Dateifreigaben herstellen bzw. beenden
  • Dateizugriffspakete, die, wie der Name schon sagt, auf die Dateifreigaben zugreifen und die Dateien bearbeiten
  • Allgemeine Nachrichtenpakete

SMB eröffnet eine Sitzung, nachdem eine Verbindung hergestellt und die Authentifizierung abgeschlossen wurde. Anschließend können SMB-Nachrichten über diese Sitzung übertragen werden. Beim Initiieren einer Sitzung sendet ein SMB-Client eine Liste seiner Fähigkeiten (die Fähigkeiten hängen von der SMB-Version des Clients ab).

Das SMB-Protokoll arbeitet wie folgt:

  • direkt über TCP von Port 445 (ohne NetBIOS) – dies ist der moderne Ansatz.
  • über die NetBIOS-API von UDP-Ports 137 und 138 sowie von TCP-Ports 137 und 139 – dies ist der ältere Ansatz, der bis Windows 2000 verwendet wurde. Die ersten Versionen von SMB nutzten NetBIOS über TCP/IP als Transportprotokoll.

Das SMB-Protokoll unterstützt das Batching, d. h. das Zusammenfassen mehrerer Nachrichten und deren Versand in einer einzigen Übertragung, um die Leistung zu verbessern.

Zu der zusätzlichen Funktionalität gehören Mechanismen zur Dateisperrung, um freigegebene Dateien zu schützen, wenn mehrere Benutzer dieselbe Datei öffnen. Durch das Sperren von Dateien wird verhindert, dass mehrere Benutzer gleichzeitig Daten in eine Datei schreiben und dadurch Dateninkonsistenzen in der Datei verursachen. IPC (Inter-Process Connection) ist auch als Null-Session-Verbindung bekannt. Die von Windows erstellte IPC-Freigabe „ “$ wird für temporäre Verbindungen zwischen Clients und Servern verwendet. Diese versteckte Freigabe wird für die gemeinsame Nutzung von Daten erstellt, die nicht als Dateien, Verzeichnisse oder Drucker klassifiziert werden können, beispielsweise Benutzer und Freigabeaufzählungen.

Windows-Systeme enthalten einen nativen SMB-Client und -Server. Bei Windows-Client-Versionen ist die Anzahl der Benutzer, die sich mit einem Host verbinden können, jedoch begrenzt, im Gegensatz zu Windows-Server-Versionen, bei denen solche Einschränkungen nicht bestehen.

  • Windows XP und Vista – maximal 10 gleichzeitige Verbindungen
  • Windows 7 und Windows 10 – maximal 20 gleichzeitige Verbindungen

Ein SMB-Server unter Linux wird von der Konfiguration von Samba eingerichtet, einer freien SMB-Server-Implementierung für Linux. Beachten Sie, dass Samba es Ihnen auch ermöglicht, Linux in eine Active-Directory-Domain einzubinden und Linux als Domänencontroller fungieren zu lassen. SMB-Client-Software ist ebenfalls unter Linux (kostenlos) und auf anderen Betriebssystemen verfügbar.

Was ist CIFS?

CIFS (Common Internet File System) ist eine bestimmte Implementierung oder ein Dialekt von SMB, der 1996 von Microsoft im Anschluss an die Veröffentlichung von Windows 95 entwickelt wurde. Ein Dialekt ist eine Version und kein eigenständiges, unabhängiges Protokoll. Ein Dialekt ist eine Reihe von Nachrichtenpaketen, die zur Kommunikation zwischen Hosts gesendet und empfangen werden und eine bestimmte Version des Protokolls definieren. CIFS ist kein Dateisystem, auch wenn der Name dies vermuten lässt.

Die CIFS-Protokollspezifikation basiert auf dem ursprünglichen SMB-Protokoll, wurde jedoch von Microsoft um einige zusätzliche Funktionen erweitert. Microsoft implementierte direkte Verbindungen über TCP und Port 445, ohne NetBIOS über TCP zu verwenden (das bei den ersten SMB-1-Implementierungen zum Einsatz kam). CIFS ist eine Implementierung von SMB 1 und kein eigenständiges Protokoll zur Dateifreigabe.

SMB-Protokollvarianten

Wenn wir über die SMB-1-Implementierung von Microsoft sprechen, können wir den Begriff CIFS verwenden. In allen anderen Fällen und generell ist SMB der korrekte Begriff, um dieses Netzwerkprotokoll zu bezeichnen. Schauen wir uns die nach CIFS freigegebenen SMB-Versionen einmal genauer an, um den Unterschied zwischen CIFS und anderen (neueren) SMB-Dialekten (Versionen) besser zu verstehen.

SMB 2.0

Microsoft gab SMB 2.0 (oder SMB2) im Jahr 2006 zusammen mit Windows Vista frei. Diese SMB-Version ist zuverlässiger als SMB 1.0/CIFS und ist kein CIFS. Die Anzahl der für die Übertragung von Dateien erforderlichen Befehle wurde von über 100 auf 20 reduziert. Die Leistung ist aufgrund der Pipeline-Verarbeitungsmechanismen höher, d. h. der Möglichkeit, eine weitere Anfrage zu senden, bevor die Antwort auf die vorherige eingegangen ist. Durch das Bündeln mehrerer Aktionen in einer einzigen Anfrage wird die Anzahl der Anfragen an einen Client reduziert, was die Leistung verbessert.

SMB 2.1

SMB 2.1 bietet im Vergleich zu SMB 2.0 nur geringfügige Verbesserungen hinsichtlich der Leistung und der Blockierungsmechanismen. Diese Protokollversion wurde mit Windows 7 und Windows Server 2008 R2 freigegeben.

SMB 3.0

Ursprünglich hieß diese Version SMB 2.2, wurde jedoch später mit Windows 8 in SMB 3.0 umbenannt. Die SMB 3.0-Version:

  • führte SMB Direct (direkter Zugriff auf den Arbeitsspeicher), SMB Multichannel und SMB Failover ein
  • verbesserte die Sicherheit
  • fügte Support für End-to-End-Verschlüsselung hinzu
  • verbesserte die Netzwerkeffizienz durch Reduzierung der Latenz

SMB 3.0.2

SMB 3.0.2 oder 3.02 ist seit Windows 8.1 und Windows Server 2012 R2 verfügbar. In dieser Version kann die SMB 1.0-Kompatibilität deaktiviert werden, um die Sicherheit zu verbessern.

SMB 3.1.1

Diese Version startet mit Windows 10 und Windows Server 2016. Zu den Verbesserungen gehören eine bessere Verschlüsselung (AES 128 GCM und AES 128 CCM) sowie der SHA-512-Hash für Integritätsprüfungen vor der Authentifizierung.

SMB unter Windows und Microsoft Server

SMB ist unter Windows ab Windows 3.1 (Windows for Workgroups) verfügbar. Die SMB-Versionen und die Kompatibilität mit verschiedenen Windows-Versionen werden in der Tabelle erläutert.

Die Spalten und Zeilen enthalten Windows-Versionen, auf denen ein SMB-Client oder ein SMB-Server ausgeführt werden kann (Spalten und Zeilen sind austauschbar). Eine Zelle am Schnittpunkt einer Spalte und einer Zeile zeigt an, welche SMB-Protokollversion für die Kommunikation zwischen den jeweiligen Windows-Versionen verwendet wird.

Windows 10

Server 2016 und neuer

Windows 8.1

Server 2012 R2

Windows 8

Server 2012

Windows 7

Server 2008 R2

Windows Vista

Server 2008

Win XP, Server 2003 und älter
Windows 10

Server 2016 und neuer

SMB 3.1.1 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8.1

Server 2012 R2

SMB 3.02 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8

Server 2012

SMB 3.0 SMB 3.0 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 7

Server 2008 R2

SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.0 SMB 1.0
Windows Vista

Server 2008

SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 1.0
Win XP, Server 2003 und älter SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0

CIFS vs. SMB: Die wahrscheinliche Quelle der Verwirrung

Lassen Sie uns anhand eines Beispiels herausfinden, warum die Begriffe CIFS und SMB von Anwendern immer noch verwechselt werden. Nehmen wir dazu an, wir verwenden einen Dateiserver mit einer SMB-Dateifreigabe, die unter Windows Server 2019 konfiguriert ist, sowie einen Linux-Rechner, der über das SMB-Protokoll eine Verbindung zu diesem Dateiserver herstellt. In diesem Beispiel verwenden wir die Linux-Distribution Ubuntu 20.04. Beachten Sie, dass die Konfiguration für Ubuntu 22 identisch ist.

In unseren Umgebungen haben wir folgende Konfiguration:

  • Windows Server 2019: 192. 168.101.209
  • Linux Ubuntu 20.04: 192. 168.101.210
  • SMB-Freigabe auf Windows Server: 192.168.101.209share

Unter Windows Server 2019 ist das SMB 1.0/CIFS-Protokoll standardmäßig deaktiviert. Um diese Einstellungen zu überprüfen und den SMB 1.0/CIFS-Client sowie -Server manuell zu aktivieren bzw. zu deaktivieren, rufen Sie Server Manager > Add Roles and Features > Featuresauf.

Auf unserem Windows Server 2019-Rechner lassen wir SMB 1.0/CIFS deaktiviert. Das bedeutet, dass standardmäßig SMB 3 verwendet wird, mit der Möglichkeit, aus Kompatibilitätsgründen zu SMB 2 zu wechseln, wenn Clients SMB-2-Versionen (Dialekte) verwenden.

CIFS vs SMB – SMB 1.0/CIFS is disabled by default in Windows Server 2019

Das CIFS-Protokoll ist in modernen Windows-Versionen wie Windows 10 aus Gründen der Sicherheit standardmäßig deaktiviert; bei Bedarf können Sie es manuell aktivieren.

Hinweis: Im Jahr 2017 wurden weltweit massive Ransomware-Angriffe (WannaCry und NotPetya) durchgeführt, bei denen Exploits für SMB-1-Schwachstellen ausgenutzt wurden. Diese Exploits erhielten die Namen „EternalBlue“, „EternalRomance“ und „EternalChampion“. Microsoft gab Sicherheitspatches für seine Betriebssysteme ab Windows XP und Windows Server 2003 frei, obwohl diese Betriebssysteme zu diesem Zeitpunkt keine offiziell unterstützten Versionen mehr waren. Microsoft empfahl die Verwendung von SMB 2 und SMB 3 (mit Unterstützung der Integritätsprüfung vor der Authentifizierung) anstelle von SMB 1.0/CIFS. Wie oben erwähnt, lautet der Name des SMB-Servers für Linux „Samba“ ( „samba“ ist der Paketname). Wir verwenden einen SMB-Server unter Windows. Daher benötigen wir in diesem Beispiel kein Samba, sondern einen SMB-Client für Ubuntu Linux.

Ein SMB-Client für Linux ist in den Linux CIFS Utils enthalten ( „cifs-utils“ ist der Paketname). Hier liegt der Grund für die Verwirrung. Die erste Version dieses Clients für Linux entstand zu einer Zeit, als SMB 1.0/CIFS weit verbreitet war. Das SMB-Protokoll wurde aktualisiert, die SMB-Versionen 2 und 3 wurden freigegeben, doch der Name des Linux-SMB-Clients blieb derselbe, und das Paket, das den SMB-Client enthält, heißt nach wie vor „CIFS Utils“. Das Paket cifs-utils ist nicht Teil von samba .

Wir werden von Linux aus mithilfe von CIFS Utils eine Verbindung zu einer SMB-Freigabe auf einem Windows Server 2019 herstellen, um herauszufinden, ob CIFS noch verwendet wird. Um CIFS Utils zu installieren, führen Sie den folgenden Befehl mit Root-Rechten aus:

sudo apt-get install cifs-utils

Erstellen Sie ein Verzeichnis, das als Einhängepunkt für die SMB-Freigabe dienen soll:

mkdir /mnt/share

Verbinden Sie sich mit der SMB-Dateifreigabe auf einem Remote-Windows-Server:

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator

In unserem Beispiel verwenden wir zu Lehrzwecken ein Windows-Administratorkonto.

What is SMB file share – connecting to the share from Linux

CIFS vs. SMB – welches Protokoll wird in der aktuellen Sitzung für das Verbinden mit der Dateifreigabe des Dateiservers verwendet? Überprüfen Sie die SMB-Version der Clients, die mit der SMB-Freigabe auf dem Windows-Server verbunden sind, mit dem PowerShell-Befehl unter Windows Server 2019:

Get-SmbSession | Select-Object -Property ClientComputerName,ClientUserName,Dialect

Wie aus der PowerShell-Ausgabe ersichtlich ist, wird für unsere Verbindung von Ubuntu Linux aus SMB 3.1.1 verwendet. SMB 1.0/CIFS wird nicht verwendet, wenn wir uns mit den Befehlen ` `, `cifs-utils`, ` ` und ` mount.cifs ` mit einem unter Windows Server 2019 konfigurierten Dateiserver verbinden.

What is SMB file share – how to check the SMB dialect used

Wir können die SMB-Version auch in ` /proc/mounts` mit dem Befehl ` cat /proc/mounts ` unter Linux überprüfen. Mit dem folgenden Befehl können wir nur die benötigten Ergebnisse herausfiltern:

cat /proc/mounts | grep cifs

Wie in der Ausgabe zu sehen ist, wird die Protokollversion für das Verbinden mit der Dateifreigabe als cifsgekennzeichnet, die angezeigte Version lautet jedoch 3.1.1 (vers=3.1.1), was keine CIFS-Version ist. Dies ist ein weiteres Beispiel dafür, wie die Begriffe SMB und CIFS leicht verwechselt werden können.

CIFS vs SMB – checking which SMB version is used for the current connection

Tatsächlich wird SMB 3.1.1 verwendet und nicht CIFS. Wir können dies von einer weiteren Methode anhand von nmapnachweisen, einem kostenlosen Tool für die Netzwerk-Erkennung, das zur Analyse und Fehlerbehebung dient.

Um nmap in Ubuntu zu installieren, führen Sie den folgenden Befehl als Root aus:

sudo apt-get install nmap

Um alle Hosts zu scannen, die online und mit unserem Netzwerk 192.168.101.0/24 verbunden sind, verwenden wir den Befehl:

nmap --script smb-protocols 192.168.101.0/24

Uns interessiert das Ergebnis für 192.168.101.209, die IP-Adresse unseres Windows Server 2019, der als Dateiserver fungiert. Linux ist mit der Dateifreigabe auf diesem Server verbunden. In der Ausgabe sehen wir, dass die von unserem Windows Server unterstützten Dialekte für SMB-Protokolle 2.02, 2.10, 3.00, 3.02 und 3.11 sind. SMB 1.0/CIFS ist nicht vorhanden, obwohl der Begriff CIFS in Linux-Konfigurationsdateien und -Befehlen weiterhin verwendet wird.

CIFS vs SMB – checking which SMB dialects are supported on the server

Wir können die Verwendung von CIFS manuell erzwingen, indem wir den Parameter „ vers=1.0 “ im Befehl „ mount “ unter Linux (auf der Client-Seite) hinzufügen, um beim Verbinden mit einer Dateifreigabe auf einem Remote-Server ausschließlich das SMB 1.0/CIFS-Protokoll zu verwenden.

mount -t cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=1.0

oder

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=1.0

Das Ergebnis lautet wie folgt:

Der Server hat die Verbindung abrupt beendet. Dies kann passieren, wenn der Server die SMB-Version, die Sie verwenden möchten, nicht unterstützt. Die Standard-SMB-Version wurde kürzlich von SMB1 auf SMB2.1 und höher geändert .

Dieses Ergebnis stimmt mit den früheren Ergebnissen unserer Untersuchung zum Vergleich von SMB und CIFS in modernen Betriebssystemen überein. CIFS wird nicht verwendet, und SMB 1.0/CIFS ist auf unserem Windows Server deaktiviert.

Wenn wir die Einstellung so vornehmen, dass mindestens SMB 2.0 verwendet wird, können wir eine Verbindung zum Server herstellen (beachten Sie die Liste der von unserem Windows Server 2019 unterstützten SMB-Dialekte, die unter nmap angezeigt wird):

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=2.0

Connecting to an SMB share using the SMB2 dialect from Linux

Wenn Sie die grafische Benutzeroberfläche unter Linux oder anderen Betriebssystemen verwenden, geben Sie smb:// in die Adresszeile ein, wenn Sie das Netzwerkprotokoll festlegen, das für die Verbindung zu einer Dateifreigabe auf einem Remote-Server verwendet werden soll.

Bei der Eingabe der Adresse zu einer SMB-Dateifreigabe sollten Sie Folgendes verwenden:

smb://server-name/share-name

Verwenden Sie nicht:

cifs://server-name/share-name

, da der Client versuchen wird, eine Verbindung über das SMB1.0/CIFS-Protokoll herzustellen, das auf einem Server möglicherweise deaktiviert ist (sofern der Client die Syntax cifs:// überhaupt unterstützt).

Fazit

Da das CIFS-Protokoll mittlerweile veraltet ist, gehört SMB zu den Protokollen, die zum Verbinden mit gemeinsam genutztem Speicher auf Dateiservern und NAS verwendet werden (das andere häufig verwendete Protokoll ist NFS). Da gemeinsam genutzter Speicher besonders anfällig für Datenkorruption, Ransomware und andere Bedrohungen ist, die sich leicht über ein Netzwerk verbreiten können, sollten Sie unbedingt Sicherungskopien der auf gemeinsam genutzten Ressourcen gespeicherten Dateien und Ordner sichern, um Datenverluste zu vermeiden. Bereits die Infizierung des Computers eines einzigen Benutzers mit Schreibrechten für gemeinsam genutzte Dateien kann zu Datenverlusten für alle Benutzer führen. NAKIVO Backup & Replication ist eine Lösung für die Datensicherheit, die inkrementelle Backups über SMB und NFS für Daten unterstützt, die sich auf NAS- und Windows-/Linux-Dateiservern befinden.

Probieren Sie NAKIVO Backup & Replication aus

Probieren Sie NAKIVO Backup & Replication aus

Nutzen Sie die kostenlose Testversion, um alle Funktionen der Datensicherheit der Lösung kennenzulernen. 15 Tage kostenlos. Keine Einschränkungen hinsichtlich Funktionen oder Kapazitäten. Keine Kreditkarte erforderlich.

Empfohlene Artikel