Inhaltsverzeichnis
„ Wenn du verstehst, was du tust, wirst du nichts lernen -- Anonym “
Samba ist ein Datei- und Druckserver Windows-basierende Clients, die TCP/IP als Transport-Protokoll nutzen. Tatsächlich kann es jeden SMB/CIFS-aktiven Client unterstützen. Eine von Sambas großen Stärken ist, dass Sie in der Lage sind, Ihre Windows- und Linux-Maschinen zusammen zu nutzen, ohne einen separaten Windows NT/2000/2003-Server zu benötigen. Samba wird derzeit von einem 30-köpfigen Team von Programmierern entwickelt. Es wurde ursprünglich von Andrew Tridgell entwickelt.
Vor langer Zeit gab es ein Schlüsselwort welches sich auf DCE/RPC bezog. Es stand für „Computing Environment/Remote Procedure Calls“ und war vom Konzept her eine gute Idee. Ursprünglich wurde es von Apollo/HP als NCA1.0 (Network Computing Architecture) entwickelt und konnte nur über UDP benutzt werden. Als es nötig wurde, das Ganze über TCP zu betreiben, um die Kompatibilität zu DECnet3.0 gewährleisten zu können, wurde es neu entworfen, zur Organisation „The Open Group“ gesandt und offiziell als DCE/RPC bekannt. Microsoft kam allerdings auf die Idee, mehr als $20 für eine Arbeitsplatz-Lizenz zu verlangen und es als eigenes MSRPC zu verkaufen. Von diesem Punkt an wurde das Konzept in Form von SMB (Server Message Block, das „Was“) unter Benutzung von NetBIOS (Network Basic Input/Output System, das „Wie“) als Kompatibilitätsschicht weiter geführt. Sie können SMB über viele verschiedene Protokolle nutzen, sprich transportieren; viele verschiedene Implementationen führen zu einem Ergebnis, einschließlich NBIPX (NetBIOS über IPX, NwLnkNb oder NWNBLink) und NBT (NetBIOS über TCP/IP oder NetBT). Über die Jahre hinweg wurde NBT zur meistgenutzten Form der Implementationen bis zum Fortschritt des „Direct-Hosted TCP“ -- der Microsoft-Marketing-Formulierung zur vollständigen Eliminierung von NetBIOS und der Möglichkeit, SMB direkt an den TCP-Port 445 zu binden. Wie es zum jetzigen Zeitpunkt aussieht, muss „Direct-Hosted TCP“ jedoch noch aufschließen.
Die wohl beste Abhandlung über den Ursprung von SMB erschien 1997 in einem Artikel mit dem Titel - „CIFS: Common Insecurities Fail Scrutiny“.
Mehrere Megabytes aus NT-Security-Archiven, verschiedensten Whitepapers, RFCs, der CIFS-Spezifikation, dem Samba-Zeug, ein paar MS-Knowledge-Base-Artikel, Zeichenketten aus Binärdateien und Packet-Dumps wurden pflichtbewußt in den Phasen der Informationssammlung dieses Projektes durchgeackert, und es fehlen noch *immer* einige Teile ... Oftmals beschwerlich, wurde der Weg zumindest großzügig gesäumt von Anlässen zum „Hand vor die Stirn schlagen“ und dem Murmeln von „Mein Gott, was denken die sich dabei?“.
SMB: Akronym für „Server Message Block“. Dies ist das Datei- und Druckerfreigabe-Protokoll von Microsoft.
CIFS: Akronym für „Common Internet File System“. Um 1996 entschied Microsoft, dass SMB das Wort „Internet“ im Namen bräuchte, und änderte den Namen in CIFS.
Direct-Hosted: Eine Methode, Datei/Drucker-Freigabedienste über Port 445/tcp zur Verfügung zu stellen. Hierbei wurde nur DNS statt WINS zur Auflösung der Namen in IP-Adressen benutzt.
IPC: Akronym für „Inter-Process Communication“. Eine Methode, spezielle Informationen unter Programmen zu verbreiten.
Marshalling: Eine Methode zur sequenziellen Sortierung von variablen Daten, passend zur Übertragung über eine Netzwerkverbindung bzw. Speicherung in eine Datei. Die Quelldateien können durch einen ähnlichen Prozess namens Unmarshalling wiederhergestellt werden.
NetBIOS: Akronym für „Network Basic Input/Output System“. Dies ist kein Protokoll; es ist eine Möglichkeit der Kommunikation über ein anderes Protokoll. Dies ist ein Standard, der ursprünglich 1983 von IBM entwickelt wurde. Um die Analogie ein wenig zu übertreiben, könnte man NetBIOS mit dem BIOS Ihres Rechners vergleichen. Ihr BIOS kontrolliert die Ein-/Ausgabe der Hardware Ihres Rechners, und NetBIOS kontrolliert die Ein-/Ausgaben über das Netzwerk. Nochmals: Dies ist eine kleine Übertreibung, sollte aber helfen, dieses Paradigma verständlich zu machen. Was wichtig ist, ist die Tatsache, dass NetBIOS kein Protokoll, sondern ein Übermittlungsstandard ist. Leider tendieren auch technisch versierte Leute dazu, ohne viel darüber nachzudenken, NetBIOS mit NetBEUI zu verwechseln.
NetBEUI: Akronym für das „NetBIOS Extended User Interface“. NetBEUI ist nicht mit NetBIOS vergleichbar. Es ist ein Protokoll, kein Standard. Es ist auch kein routingfähiges Protokoll, was wiederum heißt, dass es nicht von einer Seite eines Routers auf die andere gelangt. Es ist nicht notwendig, NetBEUI zu verstehen, um SMB zu entziffern; es hilft zu verstehen, dass NetBEUI nicht das Gleiche wie NetBIOS ist, um Ihre Beliebtheit auf Parties zu erhöhen. Auf NetBEUI wurde ursprünglich von Microsoft als „NBF“ oder „Der Windows NT NetBEUI Frame Protocol Treiber“ verwiesen. Heutzutage hört man nicht mehr viel davon.
NBT: Akronym für „NetBIOS über TCP“ auch bekannt als „NetBT“. Erlaubt die Benutzung von NetBIOS-Verkehr im TCP/IP. Im Endeffekt werden NetBIOS-Namen zu IP-Adressen umgewandelt und NetBIOS-Namenstypen sind im Grunde genommen mit TCP/IP-Ports vergleichbar. So werden in Windows 95/98/ME die Datei- und Druckerfreigaben verwirklicht. Traditionell sind sie an drei Ports gebunden: NetBIOS Name Service (nbname) über UDP Port 137, NetBIOS Datagram Service (nbdatagram) über UDP Port 138 und der NetBIOS Session Service (nbsession) über TCP Port 139. Jegliche Namensauflösung wird über WINS erledigt, NetBIOS-Broadcasts (Anm. des Übersetzers: Broadcasts sind Netzwerkaufrufe an alle anderen Stationen im Umkreis) und DNS. NetBIOS über TCP wird im RFC 1001 (Konzepte und Methoden) und RFC 1002 (Detaillierte Spezifikationen) beschrieben.
W2K: Akronym für Windows 2000 Professional oder Server
W3K: Akronym für Windows 2003 Server
Wenn Sie Hilfe benötigen, wenden Sie sich bitte an die Samba-Mailing-Liste (erreichbar über http://www.samba.org).
Derzeit gibt es zwei weitere Netzwerk-Dateisystem-Client-Projekte für Linux, die direkt mit Samba in Verbindung stehen: SMBFS und CIFS VFS. Sie sind beide im Linux-Kernel verfügbar.
SMBFS (Server Message Block File System) erlaubt es, SMB-Freigaben unter Linux zu mounten (binden); das Protokoll, das Microsoft Windows und OS/2 Lan Manager zur Freigabe von Dateien und Druckern über lokale Netzwerke verwenden, lässt sich hier nutzen, um entfernte Shares ähnlich wie andere Unix-Verzeichnisse zu binden. Dies ist nützlich, wenn Sie nur solche Dateisysteme mounten wollen, ohne gleich selbst einen SMBFS-Server zu betreiben.
CIFS VFS (Common Internet File System Virtual File System) ist der Nachfolger von SMBFS und wird derzeit aktiv für die neue Version des Linux-Kernels entwickelt. Dieses Modul soll erweiterte Netzwerkdateisysteme, Funktionen wie Unterstützung von dfs (hierarchischer Namensraum / hierarchical name space), sichere „Pro-User“-Sessions, sicheres verteiltes Zwischenspeichern (oplock), optionales Signieren von Paketen, den Unicode-Zeichensatz, weitere internationalisierte Verbesserungen und die optionale Einbindung von Winbind (nsswitch) unterstützen.
Hinweis: Es ist wichtig zu erkennen, dass dies nur Implementationen für Client-Dateisysteme sind, die nichts damit zu tun haben, einen Datei- und Druckserver zu betreiben.
Es gibt noch weitere OpenSource-CIFS-Client-Tools, wie zum Beispiel das jCIFS Projekt welches ein in Java geschriebenes SMB-Client-Toolkit zur Verfügung stellt.
Traditionell nutzt SMB den UDP-Port 137 (NetBIOS name service oder netbios-ns), den UDP-Port 138 (NetBIOS datagram service oder netbios-dgm) und den TCP-Port 139 (NetBIOS session service oder netbios-ssn). Jeder, der mit einem guten Netzwerk-Packet-Analyzer sein Netzwerk beobachtet, wird über die Menge an Verkehr amüsiert sein, der ausgelöst wird, wenn man nur eine einzige Datei öffnet. Grundsätzlich werden SMB-Sitzungen/Sessions in folgender Reihenfolge aufgebaut:
„TCP-Verbindung“ - Aufbau des 3-Wege-Handschlags (Verbindung) zu Port 139/tcp oder 445/tcp.
„NetBIOS-Session-Anfrage“ - Benutzt folgende Rufnamen: Den lokalen NetBIOS-Namen der lokalen Maschine zzgl. des 16. Buchstabens 0x00 und den NetBIOS-Namen des Servers zzgl. 0x20 als 16. Buchstaben.
„SMB Negotiate Protocol“ - bestimmt den Protokoll-Dialekt, der benutzt werden soll. Dieser Dialekt kann einer der folgenden sein: PC Network Program 1.0 (Core) - nur share level security modus; Microsoft Networks 1.03 (Core Plus) - nur share level security modus; Lanman1.0 (LAN Manager 1.0) - nutzt Challenge/Response Authentication; Lanman2.1 (LAN Manager 2.1) - nutzt Challenge/Response Authentication; NT LM 0.12 (NT LM 0.12) - nutzt Challenge/Response Authentication.
SMB Session Startup. Passwörter werden nach folgenden Methoden verschlüsselt (oder auch nicht): Null (keine Verschlüsselung); Cleartext/Klartext (keine Verschlüsselung); LM und NTLM; NTLM; NTLMv2.
SMB Tree Connect: Verbindung zu einem Freigabenamen (z.B., \\servername\share); Verbindung zu einem Servicenamen (z.B., IPC$).
Eine gute Art, diesen Prozess zu untersuchen, besteht darin, das SWB Program von SecurityFriday auszuprobieren. Es ermöglicht Ihnen, Schritt für Schritt durch eine SMB/CIFS-Sitzung zu gehen.
„ Was grundlegend falsch ist, ist, dass niemand daran Geschmack finden kann, wenn er es nicht probiert hat. Microsoft hat stark daran gearbeitet, die Oberfläche schön zu gestalten, nur intern ist es eine komplette Unordnung. Auch Mitarbeiter von Microsoft, die seit Jahren dort arbeiten und viel Erfahrung mit sich bringen, haben keine Ahnung, was intern wirklich abläuft. Schlimm, dass niemand sich traut, dies zu ändern. Niemand traut sich, einen Bug zu fixen, nur weil die Gefahr besteht, dass dieser Fix Hunderte von Programmen zum Absturz bringen könnte. Dazu kommt, dass Microsoft nicht daran interessiert ist, Bugs zu fixen -- sie sind vielmehr daran interessiert, Geld zu machen. Sie haben niemanden, der stolz ist, in Windows 95 ein Betriebssystem zu sehen. “
„ Die Leute von Microsoft wissen, dass es ein schlechtes Betriebssystem ist, und arbeiten weiter daran, weil sie die nächste Version auf den Markt bringen wollen, um all die neuen Möglichkeiten des Systems verkaufen zu können. “
„ Das Problem hierbei ist, dass Sie über die Zeit Verständnis hierfür entwickeln, ohne es zu verstehen, da niemand WIRKLICH Probleme behebt, ist das Endergebnis stark verpfuscht. Sie können dem System nicht vertrauen, da es unter bestimmten Bedingungen einfach spontan neu startet oder einfach nur stehen bleibt, wenn Sie gerade etwas völlig Normales machen. Normalerweise funktioniert es gut, nur ist es irgendwann ohne Begründung tot, und niemand weiß warum. Nicht Microsoft, nicht die erfahrenen Anwender und schon gar nicht der ahnungslose Benutzer, der vor seinem Bildschirm sitzt und sich fragt: ‚Was hab ich bloß falsch gemacht?‘, wenn er doch gar nichts falsch gemacht hat. “
„ Das ist es, was mich wirklich irritiert. “
-- Linus Torvalds, in einem Interview mit dem BOOT Magazin, September 1998