ubuntuusers.de

Windows-Netzwerk

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Dateimanager wie beispielsweise Nautilus bieten unter Netzwerke (auch: Netzwerk durchsuchen, Netzwerk-Server) das Durchsuchen des „Windows-Netzwerks“ (auch: „Netzwerkumgebung“) an. In der Praxis wird leider oft nur ein leerer Ordner angezeigt. Hier wird beschrieben, wie man seine Server und Clients konfigurieren muss, damit im Dateimanager der Ordner „Windows-Netzwerk“ und auch die neben diesem Ordner dargestellten Server-Symbole wie gewünscht funktionieren. Die Grundlagen aus den Artikeln Samba und Samba Client GNOME werden hier vorausgesetzt.

Benötigte Software

Das „Windows-Netzwerk“ zeigt Dateiserver, welche über das Netzwerkprotokoll SMB kommunizieren. Der zur Anzeige benötigte SMB-Client aus dem SAMBA-Projekt wird bei jeder normalen Installation eines Ubuntu-Systems installiert.

Mit der Installation des Paketes smbclient erhält man für die Kommandozeile[2] praktische Testwerkzeuge, die auch in diesem Artikel benutzt werden.

Der graphische Dateimanager benötigt GIO für Anzeige und Einhängen der Freigaben. Auch diese Pakete werden bei einer normalen Installation bereits installiert.

Das Paket cifs-utils bietet eine vom SAMBA-Projekt unabhängige Implementierung des Protokolls SMB und wird für die hier besprochene Thematik nicht benötigt.

Zur Installation[1] der benötigten Pakete siehe: Samba Client GNOME

Grundlagen

Das Fenster „Windows-Netzwerk“ stellt Listen dar, welche von speziellen Servern im Netzwerk stammen. Diese "local master browser" (= LMB) müssen für jede Arbeitsgruppe im Netzwerk vorhanden sein und richtig funktionieren. Als "local master browser" kann man jeden Rechner verwenden, der über SMB Freigaben bereitstellt. Das können beispielsweise Windows-Arbeitsstationen, Windows-Server, Linux-Rechner mit SAMBA-Server oder eine Fritzbox (mit FritzOS vor 7.20) sein. Alle im Netzwerk verfügbaren SMB-Server einer Arbeitsgruppe erwählen automatisch einen von ihnen zum "local master browser".

Pro Arbeitsgruppe und Netzwerk (im Sinne von Broadcast-Domäne) ist jeweils ein LMB erforderlich. Die LMB einer Arbeitsgruppe wählen noch einen von ihnen zum "domain master browser", der ihre Arbeit über alle Netzwerke koordiniert.

Alle "local master browser" (und damit auch alle Arbeitsgruppen) im Netzwerk zeigt dieser Befehl[3] an:

nmblookup -STM -- - 

Generelle Einstellungen

Dieser Abschnitt betrifft Clients und Server gleichermaßen.

Sofern man nicht wirklich mehrere Arbeitsgruppen haben möchte, sollte man auf jedem seiner Rechner stets dieselbe Arbeitsgruppe konfigurieren. Man kann durch Änderung der Vorgabe-Namen WORKGROUP und ARBEITSGRUPPE vermeiden, dass schlecht konfigurierte Rechner eine Wahl des "local master browser" erzwingen und damit die Funktion des Ordners „Windows-Netzwerk“ erheblich stören.

Die Einstellung der Arbeitsgruppe erfolgt wie alle Konfiguration der SMB-Clients und -Server des SAMBA-Projektes in der Datei /etc/samba/smb.conf. Diese kann man als Systemverwalter root mit einem Texteditor eigener Wahl bearbeiten[4]. (Die Datei /etc/samba/smb.conf kann noch weitere, in diesem Artikel nicht beschriebene Einstellungen enthalten.)

[global]
workgroup = FAMILIE
  • workgroup = FAMILIE: Der Name der Arbeitsgruppe kann beliebig gewählt werden. Es muss jedoch ein SMB-Name sein.

SAMBA-Server als LMB konfigurieren

Für den Betrieb eines Ubuntu-Rechners als LMB muss zuerst der SAMBA-Server installiert werden: Samba Server GNOME

Die Funktionalität des LMB ist enthalten im Programm nmbd, welches zusätzlich zum eigentlichen Dateiserver smbd gestartet werden muss (s.u).

Die Kriterien für die Wahl zum LMB sind in der Datei /etc/samba/smb.conf jedes SAMBA-Servers einstellbar:

[global]
workgroup = FAMILIE
server role = standalone server
netbios name = SERVERNAME

; local master = Yes
; preferred master = Auto
; domain master = Auto
; os level = 20

# Server ist kein LMB-Kandidat
local master = no
preferred master = no

# Server als LMB-Kandidat
local master = yes
preferred master = yes

server min protocol = NT1
  • workgroup = FAMILIE: Dies ist dieselbe Einstellung wie oben.

  • server role = standalone server: Dies ist die Vorgabe. Wenn der SAMBA-Server in eine Domäne eingebunden werden soll, müssen weitere Aspekte berücksichtigt werden, die in diesem Artikel nicht behandelt werden können.

  • netbios name: Dies ist der Name des Servers in der NetBIOS/SMB-Welt. Normalerweise sollte man diese Einstellung nicht selber benutzen. Als Vorgabe wird für den NetBIOS-Namen des Servers der Hostname des Servers verwendet. Wenn der Hostname jedoch nicht die Voraussetzungen für einen SMB-Name erfüllt, dann muss man hier eine andere Bezeichnung wählen.

  • local master: Mögliche Werte sind yes (= Vorgabe: dieser Rechner bewirbt sich um die Rolle des "local master browser") und no (= er macht es nicht). Ein SAMBA-Server mit local master = yes wird die Rolle des LMB übernehmen, sofern er gewählt wird, aber er wird nicht von sich aus den Wahlvorgang anstoßen.

  • preferred master: Mögliche Werte sind Yes, Auto (= Vorgabe) und No. Hiermit stellt man ein, ob der Server die Wahl zum LMB anstoßen soll oder nicht. Mit dem Wert Yes wird die Wahl beim Start des nmbd auf jeden Fall angestoßen; Auto bewirkt einen Aufruf zur Wahl des LNB sobald der Server bemerkt, dass kein LMB mehr aktiv ist. Die Auslösung des Wahlvorgangs garantiert nicht, dass dieser Server bereit ist, die Rolle des LMB zu übernehmen und auch nicht, dass er die Wahl gewinnt.

  • domain master: Mögliche Werte sind Auto (= Vorgabe) und no. Ein Rechner, welcher bereit ist als "domain master" zu arbeiten, gewinnt die Wahl vor allen dazu nicht bereiten Rechnern. Beachte: Diese Einstellung hat Nebeneffekte bei Servern, die nicht als standalone server arbeiten! (domain hat hier eine doppelte Bedeutung für "domain master browser" und Domain Controler (PDC/BDC).)

  • os level: Der Vorgabewert bei Samba-Servern ist 20. Mögliche Werte sind 0 … 255. Wenn mehrere Rechner gleichwertig für die Rolle des LMB sind, gewinnt der mit dem größten Wert.

  • server min protocol = NT1: Die Einstellung der SMB-Protokollversion ist der wichtigste und problematischste Parameter (s.u. Sicherheitsaspekte). Dies betrifft zwar eigentlich gar nicht den LMB, sondern nur den Zugriff auf die SMB-Freigaben. Man kann daher durchaus einen LMB betreiben, wenn man hier höhere Protokollversionen einstellt, aber solche LMB erfüllen ihre Aufgabe nicht. Ein SAMBA-Server, der als LMB arbeiten soll, benötigt zwingend die Einstellung server min protocol = NT1.

Alle Kunst der richtigen Konfiguration des LMB hilft nichts, wenn der Start des nmbd beim Hochfahren des Rechners misslingt, was leider manchmal geschieht. Nach dem Start des Servers sollte man deshalb das den Status von nmbd und smbd kontrollieren und ggf. die DAEMONen neu starten:

systemctl status smbd.service nmbd.service
sudo systemctl restart smbd.service nmbd.service 

Samba Client konfigurieren

Dies erfolgt ebenfalls über die Datei /etc/samba/smb.conf:

[global]
workgroup = FAMILIE
client min protocol = NT1
  • workgroup = FAMILIE: Dies ist dieselbe Einstellung wie oben.

  • client min protocol = NT1: Damit stellt man als älteste zugelassene SMB-Protokollversion SMBv1 ein.

Bei den SAMBA-Versionen in den Ubuntu-Versionen vor 20.04 wird als Vorgabe für client min protocol die noch ältere Version CORE verwendet. Aus rein funktionalen Gründen muss man daran nichts ändern, jedoch sollte man zur Verbesserung der Sicherheit mindestens NT1 einstellen. Ab Ubuntu 20.04 wird als Vorgabe die Protokollversion SMBv2 verwendet.

Die mögliche Einstellung für client min protocol hängt ab von der eigenen Praxis zum Durchsuchen und Einhängen der Freigaben:

  1. Nur per GUI: Die GUI-Dateimanager verwenden GIO und dieses besteht bei der Suche auf SMBv1. Man sollte also client min protocol = NT1 einstellen.

  2. Auf der Kommandozeile mit smbclient: Dieses Programm handelt mit dem Server die höchste verfügbare SMB-Protokollversion aus und benutzt diese. Daher sollte jede Einstellung für client min protocol funktionieren. Man behält entweder die Voreinstellung oder verwendet SMBv2: client min protocol = SMB2

  3. Mit einem per Skript ertüchtigten GUI-Dateimanager: Man kann dann über das Kontextmenü der gezeigten Netzwerkobjekte diese durchsuchen oder Dateisysteme einhängen. Ein solches Skript SMBsession wird hier im Anhang vorgestellt.

Alle Kunst der richtigen Konfiguration des Clients hilft nichts, wenn beim Start der Benutzer-Session diese sich nicht richtig mit der Netzwerk-Infrastruktur verbindet. Es ist möglich, dass bei mehreren am selben Rechner gleichzeitig angemeldeten Benutzern einer das Netzwerk problemlos durchsuchen kann, während ein anderer nur leere Ordner angezeigt bekommt!

Nach der Anmeldung an der GUI landet man bzgl. des Fensters „Netzwerk“ bzw. „Netzwerk durchsuchen“ benutzerspezifisch in einem dieser Zustände:

  1. Es funktioniert alles: Neben dem „Windows-Netzwerk“ sieht man die Server per Avahi/Bonjour und per NetBIOS angekündigt. Im „Windows-Netzwerk“ werden die Arbeitsgruppen angezeigt.

  2. Halb kaputt: Neben dem „Windows-Netzwerk“ sieht man die Server per Avahi/Bonjour, aber nicht per NetBIOS angekündigt. Im „Windows-Netzwerk“ werden die Arbeitsgruppen angezeigt.

  3. Ganz kaputt: Neben dem „Windows-Netzwerk“ sieht man die Server per Avahi/Bonjour, aber nicht per NetBIOS angekündigt. „Windows-Netzwerk“ verhöhnt einen mit einem leeren Fenster.

Der Zustand 2 entsteht, wenn eine Einstellung des Gnome-Desktops inkonsistent zur Einstellung der workgroup in der Datei /etc/samba/smb.conf ist und kann durch diese Befehle geheilt werden:

gsettings reset org.gnome.system.smb workgroup           # Entweder löschen
gsettings  set  org.gnome.system.smb workgroup FAMILIE   # oder die anzuzeigende Arbeitsgruppe einstellen

Erläuterung: Wenn es mehrere Arbeitsgruppen im Netzwerk gibt, dann ist die hier eingestellte workgroup die einzige, deren per NetBIOS publizierte SMB-Server neben dem Symbol "Windows-Netzwerk" nicht ausgeblendet werden. Somit ist sinnvoll, entweder nichts einzustellen oder hier die Einstellung aus /etc/samba/smb.conf zu wiederholen.

Vom Zustand 3 kann man durch diese Befehle in den Zustand 2 wechseln:

gio mount network:///
gio mount network://smb-root
gio mount smb:/// 

Wenn man keine Arbeitsgruppen sieht, hilft manchmal dieser selbst zwar immer fehlschlagende merkwürdige Befehl als Nebeneffekt, dass sich die "local master browser" melden:

gio mount 'smb://-/' 

Der Dateimanager Nautilus bemerkt diese Manipulationen manchmal erst nach erneutem Laden des Fensterinhalts.

Manchmal ist sogar zusätzlich ein Neustart der Session durch Ab- und Anmelden erforderlich.

Wenn man entgegen diesen Hinweisen immer noch nicht alle erwarteten Server neben dem Ordner „Windows-Netzwert“ sieht, kann es an den langen Verzugszeiten liegen. SMB-Server kündigen sich selbst nur alle 12 Minuten an.

Betrieb eines LMB

Die Kommunikation erfolgt über das CIFS-Browse-Protokoll (eine moderne Variante des NetBIOS-Browse-Protokolls), welches die UDP/IPv4-Ports 137 und 138 sowie TCP/IPv4- oder TCP/IPv6-Port 445 benutzt. Diese Ports dürfen im internen Netzwerk nicht blockiert werden. NetBios-über-TCP Port 139 kann man dagegen sperren.

Der Router an der Übergabestelle zwischen internem zu externem Netzwerk sollte die NetBIOS- und SMB-Ports 135, 137, 138, 139 und 445 für ein- und ausgehende UDP- und TCP-Pakete sperren.

Man kann in seinem Netzwerk beliebig vielen Rechnern erlauben, als LMB zu arbeiten. Empfohlen wird jedoch, dies nur bei dauerhaft im Netzwerk aktiven Rechnern zuzulassen. Ein nur zeitweise an das Netzwerk angeschlossener Rechner kann die Funktionalität der Netzwerksuche und damit das Fenster „Windows-Netzwerk“ stören, wenn er beim Beitritt zum Netzwerk eine Wahl des LMB erzwingt. Diese Unterbrechungen können mehrere Minuten dauern.

Es gibt sowohl Betriebssysteme, bei denen per Voreinstellung der Betrieb als LMB zugelassen ist wie auch solche, die dies verbieten. Die Verwendung eines vom Vorgabewert WORKGROUP abweichenden Namens für die eigene Arbeitsgruppe verhindert, dass beim Anschluss eines fremden Rechners diese eine Wahl des LMB für die eigene Arbeitsgruppe auslöst und damit die Netzwerksuche stört.

Wenn der aktive LMB aus dem Netzwerk entfernt wird, wählen die verbleibenden LMB-Kandidaten einen neuen. Dazu muss es aber noch mindestens einen Rechner im Netzwerk geben, der eine Wahl zum LMB anstoßen darf (preferred master = yes beim SAMBA-Server).

Neue Server im Netzwerk werden manchmal erst mit Zeitverzug sichtbar. Ein Server erneuert alle 12 Minuten seine Meldung an den LMB.

Bei der Entfernung eines Servers aus dem Netzwerk ohne ordentliche Abmeldung wird er noch bis zu 36 Minuten in der Serverliste geführt.

Sicherheitsaspekte

Die Protokoll-Version SMBv1 ist unsicher und sollte daher nach Möglichkeit vermieden werden.

  • Wer im Dateimanager das Fenster „Windows-Netzwerk“ benutzen möchte, benötigt im Netzwerk einen "local master browser". Dies kann ein Samba-Server sein, dann muss aber auf diesem die Protokoll-Version SMBv1 (geschrieben als NT1) verfügbar sein. Zur Begrenzung des Risikos kann man einen SAMBA-Server ohne explizite Freigaben als LMB konfigurieren.

  • Der zum Browsen im Dateimanager verwendete SMB-Client muss ebenfalls das Protokoll SMBv1 benutzen dürfen, da gio mount sonst keine Rechnerliste vom LMB erhält. Die Freigabeliste jedes SMB-Servers kann man aber auch mit den Protokoll-Versionen SMBv2+ abfragen, somit kann man auf diesen Servern das Protokoll SMBv1 sperren. In einem so konfiguriertem Netzwerk kann man mit dem Kommandozeilenwerkzeug smbclient browsen, jedoch nicht im Fenster „Windows-Netzwerk“. Dies ist eine zur Zeit (2020) bestehende funktionale Beschränkung der Dateimanager, welche mit dem Skript im Anhang umschifft werden kann.

Das CIFS-Browse-Protokoll und damit der LMB selbst ist nicht von den Sicherheitsproblemen bei SMBv1 betroffen, jedoch erfordert die Verwendung von „Windows-Netzwerk“ zwingend den Betrieb mindestens eines SMB-Dateiservers in einem unsicheren Modus. Jeder IT-Verantwortliche muss daher abwägen, ob in seinem Verantwortungsbereich der Komfortgewinn das damit verbundene Risiko rechtfertigt.

Begriffserklärungen

NetBIOS-Name

NetBIOS-Namen und SMB-Namen werden oft miteinander verwechselt, da sie eng miteinander verwandt sind.

