Desabilitar o SMB 1 em clientes Linux
Muitas organizações e ISPs (provedores de serviços de Internet) bloqueiam a porta que o SMB usa para se comunicar, a porta 445. Essa prática se origina de diretrizes de segurança sobre versões herdadas e preteridas do protocolo SMB. Embora o SMB 3.x seja um protocolo seguro para a Internet, as versões mais antigas do SMB, principalmente o SMB 1, não são. O SMB 1, também conhecido como CIFS (Common Internet File System), é incluído em várias distribuições do Linux.
Ele é um protocolo desatualizado, ineficiente e não seguro. A boa notícia é que os Arquivos do Azure não dão suporte ao SMB 1. Além disso, a partir do kernel do Linux versão 4.18, o Linux possibilita a desabilitação do SMB 1. É altamente recomendável desabilitar o SMB 1 em seus clientes Linux antes de usar compartilhamentos de arquivos SMB em produção.
Cuidado
Este artigo faz referência ao CentOS, uma distribuição do Linux que não terá mais suporte após junho de 2024. Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.
Status da distribuição do Linux
A partir do kernel do Linux 4.18, o módulo do kernel do SMB, chamado cifs
por motivos herdados, expõe um novo parâmetro de módulo (geralmente conhecido como parm por várias documentações externas), chamado disable_legacy_dialects
. Embora tenha sido apresentada no kernel do Linux 4.18, alguns fornecedores reportaram essa alteração em kernels anteriores que eles suportam. A tabela a seguir mostra os detalhes da disponibilidade desse parâmetro de módulo em distribuições comuns do Linux.
Distribuição | Pode desabilitar o SMB 1 |
---|---|
Ubuntu 14.04-16.04 | No |
Ubuntu 18.04 | Yes |
Ubuntu 19.04+ | Yes |
Debian 8-9 | No |
Debian 10+ | Yes |
Fedora 29+ | Yes |
CentOS 7 | No |
CentOS 8+ | Yes |
Red Hat Enterprise Linux 6.x-7.x | No |
Red Hat Enterprise Linux 8+ | Yes |
openSUSE Leap 15.0 | No |
openSUSE Leap 15.1+ | Yes |
openSUSE Tumbleweed | Yes |
SUSE Linux Enterprise 11.x-12.x | No |
SUSE Linux Enterprise 15 | No |
SUSE Linux Enterprise 15.1 | No |
Verifique se a sua distribuição do Linux dá suporte ao parâmetro do módulo disable_legacy_dialects
por meio do seguinte comando:
sudo modinfo -p cifs | grep disable_legacy_dialects
Esse comando deve gerar a seguinte mensagem:
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)
Remover o SMB 1
Antes de desabilitar o SMB 1, confirme se o módulo do SMB não está atualmente carregado no sistema (o que ocorre de modo automático se você montou um compartilhamento SMB). Execute o seguinte comando, que não deverá gerar nada se o SMB não for carregado:
lsmod | grep cifs
Para descarregar um módulo, primeiro, desmonte todos os compartilhamentos SMB usando o comando umount
. Você pode identificar todos os compartilhamentos SMB montados em seu sistema com o seguinte comando:
mount | grep cifs
Depois que você desmontar todos os compartilhamentos de arquivos SMB, será seguro descarregar o módulo. Executar o comando modprobe
:
sudo modprobe -r cifs
Você pode carregar manualmente o módulo com o SMB 1 descarregado usando o comando modprobe
:
sudo modprobe cifs disable_legacy_dialects=Y
Por fim, você pode verificar se o módulo SMB foi carregado com o parâmetro procurando os parâmetros carregados em /sys/module/cifs/parameters
:
cat /sys/module/cifs/parameters/disable_legacy_dialects
Para desabilitar o SMB 1 de forma persistente em distribuições baseadas em Ubuntu e Debian, você deve criar um novo arquivo (se ainda não tiver opções personalizadas para outros módulos) chamado /etc/modprobe.d/local.conf
com a configuração. Execute o comando a seguir:
echo "options cifs disable_legacy_dialects=Y" | sudo tee -a /etc/modprobe.d/local.conf > /dev/null
Você pode verificar se isso funcionou carregando o módulo SMB:
sudo modprobe cifs
cat /sys/module/cifs/parameters/disable_legacy_dialects
Próximas etapas
Veja estes links para obter mais informações sobre o Arquivos do Azure: