Отключение SMB 1 на клиентах Linux
Многие организации и поставщики услуг Интернета (ISP) блокируют порт 445, используемый для обмена данными по протоколу SMB. Такой запрет основан на рекомендациях по защите от устаревших и нерекомендуемых версий протокола SMB. Хотя SMB 3.x является интернет-безопасным протоколом, старые версии SMB, особенно SMB 1, не являются. Протокол SMB 1, также известный как CIFS (Common Internet File System), включен во многие дистрибутивы Linux.
SMB 1 — это устаревший, неэффективный и небезопасный протокол. Хорошая новость заключается в том, что Файлы Azure не поддерживает SMB 1. Кроме того, начиная с ядра Linux версии 4.18, Linux позволяет отключить SMB 1. Настоятельно рекомендуется отключить SMB 1 на клиентах Linux перед использованием общих папок SMB в рабочей среде.
Внимание
Эта статья ссылается на CentOS, дистрибутив Linux, который больше не будет поддерживаться после июня 2024 года. Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
Состояние дистрибутивов Linux
Начиная с ядра Linux 4.18, модуль ядра SMB, вызываемый cifs
по устаревшим причинам, предоставляет новый параметр модуля (часто называемый disable_legacy_dialects
parm различными внешними документацией). Несмотря на то что это изменение впервые введено в ядре Linux 4.18, некоторые поставщики перенесли его в более старых, поддерживаемых ими версиях ядра. В следующей таблице описана доступность этого параметра модуля в распространенных дистрибутивах Linux.
Распределение | Может отключать протокол SMB 1 |
---|---|
Ubuntu 14.04-16.04 | No |
Ubuntu 18.04 | Да |
Ubuntu 19.04+ | Да |
Debian 8-9 | No |
Debian 10+ | Да |
Fedora 29+ | Да |
CentOS 7 | No |
CentOS 8+ | Да |
Red Hat Enterprise Linux 6.x-7.x | No |
Red Hat Enterprise Linux 8+ | Да |
openSUSE Leap 15.0 | No |
openSUSE Leap 15.1+ | Да |
openSUSE Tumbleweed | Да |
SUSE Linux Enterprise 11.x-12.x | No |
SUSE Linux Enterprise 15 | No |
SUSE Linux Enterprise 15.1 | No |
Можно проверить, поддерживает ли дистрибутив Linux параметр disable_legacy_dialects
модуля с помощью следующей команды:
sudo modinfo -p cifs | grep disable_legacy_dialects
Эта команда должна выводить следующее сообщение:
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)
Удаление SMB 1
Прежде чем отключить SMB 1, убедитесь, что модуль SMB в настоящее время не загружается в систему (это происходит автоматически при подключении общей папки SMB). Выполните следующую команду, которая не должна выводить ничего, если SMB не загружен.
lsmod | grep cifs
Чтобы выгрузить модуль, сначала отключите все общие папки SMB с помощью umount
команды. Можно выявить все подключенные ресурсы SMB в системе с помощью следующей команды:
mount | grep cifs
После отключения всех общих папок SMB можно выгрузить модуль. Выполните команду modprobe
.
sudo modprobe -r cifs
Можно загрузить модуль вручную после выгрузки SMB 1 с помощью команды modprobe
:
sudo modprobe cifs disable_legacy_dialects=Y
Наконец, можно проверить, загружен ли модуль SMB с нужным параметром, просмотрев загруженные параметры в /sys/module/cifs/parameters
:
cat /sys/module/cifs/parameters/disable_legacy_dialects
Чтобы отключить SMB 1 в дистрибутивах Ubuntu и Debian на постоянной основе, необходимо создать новый файл (если у вас еще нет пользовательских параметров для других модулей), вызвав /etc/modprobe.d/local.conf
с параметром. Выполните следующую команду:
echo "options cifs disable_legacy_dialects=Y" | sudo tee -a /etc/modprobe.d/local.conf > /dev/null
Можно проверить, что цель достигнута, загрузив модуль SMB:
sudo modprobe cifs
cat /sys/module/cifs/parameters/disable_legacy_dialects
Следующие шаги
Дополнительные сведения о службе файлов Azure см. по следующим ссылкам.