Ein NetBIOS-Name ist eine Folge von genau 16 Bytes. Solche Bezeichner erfüllten bei urtümlichen Netzwerk-Protokollen wie NetBIOS oder LanManager zwei wichtige Aufgaben:

  1. Sie dienten auf der Netzwerkebene Layer-3 als Adressen analog zu den IPv4-Adressen für heutige IP-Netze. In dieser Funktions sind sie aber heute bedeutungslos.

  2. Sie können auf Netzwerkebene Layer-5+ zur Bezeichnung von Services verwendet werden. In diesem Sinne sind sie auch für heutige SMB-Netzwerke nach wie vor in Gebrauch.

Für die Netbios-Namen können grundsätzlich alle 8-Bit-Zeichen verwendet werden. Als einzige harte Einschränkung darf den Name nicht mit einem Leerzeichen beginnen, weil das Leerzeichen zum Auffüllen von kürzeren Namen auf genau 16 Byte verwendet wird. Es war aber von Anfang an die Konvention, dass man sich auf druckbare Zeichen beschränkt, weil man die Namen ja auch zur Bezeichnung der Services verwenden will. Eine weitere Konvention ist, dass zwar grundsätzlich große und kleine Buchstaben unterschiedliche Adressen bilden, jedoch lassen sich die Rechner unter allen denkbaren Kombinationen von Groß- und Kleinschreibung eines Namens in gleicher Weise ansprechen. Die Standardform verwendet durchgängig Großbuchstaben.

Microsoft (welches NetBIOS nicht erfunden hat, aber intensiv nutzt) schränkt die zulässigen Byte weiter ein und verbietet alles, was MS-DOS Pein verursacht, insbesondere die Zeichen „\/:*?"<|>“. Der Punkt „.“ ist zulässig, jedoch nicht am Anfang.

Alle 8-Bit-Zeichen über 127 sind problematisch, weil die gängigen Zeichensätze mit einem Byte wie ISO-8859 (verschiedene Varianten), CP437, CP 1252 usw. die Schriftzeichen hier unterschiedlich kodieren. Die betrifft insbesondere auch die deutschen Umlaute und spezielle Schriftzeichen für andere Sprachen. Bei Multi-Byte-Zeichenkodierung wie UTF-8 (gängig bei Linux) muss man beachten, dass hier ein Schriftzeichen mehrere Byte belegt. Ein NetBIOS-Namen ist daher immer 16 Byte, aber nicht immer 16 Schriftzeichen lang. Der vorsichtige Praktiker vermeidet diese Schriftzeichen in NetBIOS-Namen.

Schließlich muss der Praktiker, der Wert darauf legt, dass seine Rechner unabhängig von der symbolischen Adresstechnik immer unter demselben Namen erreichbar sein sollen, auch noch die Beschränkungen der DNS-Namen beachten. Diese Namen dürfen nur „A-Z“ (bzw. „a-z“), „0-9“ sowie den Bindestrich „-“ und den Punkt „.“ enthalten.

Für den Praktiker gilt daher: Ein NetBIOS-Name ist eine Folge von 16 Byte aus dem für DNS-Namen gültigen Zeichensatz. Man darf kürzere Folgen verwenden, da diese automatisch mit Leerzeichen auf 16 Byte ergänzt werden.

Trotz syntaktischer Richtigkeit verhalten sich Namen oft problematisch, wenn sie Punkt oder Bindestrich enthalten. Wegen der vielen beschränkenden Einflüsse von anderen Seiten beschränkt man sich am besten auf alphanumerische ASCII-Zeichen.

SMB-Name

Ein SMB-Name ist ein NetBIOS-Name, der bei moderner SMB-Software für den zweiten Anwendungsfall eines NetBIOS-Namens benutzt wird. Damit gelten alle praktischen Beschränkungen bei den NetBIOS-Namen auch hier.

Zusätzlich gilt: Man darf selbst nur die ersten 15 der 16 Byte festlegen, weil die Software das 16. Byte als Typenkennzeichen selbst verwaltet und hinzufügt.

Anhang Skript SMBsession

Dieses Skript ertüchtigt den Dateimanager Nautilus, SMB-Netzwerke und -Rechner ohne Verwendung des Protokolls SMBv1 zu durchsuchen sowie sich zu den von den Servern angebotenen Freigaben zu verbinden.

Diese Revision wurde am 26. März 2021 20:52 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Desktop, Netzwerk, Server, Samba