Entfernen von SMB 1 unter Linux

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. Azure Files unterstützt SMB 1 nicht und ab der Linux-Kernelversion 4.18 ist es möglich, SMB 1 unter Linux zu deaktivieren. Es wird dringend empfohlen, SMB 1 auf Ihren Linux-Clients zu deaktivieren, bevor Sie SMB-Dateifreigaben in der Produktion verwenden.

Linux-Distributionsstatus

Ab der Linux-Kernelversion 4.18 stellt das SMB-Kernelmodul (cifs genannt, weil es sich um eine Legacyversion handelt) einen neuen Modulparameter (häufig in verschiedenen Dokumentationen als cifs, hier aber als disable_legacy_dialects bezeichnet) zur Verfügung. 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 allgemeine Linux-Distributionen ausführlich 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 zum aktuellen Zeitpunkt nicht auf Ihrem System geladen ist. Wenn Sie eine SMB-Freigabe eingebunden haben, wird dies automatisch überprüft. Ansonsten können Sie den folgenden Befehl verwenden, der keine Ausgabe zurückgeben sollte, wenn SMB nicht geladen ist:

lsmod | grep cifs

Wenn Sie das Modul entladen möchten, entfernen Sie zuerst alle SMB-Freigaben (wie oben beschrieben über den Befehl umount). 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. Hierfür können Sie den Befehl modprobe verwenden:

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). Dafür können Sie den folgenden Befehl verwenden:

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: