Compartir vía


Deshabilitación de SMB 1 en clientes Linux

Muchas organizaciones y proveedores de servicios de Internet (ISP) bloquean el puerto que usa SMB para comunicarse, el puerto 445. Esta práctica procede de las instrucciones de seguridad sobre las versiones heredadas y en desuso del protocolo SMB. Aunque SMB 3.x es un protocolo seguro para Internet, las versiones anteriores de SMB, especialmente SMB 1, no lo son. SMB 1, también conocido como CIFS (Sistema de archivos de Internet común), se incluye en muchas distribuciones de Linux.

SMB 1 es un protocolo obsoleto, ineficaz y no seguro. La buena noticia es que Azure Files no es compatible con SMB 1. Además, a partir de la versión 4.18 del kernel de Linux, Linux hace posible deshabilitar SMB 1. Recomendamos encarecidamente deshabilitar SMB 1 en los clientes Linux antes de usar recursos compartidos de archivos SMB en producción.

Precaución

En este artículo se hace referencia a CentOS, una distribución de Linux que ya no se admitirá después de junio de 2024. Tenga en cuenta su uso y planifique en consecuencia. Para más información, consulte la Guía de fin de ciclo de vida de CentOS.

Estado de la distribución de Linux

A partir del kernel de Linux 4.18, el módulo de kernel de SMB, denominado cifs por motivos de herencia, expone un nuevo parámetro de módulo (a menudo conocido como parm de diversos documentos externos), denominado disable_legacy_dialects. Aunque se presentó en el kernel de Linux 4.18, algunos proveedores han trasladado este cambio a los kernels más antiguos que admiten. En la tabla siguiente se detalla la disponibilidad de este parámetro de módulo en distribuciones de Linux comunes.

Distribución Puede deshabilitar 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

Puede comprobar si la distribución de Linux es compatible con el parámetro del módulo disable_legacy_dialects por medio del comando siguiente:

sudo modinfo -p cifs | grep disable_legacy_dialects

Este comando debe generar el siguiente mensaje:

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)

Eliminación de SMB 1

Antes de deshabilitar SMB 1, confirme que el módulo SMB no está cargado actualmente en el sistema (esto sucede de manera automática si ha montado un recurso compartido de SMB). Ejecute el siguiente comando, que no debe generar nada si SMB no está cargado:

lsmod | grep cifs

Para descargar el módulo, desmonte primero todos los recursos compartidos de SMB con el comando umount. Puede identificar todos los recursos compartidos de SMB montados en el sistema con el siguiente comando:

mount | grep cifs

Una vez que haya desmontado todos los recursos compartidos de archivos SMB, es seguro descargar el módulo. Ejecute el comando modprobe:

sudo modprobe -r cifs

Puede cargar manualmente el módulo con SMB 1 descargado mediante el comando modprobe:

sudo modprobe cifs disable_legacy_dialects=Y

Por último, puede comprobar que el módulo SMB se ha cargado con el parámetro, para ello, examine los parámetros cargados en /sys/module/cifs/parameters:

cat /sys/module/cifs/parameters/disable_legacy_dialects

Para deshabilitar de forma persistente SMB 1 en las distribuciones basadas en Ubuntu y Debian, debe crear un nuevo archivo (si aún no tiene opciones personalizadas para otros módulos) denominado /etc/modprobe.d/local.conf con la configuración. Ejecute el comando siguiente:

echo "options cifs disable_legacy_dialects=Y" | sudo tee -a /etc/modprobe.d/local.conf > /dev/null

Para comprobar que esto ha funcionado, cargue el módulo SMB:

sudo modprobe cifs
cat /sys/module/cifs/parameters/disable_legacy_dialects

Pasos siguientes

Consulte los vínculos siguientes para más información sobre Azure Files: