Kategorie
GNU/Linux
Veröffentlicht
Lesezeit
8 Minuten
Diskussion
Noch keine Kommentare

GNU/Linux

Samba für Sonos S1: SMB1 erlauben, ohne das ganze Heimnetz aufzureißen

Alte Sonos-Lautsprecher spielen eure Musiksammlung nur per SMB1 und NTLMv1 ab. Ein eigener Benutzer, eine schreibgeschützte Freigabe und ein paar Zeilen in der smb.conf sorgen dafür, dass die Lautsprecher spielen, ohne dass der Rest des Heimservers unnötig offen steht.

Sonos-Verstärker auf einem Holzregal vor einem Gewirr aus Kabeln, im Vintage-Look

Wer noch Sonos-Lautsprecher der ersten Generation betreibt und seine Musiksammlung auf dem eigenen Server liegen hat, stößt bei Samba schnell auf ein Problemchen: Ohne SMB1 und die alte NTLMv1-Anmeldung spielen die Lautsprecher keinen einzigen Titel. Die üblichen Anleitungen im Netz drehen deshalb einfach alles auf, was Samba aus gutem Grund abgeschaltet hat. Das geht aber auch deutlich sauberer, ohne auf die Musik zu verzichten.

Warum Sonos S1 noch SMB1 braucht

Bei mir hängen noch zwei Play:3, ein Play:1 und ein Connect:Amp im Netz. Alle laufen mit der S1-Software, für die Sonos nur noch Fehlerkorrekturen liefert. Die Lautsprecher spielen nicht nur Streams, sondern auch meine Musiksammlung vom Server. Laut einer Diskussion im Sonos-Forum reichen die Ressourcen der S1-Geräte dafür aber nur für SMBv1, mehr ist auf der alten Hardware nicht drin.

Samba hat das alte Protokoll dagegen schon lange in Rente geschickt. Seit Version 4.11 steht server min protocol ab Werk auf SMB2_02, die NTLMv1-Anmeldung ist laut Samba-Projekt sogar schon seit Version 4.5 abgeschaltet. Die üblichen Anleitungen schalten beides mit zwei Zeilen global wieder ein. Die Lautsprecher spielen dann zwar, aber eben nicht nur sie bekommen die Tür geöffnet.

Wer ein System mit S2 betreibt, ist fein raus. Sonos hat dort mit Version 13.4.1 im Dezember 2021 SMBv2 und SMBv3 nachgereicht und spricht inzwischen gar kein SMBv1 mehr. S2-User lassen die Samba-Standards also in Ruhe. Der Rest dieses Artikels richtet sich an alle, die wie ich noch an ihren alten Lautsprechern hängen und sie nicht wegen eines Protokolls entsorgen wollen.

Was an der schnellen Lösung das Problem ist

SMB1 lässt sich in Samba nur für den ganzen Server erlauben, nicht für einzelne Freigaben oder Geräte. Spätestens seit WannaCry 2017 eine Lücke in Microsofts SMB1 ausnutzte, gilt das Protokoll als Altlast, und NTLMv1 macht es Angreifern leicht, mitgeschnittene Anmeldungen zu knacken. Meldet sich der Lautsprecher dann auch noch mit eurem normalen Benutzer an, wandert ausgerechnet euer Hauptpasswort im schwächsten Verfahren durchs Netz.

Dazu kommen Zeilen, die man beim Abschreiben gern gleich mitnimmt. Mit wide links und allow insecure wide links folgt Samba Symlinks auch dann, wenn sie aus der Freigabe herauszeigen. Gern hängt auch das ganze Datenverzeichnis schreibbar im Netz. Klar, von außen ist so ein Heimserverchen meist dicht. Doch im selben LAN hängen auch Fernseher, Steckdosen und Lautsprecher, deren Software ihr nicht in der Hand habt.

Ein eigener Benutzer nur für Sonos

Der wichtigste Schritt ist ein eigener Benutzer, der nur für die Lautsprecher da ist und sonst nichts darf. Er braucht weder ein Home-Verzeichnis noch eine Shell, Samba kennt ihn nur zum Anmelden. Das Passwort vergebt ihr einmalig und verwendet es nirgendwo sonst, denn per NTLMv1 sollte man es als halb öffentlich betrachten. Neu anlegen lässt er sich mit zwei Befehlen:

Bash2 Zeilen
sudo useradd -r -M -s /usr/bin/nologin sonos
sudo smbpasswd -a sonos

Habt ihr schon einen Benutzer, mit dem sich die Lautsprecher anmelden, stutzt ihr ihn mit usermod zurecht. Er verliert die Shell, bekommt / als Home-Verzeichnis und ein gesperrtes Unix-Passwort. Die Anmeldung an Samba läuft über das eigene Passwort aus smbpasswd und funktioniert davon unberührt weiter. Nutzen die Lautsprecher bisher euren normalen Benutzer, legt ihr dagegen lieber einen neuen an:

Bash2 Zeilen
sudo usermod -s /usr/bin/nologin -d / sonos
sudo passwd -l sonos

Die smb.conf

Die Konfiguration erlaubt SMB1 und NTLMv1, grenzt aber alles drumherum ein. Samba lauscht nur auf der LAN-Schnittstelle und nicht auf Docker-Bridges oder VPN-Tunneln. Gäste fliegen raus, Drucker gibt es keine, und jede Freigabe bekommt eine Liste der Benutzer, die rein dürfen. Den Namen der Netzwerkschnittstelle (bei mir enp0s25) und die Pfade müsst ihr natürlich an euer System anpassen:

smb.confINI38 Zeilen
[global]
   workgroup = WORKGROUP
   server string = bender
   server role = standalone server

   # Sonos S1: nur SMB1 + NTLMv1
   server min protocol = NT1
   server max protocol = SMB3
   ntlm auth = ntlmv1-permitted

   # nur LAN und lokal, nicht auf den Docker-Bridges
   interfaces = lo enp0s25
   bind interfaces only = yes

   map to guest = never

   # keine Drucker
   load printers = no
   printing = bsd
   printcap name = /dev/null
   disable spoolss = yes

[homes]
   browseable = no
   writable = yes
   valid users = %S
   invalid users = sonos

[musik]
   path = /data/musik
   browseable = yes
   read only = yes
   valid users = sonos anna ben lena

[data]
   path = /data
   writable = yes
   valid users = anna ben

ntlmv1-permitted ist übrigens nur der sprechende Name für das alte yes. Die Freigabe [musik] ist schreibgeschützt; lesen dürfen sonos und die Familie, hier anna, ben und lena. Selbst wenn jemand die Anmeldung des Lautsprechers knackt, kommt er so nur an die Musik. Auf [data] kommen nur anna und ben, wide links taucht nirgendwo auf, und Symlinks bleiben damit in ihrer Freigabe.

Wichtig ist noch die Zeile invalid users = sonos unter [homes]. Diese Freigabe bietet jedem Benutzer sein Home-Verzeichnis an, und das ist beim Lautsprecher-Benutzer nach dem usermod von oben das Wurzelverzeichnis. Ohne die Zeile gäbe es also eine beschreibbare Freigabe \\bender\sonos auf das ganze System. Was dort tatsächlich geht, regeln zwar die Dateirechte, Verzeichnisse wie /tmp stehen aber für alle offen.

Lässt sich die Sonos-Bibliothek gerade nicht neu einrichten, gibt es auch einen Zwischenschritt ohne eigene Musikfreigabe. Dann nehmt ihr sonos in die valid users der bestehenden Freigabe auf und setzt zusätzlich read list = sonos. Der Lautsprecher darf dann weiter alles lesen, was die Dateirechte hergeben, aber nichts schreiben. Auf Dauer ist die eigene Freigabe aber klar die bessere Wahl.

Bevor ihr die neue Datei aktiviert, lasst ihr sie von testparm prüfen. Das Programm meckert über Tippfehler und unbekannte Optionen, bevor Samba über sie stolpert. Danach startet ihr den Dienst neu, unter Arch heißt er smb, unter Debian und Ubuntu smbd. Offene Verbindungen brechen dabei kurz ab, eingehängte Freigaben auf euren Rechnern verbinden sich aber normalerweise von selbst wieder:

Terminal2 Zeilen
sudo testparm -s
sudo systemctl restart smb

Die Musikbibliothek in der Sonos-App

