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

Bei der Auswahl eines Protokolls zum Teilen von Dateien über das Netzwerk stößt man in Software-Schnittstellen und Dokumentationen häufig auf die Begriffe SMB und CIFS. Einige Benutzer 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 for NAS Data Backup

NAKIVO for NAS Data Backup

Fast backup and recovery for gigabytes of data on NAS devices and Windows and Linux file shares. Recover whatever you need and whenever you need in seconds.

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 gibt es noch weitere Verwendungsfälle für SMB: Nachrichtenübermittlung und Drucken (allgemeine Remote-Transaktionen) sowie Durchsuchen von Computern im Netzwerk. 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 verfügbar gemacht werden. Sie werden auf Dateiservern konfiguriert, und es kann Lese- und Schreibzugriff auf diese Freigaben konfiguriert werden. Ein Dateiserver kann mehrere SMB-Dateifreigaben haben.

Wie SMB funktioniert: Was macht SMB?

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

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

SMB öffnet eine Sitzung, nach dem Verbinden und dem Abschluss der Authentifizierung. Dann können SMB-Nachrichten über diese Sitzung übertragen werden. Beim Starten 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 kann arbeiten:

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

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

Zu der zusätzlichen Funktionalität gehören Dateisperrmechanismen zum Schutz gemeinsam genutzter Dateien, wenn mehrere Benutzer dieselbe Datei öffnen. Durch das Sperren von Dateien wird verhindert, dass Daten von mehreren Benutzern gleichzeitig geschrieben werden und Dateninkonsistenzen in einer Datei verursachen.

IPC (Inter-Process Connection) ist auch als Null-Sitzungsverbindung bekannt. Die IPC$ von Windows erstellte Freigabe wird für temporäre Verbindungen zwischen Clients und Servern verwendet. Diese versteckte Freigabe wird für die Freigabe von Daten erstellt, die nicht als Dateien/Verzeichnisse und Drucker klassifiziert werden können, z. B. Benutzer und Freigabeaufzählung.

Windows-Systeme enthalten einen nativen SMB-Client und -Server. Im Gegensatz zu Windows Server-Versionen, die keine solchen Einschränkungen haben, ist die Anzahl der Benutzer, die sich mit einem Host verbinden können, bei Windows-Client-Versionen jedoch begrenzt.

  • 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 installiert, einer kostenlosen SMB-Server-Implementierung für Linux. Beachten Sie, dass Sie mit Samba auch Linux in eine Active Directory-Domain einbinden und Linux als Domänencontroller einsetzen können. SMB-Client-Software ist ebenfalls für Linux (kostenlos) und andere Betriebssysteme verfügbar.

Was ist CIFS?

CIFS (Common Internet File System) ist eine spezielle Implementierung oder Dialekt von SMB, die 1996 nach der Veröffentlichung von Windows 95 von Microsoft entwickelt wurde. Ein Dialekt ist eine Version und kein separates, unabhängiges Protokoll. Ein Dialekt ist eine Reihe von Nachrichtenpaketen, die zur Kommunikation zwischen Hosts gesendet/empfangen werden und eine bestimmte Protokollversion definieren. CIFS ist entgegen seinem Namen kein Dateisystem.

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 Verwendung von NetBIOS über TCP (das bei den ersten SMB 1-Implementierungen verwendet wurde). CIFS ist eine Implementierung von SMB 1 und kein separates Dateifreigabeprotokoll.

SMB-Protokoll-Dialekte

Wenn wir über die SMB1-Implementierung von Microsoft sprechen, können wir den Begriff CIFS verwenden. In allen anderen Fällen und im Allgemeinen ist SMB der richtige Begriff, um dieses Netzwerkprotokoll zu bezeichnen. Schauen wir uns die nach CIFS freigegebenen SMB-Versionen 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 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 zusätzliche Anfrage zu senden, bevor die Antwort auf die vorherige Anfrage eingegangen ist. Durch das Zusammenfassen mehrerer Aktionen in einer 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 in Bezug auf Leistung und Blockierungsmechanismen. Diese Protokollversion wurde mit Windows 7 und Windows Server 2008 R2 freigegeben.

SMB 3.0

Diese Protokollversion hieß zunächst SMB 2.2, wurde aber später mit Windows 8 in SMB 3.0 umbenannt. Die SMB 3.0-Version:

  • fügte SMB Direct (direkter Zugriff auf den Speicher), SMB Multichannel und SMB Failover hinzugefügt
  • verbesserte Sicherheit
  • Support für End-to-End-Verschlüsselung hinzugefügt
  • verbesserte 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) und SHA-512-Hash für Integritätsprüfungen vor der Authentifizierung.

SMB in Windows und Microsoft Server

SMB ist in Windows ab Windows 3.1 (Windows for Workgroups) verfügbar. Die SMB-Versionen und die Kompatibilität für verschiedene Windows-Versionen sind in der Tabelle erläutert.

Die Spalten und Zeilen enthalten Windows-Versionen, auf denen ein SMB-Client oder SMB-Server ausgeführt werden kann (Spalten und Zeilen sind austauschbar). Eine Zelle am Schnittpunkt einer Spalte und einer Zeile zeigt die SMB-Protokollversion an, die 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 Benutzern immer noch verwechselt werden. Dazu nehmen wir an, wir verwenden einen Dateiserver mit einer SMB-Dateifreigabe, die unter Windows Server 2019 konfiguriert ist, und einen Linux-Rechner, der über das SMB-Protokoll mit diesem Dateiserver verbunden ist. Ubuntu 20.04 ist die Linux-Distribution, die wir in diesem Beispiel verwenden. Beachten Sie, dass die Konfiguration für Ubuntu 22 identisch ist.

Wir haben die folgende Konfiguration in unseren Umgebungen:

  • Windows Server 2019: 192.168.101.209
  • Linux Ubuntu 20.04: 192.168.101.210
  • SMB-Freigabe auf Windows Server: 192.168.101.209share

In Windows Server 2019 ist das SMB 1.0/CIFS-Protokoll standardmäßig deaktiviert. Um diese Einstellungen zu überprüfen und den SMB1.0/CIFS-Client und -Server manuell zu aktivieren/deaktivieren, gehen Sie zu Server-Manager > Rollen und Funktionen hinzufügen > Funktionen.

Wir behalten SMB 1.0/CIFS auf unserem Windows Server 2019-Rechner deaktiviert. Das bedeutet, dass SMB 3 standardmäßig verwendet wird, mit der Möglichkeit, für die Kompatibilität mit Clients, die SMB 2-Versionen (Dialekte) verwenden, auf SMB 2 umzuschalten.

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 standardmäßig deaktiviert, um die Sicherheit zu erhöhen. Bei Bedarf können Sie es manuell aktivieren.

Hinweis: Im Jahr 2017 wurden massive weltweite Ransomware-Angriffe (WannaCry und NotPetya) wurden unter Verwendung von Exploits für SMB 1-Schwachstellen durchgeführt. Diese Exploits wurden als EternalBlue, EternalRomance und EternalChampion bezeichnet. Microsoft veröffentlichte Sicherheitspatches für seine Betriebssysteme ab Windows XP und Windows Server 2003, obwohl diese Betriebssysteme zu diesem Zeitpunkt keine offiziell unterstützten Versionen waren. Microsoft empfahl die Verwendung von SMB 2 und SMB 3 (mit Support für-Authentifizierungsintegrität) anstelle von SMB 1.0/CIFS zu verwenden.

Wie oben erwähnt, lautet der Name des SMB-Servers für Linux Samba (samba ist der Name des Pakets). 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 Linux CIFS Utils enthalten (cifs-utils ist der Name des Pakets). Hier liegt die Ursache für die Verwirrung. Die erste Version dieses Clients für Linux wurde zu einer Zeit erstellt, als SMB 1.0/CIFS weit verbreitet war. Das SMB-Protokoll wurde aktualisiert, die SMB-Versionen 2 und 3 wurden freigegeben, aber der Name des Linux-SMB-Clients blieb unverändert, und das Paket, das den SMB-Client enthält, heißt weiterhin CIFS Utils. Das Paket cifs-utils ist nicht Teil von samba.

Wir werden von Linux aus mit CIFS Utils eine Verbindung zu einer SMB-Freigabe auf Windows Server 2019 verbinden, 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-Dateifreigabe verwendet werden 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 Schulungszwecken 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 auf Windows Server verwendet? Überprüfen Sie die SMB-Version der Clients, die mit der SMB-Freigabe auf Windows Server verbunden sind, mit dem PowerShell-Befehl unter Windows Server 2019:

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

Wie wir in der PowerShell-Ausgabe sehen können, wird SMB 3.1.1 für unsere Verbindung von Ubuntu Linux verwendet. SMB 1.0/CIFS wird nicht verwendet, wenn wir mit cifs-utils und dem mount.cifs Befehl auf einen unter Windows Server 2019 konfigurierten Dateiserver.

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

Wir können die SMB-Protokollversion 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 filtern:

cat /proc/mounts | grep cifs

Wie wir in der Ausgabe sehen können, ist die Protokollversion für das Verbinden mit der Dateifreigabe mit cifsgekennzeichnet, aber die Anzeige zeigt 3.1.1 (vers=3.1.1), was keine Version von CIFS ist. Dies ist ein weiteres Beispiel dafür, wie die Begriffe SMB und CIFS 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 beweisen, indem wir nmapverwenden, ein kostenloses Tool für die Netzwerk-Erkennung, das zur Analyse und Fehlerbehebung eingesetzt wird.

Um nmap in Ubuntu führen Sie den Befehl als Root aus:

sudo apt-get install nmap

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

nmap --script smb-protocols 192.168.101.0/24

Wir möchten das Ergebnis für 192.168.101.209 ansehen, die IP-Adresse unseres Windows Server 2019, der als Dateiserver arbeitet. 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 in den Befehl mount in Linux (auf der Client-Seite) einfügen, um beim Verbinden mit einer Dateifreigabe auf einem Remote-Server nur 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 ist wie folgt:

Der Server hat die Verbindung abrupt geschlossen. Dies kann passieren, wenn der Server die von Ihnen verwendete SMB-Version 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 vorherigen Ergebnissen unserer SMB-vs.-CIFS-Untersuchung in modernen Betriebssystemen überein. CIFS wird nicht verwendet, und SMB 1.0/CIFS ist auf unserem Windows Server deaktiviert.

Wenn wir mindestens SMB 2.0 für die Verwendung festlegen, können wir uns mit dem Server verbinden (beachten Sie die Liste der von unserem Windows Server 2019 unterstützten SMB-Dialekte, die unter nmapangezeigt 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 definieren, das für die Verbindung zu einer Dateifreigabe auf einem Remote-Server verwendet werden soll.

Bei der Eingabe der Adresse für eine SMB-Dateifreigabe sollten Sie Folgendes verwenden:

smb://server-name/share-name

Verwenden Sie nicht:

cifs://server-name/share-name

verwenden, da der Client versuchen wird, sich über das SMB1.0/CIFS-Protokoll zu verbinden, 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, ist SMB eines der Protokolle, die zum Verbinden mit gemeinsam genutzten Speichern 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 Dateien und Ordner, die auf gemeinsam genutzten Ressourcen gespeichert sind, sichern, um Datenverluste zu vermeiden. Die Infizierung des Computers auch nur eines Benutzers mit Schreibrechten für gemeinsam genutzte Dateien kann zu Datenverlusten für alle Benutzer führen.

NAKIVO Backup & Replikation & Replikation ist eine Lösung für die Datensicherheit, die inkrementelle Backups über SMB und NFS von Daten unterstützt, die sich auf NAS- und Windows/Linux-Dateiservern befinden.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Empfohlene Artikel