Partager via


Désactiver SMB 1 sur les clients Linux

De nombreuses organisations et autres fournisseurs de services Internet bloquent le port dont se sert SMB pour communiquer, à savoir le port 445. Cette pratique résulte des recommandations de sécurité concernant les versions héritées et déconseillées du protocole SMB. Même si SMB 3.x est un protocole sécurisé pour Internet, les versions antérieures de SMB, en particulier SMB 1, ne le sont pas. SMB 1, aussi appelé CIFS, est intégré à de nombreuses distributions Linux.

SMB 1 est un protocole obsolète, inefficace et qui pose des problèmes de sécurité. La bonne nouvelle est que Azure Files ne prend pas en charge SMB 1. En outre, à partir de la version 4.18 du noyau Linux, Linux permet de désactiver SMB 1. Nous vous recommandons vivement de désactiver SMB 1 sur vos clients Linux avant d’utiliser des partages de fichiers SMB en production.

Attention

Cet article fait référence à CentOS, une distribution Linux qui ne sera plus prise en charge après juin 2024. Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

État des distributions Linux

À partir de la version 4.18 du noyau Linux, le module de noyau SMB, appelé cifs pour des raisons d’héritage, expose un nouveau paramètre de module (souvent appelé param par diverses documentations externes) sous le nom disable_legacy_dialects. Bien qu’ils aient été introduits dans la version 4.18 du noyau Linux, certains fournisseurs ont rétroporté cette modification sur des noyaux plus anciens qu’ils prennent en charge. Le tableau suivant détaille la disponibilité de ce paramètre de module sur les distributions Linux courantes.

Distribution Possibilité de désactivation de SMB 1
Ubuntu 14.04-16.04 Non
Ubuntu 18.04 Oui
Ubuntu 19.04+ Oui
Debian 8-9 Non
Debian 10+ Oui
Fedora 29+ Oui
CentOS 7 Non
CentOS 8+ Oui
Red Hat Enterprise Linux 6.x-7.x Non
Red Hat Enterprise Linux 8+ Oui
openSUSE Leap 15.0 Non
openSUSE Leap 15.1+ Oui
openSUSE Tumbleweed Oui
SUSE Linux Enterprise 11.x-12.x Non
SUSE Linux Enterprise 15 Non
SUSE Linux Enterprise 15.1 Non

Vous pouvez vérifier si votre distribution Linux prend en charge le paramètre de module disable_legacy_dialects via la commande suivante :

sudo modinfo -p cifs | grep disable_legacy_dialects

Cette commande doit générer le message suivant :

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)

Supprimer SMB 1

Avant de désactiver SMB 1, vérifiez que le module SMB n’est pas chargé sur votre système (ce qui se produit automatiquement si vous avez monté un partage SMB). Exécutez la commande suivante, qui ne doit générer aucun résultat si SMB n’est pas chargé :

lsmod | grep cifs

Pour décharger le module, commencez par démonter tous les partages SMB, à l’aide de la commande umount. Vous pouvez identifier tous les partages SMB montés sur votre système à l’aide de la commande suivante :

mount | grep cifs

Une fois que vous avez démonté tous les partages de fichiers SMB, vous pouvez décharger le module sans risque. Exécutez la commande modprobe :

sudo modprobe -r cifs

Vous pouvez charger manuellement le module avec SMB 1 déchargé à l’aide de la commande modprobe :

sudo modprobe cifs disable_legacy_dialects=Y

Enfin, vous pouvez vérifier que le module SMB a bien été chargé avec le paramètre en examinant les paramètres chargés dans /sys/module/cifs/parameters :

cat /sys/module/cifs/parameters/disable_legacy_dialects

Pour désactiver de façon permanente SMB 1 sur les distributions Ubuntu et Debian, vous devez créer un fichier (si vous n’avez pas déjà d’options personnalisées pour d’autres modules) sous le nom /etc/modprobe.d/local.conf avec le paramètre. Exécutez la commande suivante :

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

Vous pouvez vérifier que cela a fonctionné en chargeant le module SMB :

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

Étapes suivantes

Consultez ces liens pour en savoir plus sur Azure Files :