Wyłączanie protokołu SMB 1 na klientach z systemem Linux
Wiele organizacji i dostawców usług internetowych (ISPs) blokuje port używany przez protokół SMB do komunikacji, port 445. Ta praktyka wynika ze wskazówek dotyczących zabezpieczeń dotyczących starszych i przestarzałych wersji protokołu SMB. Mimo że protokół SMB 3.x jest protokołem bezpiecznym z Internetu, starsze wersje protokołu SMB, zwłaszcza SMB 1, nie są. Protokół SMB 1, znany również jako CIFS (common Internet File System), jest dołączony do wielu dystrybucji systemu Linux.
Protokół SMB 1 jest nieaktualny, nieefektywny i niezabezpieczony protokół. Dobrą wiadomością jest to, że usługa Azure Files nie obsługuje protokołu SMB 1. Ponadto, począwszy od jądra systemu Linux w wersji 4.18, system Linux umożliwia wyłączenie protokołu SMB 1. Zdecydowanie zalecamy wyłączenie protokołu SMB 1 na klientach z systemem Linux przed użyciem udziałów plików SMB w środowisku produkcyjnym.
Uwaga
W tym artykule odwołuje się system CentOS — dystrybucja systemu Linux, która nie będzie już obsługiwana po czerwcu 2024 r. Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.
Stan dystrybucji systemu Linux
Począwszy od jądra systemu Linux 4.18, moduł jądra SMB, nazywany cifs
ze starszych powodów, uwidacznia nowy parametr modułu (często określany jako parm przez różne zewnętrzne dokumenty) o nazwie disable_legacy_dialects
. Mimo że wprowadzono jądro systemu Linux w wersji 4.18, niektórzy dostawcy wycofali tę zmianę do starszych jąder, które obsługują. W poniższej tabeli przedstawiono dostępność tego parametru modułu w typowych dystrybucjach systemu Linux.
Dystrybucja | Może wyłączyć protokół SMB 1 |
---|---|
Ubuntu 14.04-16.04 | Nie. |
Ubuntu 18.04 | Tak |
Ubuntu 19.04+ | Tak |
Debian 8-9 | Nie. |
Debian 10+ | Tak |
Fedora 29+ | Tak |
CentOS 7 | Nie. |
CentOS 8+ | Tak |
Red Hat Enterprise Linux 6.x-7.x | Nie. |
Red Hat Enterprise Linux 8+ | Tak |
openSUSE Leap 15.0 | Nie. |
openSUSE Leap 15.1+ | Tak |
openSUSE Tumbleweed | Tak |
SUSE Linux Enterprise 11.x-12.x | Nie. |
SUSE Linux Enterprise 15 | Nie. |
SUSE Linux Enterprise 15.1 | Nie. |
Sprawdź, czy dystrybucja systemu Linux obsługuje parametr modułu disable_legacy_dialects
za pomocą następującego polecenia:
sudo modinfo -p cifs | grep disable_legacy_dialects
To polecenie powinno wyświetlić następujący komunikat:
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)
Usuwanie protokołu SMB 1
Przed wyłączeniem protokołu SMB 1 upewnij się, że moduł SMB nie jest obecnie załadowany w systemie (co dzieje się automatycznie, jeśli został zainstalowany udział SMB). Uruchom następujące polecenie, które nie powinno zwracać żadnych danych, jeśli protokół SMB nie został załadowany:
lsmod | grep cifs
Aby zwolnić moduł, najpierw odinstaluj wszystkie udziały SMB przy użyciu umount
polecenia . Wszystkie zainstalowane udziały SMB w systemie można zidentyfikować za pomocą następującego polecenia:
mount | grep cifs
Po usunięciu wszystkich udziałów plików SMB można bezpiecznie zwolnić moduł. modprobe
Uruchom polecenie:
sudo modprobe -r cifs
Moduł można załadować ręcznie przy użyciu protokołu SMB 1 zwolniony przy modprobe
użyciu polecenia :
sudo modprobe cifs disable_legacy_dialects=Y
Na koniec możesz sprawdzić, czy moduł SMB został załadowany z parametrem, sprawdzając załadowane parametry w pliku /sys/module/cifs/parameters
:
cat /sys/module/cifs/parameters/disable_legacy_dialects
Aby trwale wyłączyć protokół SMB 1 w dystrybucjach opartych na systemie Ubuntu i Debian, należy utworzyć nowy plik (jeśli nie masz jeszcze niestandardowych opcji dla innych modułów) nazywany /etc/modprobe.d/local.conf
ustawieniem. Uruchom następujące polecenie:
echo "options cifs disable_legacy_dialects=Y" | sudo tee -a /etc/modprobe.d/local.conf > /dev/null
Możesz sprawdzić, czy działa to przez załadowanie modułu SMB:
sudo modprobe cifs
cat /sys/module/cifs/parameters/disable_legacy_dialects
Następne kroki
Poniższe linki umożliwiają uzyskanie dodatkowych informacji na temat usługi Azure Files: