Remover o SMB 1 no 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, 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 Arquivos do Azure não dá suporte ao SMB 1 e, iniciando com o kernel do Linux versão 4.18, o Linux possibilita desabilitar o SMB 1. Nós sempre recomendamos desabilitar o SMB 1 em seus clientes Linux antes de usar compartilhamentos de arquivos SMB em produção.

Status da distribuição do Linux

Iniciando com o kernel do Linux 4.18, o módulo do kernel SMB, chamado de cifs por motivos herdados, expõe um novo parâmetro de módulo (geralmente conhecido como parm por várias documentações externas), chamado dedisable_legacy_dialects. Embora tenha sido apresentada no kernel do Linux 4.18, alguns fornecedores reportaram essa alteração em kernels anteriores que eles suportam. Para sua conveniência, a tabela a seguir detalha a 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 SMB não está atualmente carregado no sistema (isso ocorre de modo automático se você montou um compartilhamento SMB). Você pode fazer isso com o comando a seguir, que não deverá gerar nada se o SMB não for carregado:

lsmod | grep cifs

Para descarregar o módulo, primeiro desmonte todos os compartilhamentos SMB (usando o comando umount, conforme descrito acima). 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. Você pode fazer isso com 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. Você pode fazer isso com 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óximas etapas

Veja estes links para obter mais informações sobre o Arquivos do Azure: