Deaktivieren von SMB 1 auf Linux-Clients

Viele Organisationen und Internetdienstanbieter (Internet Service Providers, ISPs) blockieren Port 445, der von SMB für die Kommunikation verwendet wird. Diese Praxis geht auf Sicherheitsempfehlungen im Zusammenhang mit alten und veralteten Versionen des SMB-Protokolls zurück. SMB 3.x ist zwar ein internetsicheres Protokoll, das gilt jedoch nicht für ältere SMB-Versionen (insbesondere SMB 1). SMB 1, auch bekannt als CIFS (Common Internet File System), ist in zahlreichen Linux-Distributionen enthalten.

SMB 1 ist ein veraltetes, ineffizientes und unsicheres Protokoll. Die gute Nachricht ist, dass Azure Files SMB 1 nicht unterstützt. Ab der Linux-Kernelversion 4.18 ermöglicht Linux die Deaktivierung von SMB 1. Es wird dringend empfohlen, SMB 1 auf Ihren Linux-Clients zu deaktivieren, bevor Sie SMB-Dateifreigaben in der Produktion verwenden.

Achtung

Dieser Artikel verweist auf CentOS, eine Linux-Distribution, die seit Juni 2024 nicht mehr unterstützt wird. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS End-of-Life-Leitfaden.

Linux-Distributionsstatus

Ab der Linux-Kernelversion 4.18 stellt das SMB-Kernelmodul (cifs genannt, weil es sich um eine Legacyversion handelt) einen neuen Modulparameter (in verschiedenen Dokumentationen häufig als parm bezeichnet) zur Verfügung, der hier als disable_legacy_dialects bezeichnet wird. Obwohl dies mit der Linux-Kernelversion 4.18 eingeführt wurde, haben einige Anbieter diese Änderung auf ältere von ihnen unterstützte Kernelversionen zurückportiert. In der folgenden Tabelle wird die Verfügbarkeit dieses Modulparameters für gängige Linux-Distributionen erläutert.

Distribution SMB 1 deaktivierbar
Ubuntu 14.04–16.04 Nein
Ubuntu 18.04 Ja
Ubuntu 19.04 und höher Ja
Debian 8–9 Nein
Debian 10 und höher Ja
Fedora 29 und höher Ja
CentOS 7 Nein
CentOS 8 und höher Ja
Red Hat Enterprise Linux 6.x–7.x Nein
Red Hat Enterprise Linux 8 und höher Ja
openSUSE Leap 15.0 Nein
openSUSE Leap 15.1 und höher Ja
openSUSE Tumbleweed Ja
SUSE Linux Enterprise 11.x–12.x Nein
SUSE Linux Enterprise 15 Nein
SUSE Linux Enterprise 15.1 Nein

Mithilfe des folgenden Befehls können Sie überprüfen, ob Ihre Linux-Distribution den Modulparameter disable_legacy_dialects unterstützt:

sudo modinfo -p cifs | grep disable_legacy_dialects

Es sollte die folgende Meldung ausgegeben werden:

disable_legacy_dialects: To improve security it may be helpful to restrict the ability to override the default dialects (SMB2.1, SMB3 and SMB3.02) on mount with old dialects (CIFS/SMB1 and SMB2) since vers=1.0 (CIFS/SMB1) and vers=2.0 are weaker and less secure. Default: n/N/0 (bool)

Entfernen von SMB 1

Bevor Sie SMB 1 deaktivieren, vergewissern Sie sich, dass das SMB-Modul in Ihrem System nicht geladen ist (was bei der Einbindung einer SMB-Freigabe automatisch geschieht). Führen Sie den folgenden Befehl aus, der nichts ausgeben sollte, wenn SMB nicht geladen ist:

lsmod | grep cifs

Wenn Sie das Modul entladen möchten, entfernen Sie zuerst mit dem Befehl umount alle SMB-Freigaben. Mithilfe des folgenden Befehls können Sie alle eingebunden SMB-Freigaben auf Ihrem System identifizieren:

mount | grep cifs

Nachdem Sie alle SMB-Dateifreigaben entfernt haben, ist es sicher, das Modul zu entladen. Führen Sie den Befehl modprobe aus:

sudo modprobe -r cifs

Sie können das Modul mithilfe des Befehls modprobe manuell laden, wenn SMB 1 entladen ist:

sudo modprobe cifs disable_legacy_dialects=Y

Zum Schluss können Sie überprüfen, ob das SMB-Modul mit dem Parameter geladen wurde, indem Sie sich die geladenen Parameter in /sys/module/cifs/parameters ansehen:

cat /sys/module/cifs/parameters/disable_legacy_dialects

Wenn Sie SMB 1 für Ubuntu- und Debian-basierte Distributionen dauerhaft aktivieren möchten, müssen Sie eine neue Datei mit dem Namen /etc/modprobe.d/local.conf und der entsprechenden Einstellung erstellen (wenn Sie noch nicht über benutzerdefinierte Optionen für andere Module verfügen). Führen Sie den folgenden Befehl aus:

echo "options cifs disable_legacy_dialects=Y" | sudo tee -a /etc/modprobe.d/local.conf > /dev/null

Wenn Sie das SMB-Modul laden, können Sie überprüfen, ob der Vorgang erfolgreich war:

sudo modprobe cifs
cat /sys/module/cifs/parameters/disable_legacy_dialects

Nächste Schritte

Weitere Informationen zu Azure Files finden Sie unter diesen Links: