Remover SMB 1 no Linux

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS. Muitas organizações e provedores de serviços de Internet (ISPs) bloqueiam a porta que o SMB usa para se comunicar, a porta 445. Essa prática se origina de orientações 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, especialmente o SMB 1, não são. SMB 1, também conhecido como CIFS (Common Internet File System), está incluído em muitas distribuições Linux.

SMB 1 é um protocolo desatualizado, ineficiente e inseguro. A boa notícia é que o Azure Files não suporta SMB 1. Além disso, a partir da versão 4.18 do kernel Linux, o Linux torna possível desativar o SMB 1. É sempre altamente recomendável desativar o SMB 1 em seus clientes Linux antes de usar compartilhamentos de arquivos SMB na produção.

Status da distribuição Linux

Começando com o kernel Linux 4.18, o módulo do kernel SMB, chamado cifs por razões legadas, expõe um novo parâmetro de módulo (muitas vezes referido como parm por várias documentações externas) chamado disable_legacy_dialects. Embora introduzido no kernel Linux 4.18, alguns fornecedores retroportaram essa mudança para kernels mais antigos que eles suportam. A tabela a seguir detalha a disponibilidade desse parâmetro de módulo em distribuições Linux comuns.

Distribuição Pode desativar o SMB 1
Ubuntu 14.04-16.04 Não
Ubuntu 18.04 Sim
Ubuntu 19.04+ Sim
Debian 8-9 Não
Debian 10+ Sim
Fedora 29+ Sim
CentOS 7 Não
CentOS 8+ Sim
Red Hat Enterprise Linux 6.x-7.x Não
Red Hat Enterprise Linux 8+ Sim
openSUSE Salto 15.0 Não
openSUSE Salto 15.1+ Sim
openSUSE Tumbleweed Sim
SUSE Linux Enterprise 11.x-12.x Não
SUSE Linux Enterprise 15 Não
SUSE Linux Enterprise 15.1 Não

Você pode verificar se sua distribuição Linux suporta o disable_legacy_dialects parâmetro module através do seguinte comando:

sudo modinfo -p cifs | grep disable_legacy_dialects

Este 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 SMB 1

Antes de desativar o SMB 1, confirme se o módulo SMB não está carregado no seu sistema (o que acontece automaticamente se você tiver montado um compartilhamento SMB). Execute o seguinte comando, que não deve gerar nada se o SMB não estiver carregado:

lsmod | grep cifs

Para descarregar o módulo, primeiro desmonte todos os compartilhamentos SMB usando o umount comando. Você pode identificar todos os compartilhamentos SMB montados em seu sistema com o seguinte comando:

mount | grep cifs

Depois de desmontar todos os compartilhamentos de arquivos SMB, é seguro descarregar o módulo. Execute o modprobe comando:

sudo modprobe -r cifs

Você pode carregar manualmente o módulo com o SMB 1 descarregado usando o modprobe comando:

sudo modprobe cifs disable_legacy_dialects=Y

Finalmente, você pode verificar se o módulo SMB foi carregado com o parâmetro observando os parâmetros carregados em /sys/module/cifs/parameters:

cat /sys/module/cifs/parameters/disable_legacy_dialects

Para desativar persistentemente o SMB 1 no Ubuntu e distribuições baseadas em Debian, você deve criar um novo arquivo (se você ainda não tiver opções personalizadas para outros módulos) chamado /etc/modprobe.d/local.conf com a configuração. Execute o seguinte comando:

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óximos passos

Veja estas ligações para obter mais informações sobre os Ficheiros do Azure: