Das Server Message Block-Protokoll (SMB-Protokoll) ist ein Client-Server-Kommunikationsprotokoll, welches den gemeinsamen Zugriff auf Dateien, Drucker, serielle Schnittstellen und andere Ressourcen in einem Netzwerk ermöglicht.
SMB wurde im Jahre 1983 von Barry Feigenbaum bei IBM vorgestellt. Im Laufe der Zeit wurde SMB hauptsächlich für die Verbindung von Windows-Computern weiterentwickelt, allerdings erhielten über die Jahre die meisten anderen Systeme – wie Linux und macOS – ebenfalls die Client-Komponenten für die Verbindung zu SMB-Ressourcen.
Das Protokoll hat seitdem mehrere Varianten hervorgebracht, um den sich im Laufe der Jahre entwickelnden Netzwerkanforderungen gerecht zu werden. Während dieser Zeit wurde SMB in großem Umfang implementiert und ist nach wie vor eine der beliebtesten Lösungen für die gemeinsame Nutzung von Dateien am Arbeitsplatz.
Die Netzwerkkommunikation über SMB findet über das Request-Response (Anfrage-Antwort) Verfahren statt. Dies ist eine der am häufigsten verwendeten Methoden für die Kommunikation innerhalb eines Netzwerkes. Angesiedelt ist das SMB-Protokoll auf der siebten Schicht des OSI-Modells (Application Layer). Der Client sendet eine Anfrage (Negotiate-Protocol-Request) an einen zuständigen Server, um eine Verbindung aufzubauen. Dabei sendet er dem Server eine Offerte der von ihm unterstützten Dialekte.
Folgende Dialekte können dazu verwendet werden:
Um eine SMB Session zu initiieren, sendet der Client eine SMB-Request auf dem TCP-Port 445 (Ab SMBv2). Der Server erhält die Anfrage und schickt anschließend eine SMB-Antwort (Negotiate-Protocol-Response) zurück. Zudem wird sich auf ein SMB-Dialekt geeinigt. Daraufhin erfolgt die Client/Server Authentifizierung, hierzu nutzt SMB standardmäßig das ATM (NT LAN Manager) Authentifizierungsprotokoll.
Allerdings können hier auch alternative Protokolle wie beispielsweise Kerberos genutzt werden.
Die NTLM Authentifizierung wird mit einer „Session Setup Request“ (NTLM Negotiate) eingeleitet auf welche der Server mit einer „Session Setup Response“ (NTLM Challenge) reagiert. Sobald der Client die NTLM Challenge erhält, sendet dieser erneut eine „Session Setup Request“ (NTLM Authenticate) um die Verbindung zwischen Client und Server zu bestätigen.
Wenn die Authentifizierung erfolgreich durchgeführt wurde, kann der Client auf die angefragten Netzwerkressourcen zugreifen. Dafür sendet der Client einen „Tree-Connect-Request“ welcher vom Server mit einem „Tree-Connect-Response“ beantwortet wird.
In dieser Anfrage übergibt der Server dem Client auch sämtliche Infos über Zugriffsberechtigungen auf der beantragten SMB Freigabe. Wenn der Freigabename ein $ am Ende hat (wie IPC$ oder C$), bedeutet dies, dass die Freigabe versteckt ist; normalerweise erstellt das System versteckte Freigaben, aber auch Benutzer können sie erstellen. Versteckt bedeutet, dass die versteckten Freigaben nicht aufgelistet werden, wenn Sie zum Stammverzeichnis der Ressource gehen. Die IPC$-Freigabe wird hierbei auch als NULL-Sitzungsverbindung bezeichnet.
Mithilfe dieser Sitzung wird es Windows Nutzern ermöglicht, bestimmte Aktivitäten auszuführen, z. B. das aufzählen der Namen von Domänenkonten und Netzwerkfreigaben.
Damit vom Redirector sowie Server eine erfolgreiche Identifizierung von Objekten für Input/Output Requests durchgeführt werden kann, bedarf es an sogenannten SMB-Protocol-Identifier.
SMB nutzt hierzu folgende Identifier:
Die UID wird dazu verwendet, um Zugriffsrechte auf Benutzerebene zu definieren. Bei dem „Session Setup Request“ (oben bereits beschrieben), gibt der Client einen sogenannten „Session Setup ANDX“ Befehl mit. Dieser dient zur Authentifizierung des Benutzers und der Anfrage einer UID. Der Redirector sendet die UID des Benutzers mit jedem Request zum Server. Es können aber auch mehrere UID’s einem Client zugeordnet werden. Dies sind dann meistens Zugriffsrechte für Systemprozesse.
Damit jeder Request dem richtigen Prozess zugeordnet werden kann, enthält dieser eine PID.
Der Redirector kann gleichzeitig über mehrere ausstehende Befehle verfügen. Mit Hilfe der MDI, die vom Redirector selber erzeugt wird, kann er die Antwort des Servers entsprechend zuordnen.
Die TID wird vom Server erzeugt, um die Freigabe eindeutig identifizieren zu können. Dabei wird jede Ressource auf dem Server durch eine Freigabe definiert. Der Redirecter verknüpft die Freigabe auf dem Client mit der Tree-ID des Servers.
Die FID wird vom Server generiert. So wird der Zugriff (Freigabe) auf eine Datei eindeutig identifiziert. Für jeden einzelnen File sowie Request wird eine andere FID erzeugt, sogenanntes Handler-Mapping. Die FID wird bei jedem Request für ein bestehendes Objekt mitgesendet. In einer SMB-Sitzung können mehrere FID’s gleichzeitig benutzt werden.
Die SID wird vom Server erzeugt. Sie ist für einen serverseitigen Suchvorgang verantwortlich. Zudem kann die SID für Caching, sprich Leistungsoptimierungen, verwendet werden.
Seit der Einführung des SMB-Protokolls wurden verschiedenste SMB-Dialekte veröffentlicht. Diese wurden mit der Zeit weiterentwickelt, um Funktionen, Skalierbarkeit, Sicherheit und Effizienz zu verbessern.
Entwickelt wurde SMB in seiner ersten Version von IBM im Jahre 1984. Es führt OpLock als clientseitigen Caching-Mechanismus ein, um Netzwerkverkehr zu reduzieren. Als Transportquelle verwendet SMB 1.0 das Network Basic Input/Output System (NetBios) über TCP. Aktuelle Windows Versionen unterstützen die Verwendung von SMB v1 nicht mehr da es zahlreiche Schwachstellen birgt. Diese Schwachstellen können Angreifern die Remote-Code-Ausführung sowie Denial-of-Service-Exploits erlauben. Systeme, bei denen dieses veraltete Protokoll aktiviert ist, bieten so eine Angriffsfläche für potentielle Attacken und eine hohe Anfälligkeit auf Ransomeware da viele Viren SMB v1 Nutzen um sich im Netzwerk nach einer erfolgreichen Infektion zu verbreiten.
SMB 2.0 wurde mit Windows Vista und Windows Server 2008 veröffentlicht. Sowohl die Kommunikation im Netzwerk, deren Leistung, Skalierbarkeit sowie die Ausfallsicherheit verbesserte sich. Eine Unterstützung für WAN-Beschleunigung wurde ebenfalls hinzugefügt. In späteren Iterationen wurde das klassische OpLock-System durch das OpLock-Leasingmodell ersetzt um, auch da, die Leistung zu steigern. Weitere Aktualisierungen umfassten die Unterstützung großer maximaler Übertragungseinheiten und eine verbesserte Energieeffizienz. Diese ermöglichten es den Clients, mit einer aktiven Sitzung zu einem SMB-Server, in den Ruhezustand zu wechseln.
SMB 3.0 wurde erstmals in Windows 8 und Windows Server 2012 eingeführt. Es fügte mehrere wichtige Upgrades hinzu, um die Verfügbarkeit, Leistung, Sicherung, Sicherheit und Verwaltung zu verbessern. Zu den neuen Funktionen gehörten der SMB-Multichannel, SMB-Direct, transparentes Failover des Client-Zugriffs, Unterstützung des Remote Volume Shadow Copy Service und SMB-Encryption. Ab Version 3.02 enthielt es zusätzlich Leistungsaktualisierungen und die Möglichkeit, die Unterstützung für CIFS/SMB 1.0 zu deaktivieren. SMB 3.1.1 wurde 2015 anschließend mit Windows 10 und Windows Server 2016 veröffentlicht. Es fügte neben anderen Aktualisierungen, Unterstützung für erweiterte Verschlüsselung, Integrität und von der Authentifizierung zur Verhinderung von Man-in-the-Middle Angriffen (MitM) hinzu.
Der Name Samba leitet sich vom Netzwerkprotokoll „SMB“ ab und dient als Unix/Linux Implementation. Es wurde 1992 veröffentlicht und ist wie SMB immer wieder aktualisiert / verbessert worden. Seitdem SMBv3 in Samba als Standard gilt, wird das veraltete sowie unsichere SMB in seiner ersten Version als Grundeinstellung nicht mehr unterstützt.
Wir verwenden Cookies, und Google reCAPTCHA, das Google Fonts lädt und mit Google-Servern kommuniziert. Durch die weitere Nutzung unserer Website stimmen Sie der Verwendung von Cookies und unserer Datenschutzerklärung zu.