Zum Schluss tragt ihr die Freigabe in der S1-App als Musikbibliothek ein. Öffnet dazu die Einstellungen und geht dort auf Musikbibliothek und Musikbibliothek einrichten. Als Pfad tragt ihr die Freigabe im Windows-Format ein, also \\bender\musik, darunter den Benutzer sonos und sein Passwort. Danach liest Sonos die Sammlung ein, was bei großen Bibliotheken etwas dauern kann.

Kontrolle

Ob alles so läuft wie gedacht, zeigt euch smbstatus. In der Spalte Protocol Version seht ihr, wer mit welchem Protokoll angemeldet ist. Normale Rechner sollten sich weiter mit SMB3 verbinden, mein Notebook etwa mit SMB3_11, nur die Lautsprecher tauchen mit NT1 auf. Ein Gastzugriff ohne Passwort sollte dagegen mit NT_STATUS_ACCESS_DENIED abprallen, wenn ihr ihn mit smbclient von einem anderen Rechner aus probiert:

Terminal2 Zeilen
sudo smbstatus -b
smbclient -N //bender/data -c ls

Vom Ergebnis des zweiten Befehls solltet ihr euch nicht in die Irre führen lassen. Die Zeile „Anonymous login successful“ klingt zwar nach offener Tür, sie betrifft aber nur die Verbindung zum Server selbst, über die ein Client etwa die Liste der Freigaben abfragt. Entscheidend ist die zweite Zeile, denn in die Freigabe selbst kommt ohne Benutzer und Passwort niemand hinein:

Terminal3 Zeilen
smbclient -N //bender/data -c ls
Anonymous login successful
tree connect failed: NT_STATUS_ACCESS_DENIED

Bei mir sieht das so aus: Der Lautsprecher im Schlafzimmer liest als sonos per NT1, das Notebook hängt mit SMB3_11 und signierter Verbindung dran. Genau so soll es sein, denn das alte Protokoll bleibt damit auf die Geräte beschränkt, die nichts anderes können. Die übrigen Lautsprecher tauchen erst auf, wenn sie gerade auf die Bibliothek zugreifen:

Terminal7 Zeilen
sudo smbstatus -b

Samba version 4.25.0
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              
----------------------------------------------------------------------------------------------------------------------------------------
732192  sonos        sonos        192.168.0.60 (ipv4:192.168.0.60:38427)    NT1               -                    -                    
711090  anna         anna         192.168.0.191 (ipv4:192.168.0.191:52826)  SMB3_11           -                    partial(AES-128-CMAC)

Und auf Dauer?

Ganz glücklich bin ich mit SMB1 natürlich trotzdem nicht. Auf meinem Server läuft ohnehin schon bonob, das Navidrome als Musikdienst in die Sonos-App bringt. Kommt die Musik darüber, braucht kein Lautsprecher mehr eine Samba-Freigabe, und SMB1 könnte endgültig weg. Wer jedoch ohne die interne Sonos-Bibliothek nicht auskommt, für den ist die eingegrenzte Variante in meinen Augen ein guter Kompromiss.

Alles in allem kostet die saubere Variante nur einen Benutzer und ein paar Zeilen mehr in der smb.conf. Die Lautsprecher spielen genauso wie mit der schnellen Lösung, nur führt über sie kein Weg zum Rest des Servers. Wie habt ihr eure alten Sonos-Lautsprecher angebunden? Hängt bei euch auch noch SMB1 im Netz, oder seid ihr längst auf S2 umgestiegen?

Diskussion Noch keine Kommentare – schreib den ersten.

Kommentar schreiben

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Markdown wird unterstützt: **fett**, _kursiv_, [Linktext](URL), `Code`, Zeilen mit - für Listen, 1. für nummerierte Listen, dreifache Backticks für Codeblöcke.

Sicherheitsprüfung: läuft automatisch, du musst nichts tun.

Mehr aus dem Blog

Gerade diskutiert

Kategorien

Schlagwörter

Zeilen sind breiter als der Bildschirm. Quer halten zeigt mehr – oder Umbrechen einschalten.

Linux und Ich — Samba für Sonos S1: SMB1 erlauben, ohne das ganze Heimnetz aufzureißen
https://linuxundich.de/samba-sonos-s1-smb1-ntlmv1-sicher-konfigurieren/ — gedruckt am 18. Oktober 2026