Protocoles de partage de fichiers CIFS et SMB : explication des différences

Lorsqu’il s’agit de choisir un protocole pour partager des fichiers sur le réseau, on rencontre souvent les termes « SMB » et « CIFS » dans les interfaces logicielles et la documentation. Certains utilisateurs pensent que SMB et CIFS désignent la même chose, et il peut être difficile de distinguer clairement la différence entre les deux. Voyons toutefois pourquoi CIFS ne peut pas être utilisé comme synonyme de SMB. Découvrez les différences entre les protocoles SMB et CIFS, ainsi que la manière d’utiliser ces termes.

NAKIVO pour la sauvegarde des données NAS

NAKIVO pour la sauvegarde des données NAS

Sauvegarde et récupération rapides de plusieurs gigaoctets de données sur des appliances NAS et des partages de fichiers Windows et Linux. Récupérez tout ce dont vous avez besoin, quand vous le souhaitez, en quelques secondes.

Qu’est-ce que le protocole SMB ?

Le protocole SMB (Server Message Block) est un protocole réseau fonctionnant au niveau de la couche application du modèle de communication OSI. Le protocole SMB est utilisé pour permettre l’accès partagé à des ressources sur le réseau. Le protocole SMB est largement utilisé pour partager des fichiers sur des serveurs de fichiers, échanger des fichiers entre les ordinateurs des utilisateurs et copier des fichiers d’un ordinateur à l’autre.

Outre la gestion des fichiers, le SMB est également utilisé pour la messagerie et l’impression (transactions à distance à usage général), ainsi que pour parcourir les ordinateurs du réseau. IBM a développé le SMB en 1983, et depuis lors, le protocole a été amélioré plusieurs fois.

Qu’est-ce qu’un partage de fichiers SMB ?

Les partages de fichiers SMB sont des répertoires situés sur un hôte distant et mis à disposition via le protocole SMB. Ils sont configurés sur des serveurs de fichiers, et il est possible de définir des droits d’accès en lecture et en écriture sur ces partages. Un serveur de fichiers peut disposer de plusieurs partages SMB.

Fonctionnement du protocole SMB : que fait le protocole SMB ?

Le protocole SMB fonctionne selon le principe du réseau client-serveur. Il utilise un ensemble de paquets de données contenant une requête envoyée par un client ou une réponse envoyée par un serveur. Les clients peuvent se connecter à un serveur par l’intermédiaire d’une adresse IP ou d’un nom d’hôte. Ces paquets de données SMB peuvent être classés comme suit :

  • Paquets de contrôle de session, qui établissent ou interrompent les connexions aux partages de fichiers
  • Paquets d’accès aux fichiers, qui, comme leur nom l’indique, accèdent aux partages de fichiers et manipulent les fichiers
  • Paquets de messages généraux

Le protocole SMB ouvre une session après avoir établi une connexion et effectué l’authentification. Les messages SMB peuvent alors être transmis via cette session. Lors de l’initiation d’une session, un client SMB envoie une liste de ses capacités (celles-ci dépendent de la version SMB du client).

Le protocole SMB peut fonctionner :

  • directement par TCP en utilisant le port 445 (sans NetBIOS) – il s’agit de l’approche moderne.
  • par l’API NetBIOS en utilisant les ports UDP 137 et 138 et les ports TCP 137 et 139 – il s’agit de l’approche héritée utilisée jusqu’à Windows 2000. Les premières versions de SMB utilisaient NetBIOS sur TCP/IP pour le transport.

Le protocole SMB prend en charge le traitement par lots, c’est-à-dire le regroupement de plusieurs messages et leur envoi en une seule transmission afin d’améliorer les performances.

Parmi les fonctionnalités supplémentaires, on trouve des mécanismes de verrouillage des fichiers destinés à protéger les fichiers partagés lorsque plusieurs utilisateurs ouvrent le même fichier. Le verrouillage des fichiers permet d’éviter que plusieurs utilisateurs n’écrivent simultanément sur un fichier, ce qui entraînerait une incohérence des données dans ce dernier. L’IPC (Inter-Process Connection) est également connu sous le nom de « connexion de session nulle ». Le partage IPC « »$ créé par Windows est utilisé pour les connexions temporaires entre clients et serveurs. Ce partage caché est créé pour partager des données qui ne peuvent pas être classées comme des fichiers, des répertoires ou des imprimantes, par exemple les utilisateurs et l’énumération des partages.

Les systèmes Windows contiennent un client et un serveur SMB natifs. Cependant, les versions client de Windows imposent une limite au nombre d’utilisateurs pouvant se connecter à un hôte, contrairement aux versions Windows Server, qui ne présentent pas de telles restrictions.

  • Windows XP et Vista – 10 connexions simultanées au maximum
  • Windows 7 et Windows 10 – 20 connexions simultanées au maximum

Un serveur SMB sous Linux s’installe en configurant Samba, qui est une implémentation libre de serveur SMB pour Linux. Notez que Samba permet également de joindre un système Linux à un domaine Active Directory et de faire fonctionner Linux en tant que contrôleur de domaine. Des logiciels clients SMB sont également disponibles sous Linux (gratuitement) et sur d’autres systèmes d’exploitation.

Qu’est-ce que le CIFS ?

Le CIFS, ou Common Internet File System, est une implémentation particulière ou un dialecte du protocole SMB développé par Microsoft en 1996 à la suite de la version de Windows 95. Un dialecte est une version et non un protocole indépendant distinct. Un dialecte est un ensemble de paquets de messages envoyés/reçus pour la communication entre hôtes, qui définit une version particulière du protocole. Contrairement à ce que son nom suggère, le CIFS n’est pas un système de fichiers.

La spécification du protocole CIFS repose sur le protocole SMB d’origine, mais avec certaines fonctionnalités supplémentaires ajoutées par Microsoft. Microsoft a mis en œuvre des connexions directes via TCP et le port 445 sans utiliser NetBIOS sur TCP (qui était utilisé dans les premières implémentations de SMB 1). CIFS est une implémentation de SMB 1 et non un protocole de partage de fichiers distinct.

Dialectes du protocole SMB

Lorsque l’on parle de l’implémentation SMB 1 par Microsoft, on peut utiliser le terme CIFS. Dans tous les autres cas, et de manière générale, SMB est le terme correct pour désigner ce protocole réseau. Examinons de plus près les versions de SMB publiées après CIFS afin de mieux comprendre la différence entre CIFS et les autres dialectes (versions) SMB (plus récents).

SMB 2.0

Microsoft a lancé SMB 2.0 (ou SMB2) en 2006 avec Windows Vista. Cette version de SMB est plus fiable que SMB 1.0/CIFS, et ce n’est pas du CIFS. Le nombre de commandes nécessaires au transfert de fichiers est réduit de plus de 100 à 20. Les performances sont supérieures grâce aux mécanismes de traitement en pipeline, c’est-à-dire la possibilité d’envoyer une requête supplémentaire avant d’avoir reçu la réponse à la précédente. Le regroupement de plusieurs actions dans une seule requête réduit le nombre de requêtes adressées à un client, ce qui améliore les performances.

SMB 2.1

SMB 2.1 apporte des améliorations mineures en termes de performances et de mécanismes de blocage par rapport à SMB 2.0. Cette version du protocole a été lancée avec Windows 7 et Windows Server 2008 R2.

SMB 3.0

Au départ, cette version du protocole s’appelait SMB 2.2, mais elle a ensuite été rebaptisée SMB 3.0 avec Windows 8. La version SMB 3.0 :

  • a ajouté SMB Direct (accès direct à la mémoire), SMB Multichannel et SMB Basculement
  • a amélioré la sécurité
  • a ajouté la prise en charge du chiffrement de bout en bout
  • a amélioré l’efficacité du réseau en réduisant la latence

SMB 3.0.2

SMB 3.0.2 ou 3.02 est disponible depuis Windows 8.1 et Windows Server 2012 R2. Dans cette version, la compatibilité SMB 1.0 peut être désactivée pour améliorer la sécurité.

SMB 3.1.1

Cette version est disponible à partir de Windows 10 et Windows Server 2016. Les améliorations comprennent un chiffrement renforcé (AES 128 GCM et AES 128 CCM) et l’utilisation de la fonction de hachage SHA-512 pour les contrôles d’intégrité avant authentification.

SMB sous Windows et Microsoft Server

Le protocole SMB est disponible sous Windows à partir de Windows 3.1 (Windows for Workgroups). Les versions SMB et la compatibilité avec les différentes versions de Windows sont expliquées dans le tableau.

Les colonnes et les lignes contiennent les versions de Windows pouvant exécuter un client SMB ou un serveur SMB (les colonnes et les lignes sont interchangeables). Une cellule située à l’intersection d’une colonne et d’une ligne indique quelle version du protocole SMB est utilisée pour la communication entre les versions de Windows concernées.

Windows 10

Server 2016 et versions ultérieures

Windows 8.1

Server 2012 R2

Windows 8

Server 2012

Windows 7

Server 2008 R2

Windows Vista

Server 2008

Windows XP, Server 2003 et versions antérieures
Windows 10

Server 2016 et versions ultérieures

SMB 3.1.1 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8.1

Server 2012 R2

SMB 3.02 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8

Server 2012

SMB 3.0 SMB 3.0 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 7

Server 2008 R2

SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.0 SMB 1.0
Windows Vista

Server 2008

SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 1.0
Win XP, Server 2003 et versions antérieures SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0

CIFS vs SMB : la source probable de la confusion

Voyons à l’aide d’un exemple pourquoi les termes CIFS et SMB prêtent encore à confusion chez les utilisateurs. Pour cela, imaginons que nous utilisons un serveur de fichiers avec un partage SMB configuré sur Windows Server 2019 et une machine Linux se connectant à ce serveur de fichiers via le protocole SMB. Ubuntu 20.04 est la distribution Linux que nous utilisons dans cet exemple. Notez que la configuration est identique pour Ubuntu 22.

Nous avons la configuration suivante dans nos environnements :

  • Windows Server 2019 : 192. 168.101.209
  • Linux Ubuntu 20.04 : 192. 168.101.210
  • Partage SMB sur Windows Server : 192.168.101.209share

Sous Windows Server 2019, le protocole SMB 1.0/CIFS est désactivé par défaut. Pour vérifier ces paramètres et activer/désactiver manuellement le client et le serveur SMB 1.0/CIFS, rendez-vous sur Server Manager > Add Roles and Features > Features.

Nous maintenons SMB 1.0/CIFS désactivé sur notre machine Windows Server 2019. Cela signifie que SMB 3 est utilisé par défaut, avec la possibilité de basculer vers SMB 2 pour assurer la compatibilité avec les clients utilisant les versions (dialectes) SMB 2.

CIFS vs SMB – SMB 1.0/CIFS is disabled by default in Windows Server 2019

Le protocole CIFS est désactivé par défaut dans les versions récentes de Windows, telles que Windows 10, pour des raisons de sécurité, mais vous pouvez l’activer manuellement si nécessaire.

Remarque : En 2017, des attaques mondiales massives par ransomware (WannaCry et NotPetya) ont été menées en exploitant des failles de SMB 1. Ces exploits ont été baptisés EternalBlue, EternalRomance et EternalChampion. Microsoft a publié des correctifs de sécurité pour ses systèmes d’exploitation à partir de Windows XP et Windows Server 2003, bien que ces systèmes d’exploitation ne fussent plus officiellement pris en charge à cette époque. Microsoft a recommandé d’utiliser SMB 2 et SMB 3 (qui prennent en charge l’intégrité avant authentification) plutôt que SMB 1.0/CIFS. Comme mentionné ci-dessus, le nom du serveur SMB pour Linux est Samba ( samba est le nom du paquet). Sous Windows, on utilise un serveur SMB. Nous n’avons donc pas besoin de Samba dans cet exemple, mais plutôt d’un client SMB pour Ubuntu Linux.

Un client SMB pour Linux est inclus dans Linux CIFS Utils ( cifs-utils est le nom du paquet). C’est de là que provient la confusion. La première version de ce client pour Linux a été créée à une époque où SMB 1.0/CIFS était largement utilisé. Le protocole SMB a été mis à jour, les versions 2 et 3 de SMB ont été publiées, mais le nom du client SMB pour Linux reste le même, et le paquet contenant le client SMB s’appelle toujours CIFS Utils. Le paquet cifs-utils ne fait pas partie de samba .

Nous allons nous connecter depuis Linux à l’aide de CIFS Utils à un partage SMB situé sur Windows Server 2019 afin de vérifier si le protocole CIFS est toujours utilisé. Pour installer CIFS Utils, exécutez la commande suivante avec les privilèges root :

sudo apt-get install cifs-utils

Créez un répertoire qui servira de point de montage pour le partage SMB :

mkdir /mnt/share

Connectez-vous au partage de fichiers SMB situé sur un serveur de fichiers Windows distant :

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator

Dans notre exemple, nous utilisons un compte d’administrateur Windows à des fins pédagogiques.

What is SMB file share – connecting to the share from Linux

CIFS ou SMB : lequel est utilisé dans la session en cours pour se connecter au serveur de fichiers ? Vérifiez la version SMB des clients connectés au partage SMB sur Windows Server à l’aide de la commande PowerShell sous Windows Server 2019 :

Get-SmbSession | Select-Object -Property ClientComputerName,ClientUserName,Dialect

Comme le montre la sortie PowerShell, SMB 3.1.1 est utilisé pour notre connexion depuis Ubuntu Linux. SMB 1.0/CIFS n’est pas utilisé lorsque nous nous connectons à un serveur de fichiers configuré sous Windows Server 2019 à l’aide des commandes ` `, `cifs-utils`, ` ` et ` mount.cifs `.

What is SMB file share – how to check the SMB dialect used

Nous pouvons également vérifier la version du protocole SMB dans ` /proc/mounts` à l’aide de la commande ` cat /proc/mounts ` sous Linux. Nous pouvons utiliser la commande suivante pour filtrer uniquement les résultats nécessaires :

cat /proc/mounts | grep cifs

Comme nous le voyons dans la sortie, la version du protocole pour se connecter au partage de fichiers est indiquée comme cifs, mais la version affichée est 3.1.1 (vers=3.1.1), ce qui n’est pas une version de CIFS. C’est un exemple supplémentaire montrant à quel point les termes SMB et CIFS peuvent prêter à confusion.

CIFS vs SMB – checking which SMB version is used for the current connection

En réalité, c’est SMB 3.1.1 qui est utilisé, et non CIFS. Nous pouvons le prouver par une autre méthode en utilisant nmap, un outil gratuit de découverte du réseau destiné à l’analyse et au dépannage.

Pour installer nmap sous Ubuntu, exécutez la commande en tant qu’administrateur :

sudo apt-get install nmap

Pour analyser tous les hôtes en ligne et connectés à notre réseau 192.168.101.0/24 , nous utilisons la commande :

nmap --script smb-protocols 192.168.101.0/24

Nous souhaitons afficher le résultat correspondant à 192.168.101.209, qui est l’adresse IP de notre serveur Windows Server 2019 fonctionnant comme serveur de fichiers. Linux est connecté au partage de fichiers sur ce serveur. Dans la sortie, nous voyons que les dialectes des protocoles SMB pris en charge par notre serveur Windows sont 2.02, 2.10, 3.00, 3.02 et 3.11. Il n’y a pas de SMB 1.0/CIFS, même si le terme CIFS est toujours utilisé dans les fichiers de configuration et les commandes Linux.

CIFS vs SMB – checking which SMB dialects are supported on the server

Nous pouvons forcer l’utilisation de CIFS manuellement en ajoutant le paramètre ` vers=1.0 ` à la commande ` mount ` sous Linux (côté client) afin d’utiliser uniquement le protocole SMB 1.0/CIFS lors de la connexion à un partage de fichiers sur un serveur distant.

mount -t cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=1.0

ou

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=1.0

Le résultat est le suivant : `

` Le serveur a brusquement fermé la connexion. Cela peut se produire si le serveur ne prend pas en charge la version SMB que vous essayez d’utiliser. La version SMB par défaut est récemment passée de SMB1 à SMB2.1 et versions ultérieures .

Ce résultat correspond aux conclusions précédentes de notre étude comparant SMB et CIFS sur les systèmes d’exploitation modernes. Le protocole CIFS n’est pas utilisé, et SMB 1.0/CIFS est désactivé sur notre serveur Windows.

Si nous configurons le système pour qu’il utilise au moins SMB 2.0, nous pouvons alors nous connecter au serveur (rappelons la liste des dialectes SMB pris en charge par notre Windows Server 2019, affichée sur nmap ) :

mount.cifs //192.168.101.209/share /mnt/share -o user=administrator,vers=2.0

Connecting to an SMB share using the SMB2 dialect from Linux

Lorsque vous utilisez l’interface graphique sous Linux ou d’autres systèmes d’exploitation, utilisez smb:// dans la barre d’adresse lorsque vous définissez le protocole réseau à utiliser pour vous connecter à un partage de fichiers sur un serveur distant.

Lorsque vous saisissez l’adresse d’un partage de fichiers SMB, vous devez utiliser :

smb://server-name/share-name

N’utilisez pas :

cifs://server-name/share-name

car le client tentera de se connecter à l’aide du protocole SMB1.0/CIFS, qui peut être désactivé sur un serveur (à supposer que le client prenne en charge la syntaxe cifs:// ).

Conclusion

Le protocole CIFS étant désormais obsolète, SMB est l’un des protocoles utilisés pour se connecter à un stockage partagé sur des serveurs de fichiers et des NAS (l’autre protocole couramment utilisé est NFS). Le stockage partagé étant particulièrement vulnérable à la corruption des données, aux ransomwares et à d’autres menaces pouvant facilement se propager sur un réseau, veillez à sauvergarder les fichiers et dossiers stockés sur des ressources partagées afin d’éviter toute perte de données. L’infection de l’ordinateur d’un seul utilisateur disposant de droits d’écriture sur les fichiers du partage de fichiers peut entraîner une perte de données pour tous les utilisateurs. NAKIVO Backup & Replication est une solution de protection des données qui prend en charge les sauvegardes incrémentielles via SMB et NFS des données stockées sur des serveurs NAS et des serveurs de fichiers Windows/Linux.

Essayez NAKIVO Backup & Replication

Essayez NAKIVO Backup & Replication

Profitez d'un essai gratuit pour découvrir toutes les fonctionnalités de protection des données de la solution. 15 jours gratuits. Aucune restriction en termes de fonctionnalités ou de capacité. Aucune carte bancaire requise.

Les gens qui ont consulté cet article ont également lu