Поделиться через


Отключение 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_dialectsparm различными внешними документацией). Несмотря на то что это изменение впервые введено в ядре 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 см. по следующим ссылкам.