Server Message Block
Le protocole SMB (Server Message Block[3]) est un protocole permettant le partage de ressources (fichiers et imprimantes) sur des réseaux locaux avec des PC sous Windows.
Fonction | Partage de ressources |
---|---|
Sigle | SMB |
Port |
445 : SMB avec Microsoft Directory Services (DNS)[1] 139 : SMB avec NBT (NetBIOS sur TCP/IP)[2] |
Dans l'ancien Windows NT 4, il était appelé CIFS (Common Internet File System). La version 2 de SMB est apparue dans Vista, Windows 7 et Windows 8[4]. Actuellement SMB est en version 3.1.1, introduite dans Windows 10 et Windows Server 2016[5].
Chez Microsoft, de LAN Manager à CIFS
modifierCréé en 1985 par IBM, ce protocole s'est d'abord appelé LAN Manager sous OS/2, puis il a été popularisé par Microsoft Windows qui l'intégrait comme système par défaut de partage de fichiers sous Windows. En 1996, dans une opération marketing visant à contrer l'annonce de WebNFS par Sun Microsystems, Microsoft renomme SMB en CIFS (Common Internet File System)[6],[7] et ajoute plusieurs fonctions comme le support des raccourcis et de fichiers de plus grande taille.
En 2006, avec l'arrivée de Windows Vista puis de Windows 7, Microsoft a mis au point une version 2 du protocole plus rapide. Le protocole est de nouveau nommé SMB (SMB 2).
En 2012, avec Windows 8 et Windows Server 2012, Microsoft propose la version 3[8] de SMB. Elle apporte des améliorations significatives, comme le SMB Direct Protocol (SMB sur RDMA) et le SMB Multichannel[9] (plusieurs connexions par session SMB), ainsi qu'un gain de performances par rapport à la version 2, notamment avec les centres de traitement de données virtuels.
En , avec l'apparition de Windows 10 (1903) et Windows Server 2019, Microsoft décide de ne plus activer la fonctionnalité SMB1/CIFS par défaut comme pour les versions précédentes de Windows. Il demeure tout de même possible de l'activer pour des questions de rétrocompatibilité avec d'anciennes versions, malgré l'important risque de sécurité (voir le dernier chapitre "sécurité" de cet article).
Architecture client-serveur
modifierSMB fonctionne via une structure de client/serveur, le client va envoyer des requêtes spécifiques et le serveur de fichiers va y répondre. Le protocole est optimisé pour une utilisation dans un réseau local, mais il peut aussi être utilisé sur Internet.
Partage de ressources diverses
modifierLe serveur SMB permet de donner l’accès aux clients du réseau à des systèmes de fichiers, mais aussi à d’autres ressources comme des imprimantes. Le client peut avoir ses propres disques qui ne seront pas partagés et peut accéder en même temps aux disques et imprimantes partagés par le serveur. Les ressources partagées sont accessibles à partir d'une adresse utilisant la convention UNC de type :
\\serveur\partage\chemin\nom_fichier
La couche réseau utilisée par CIFS : TCP/IP ou NetBEUI
modifierSMB a été à l’origine conçu pour tourner par-dessus une des implémentations de NetBEUI nommé aussi NBF.
Des évolutions du protocole ont été apportées, car il n'était pas routable (interconnexion d'un réseau avec un autre). Il a été encapsulé dans des trames TCP/IP depuis Windows 2000.
Charge du réseau
modifierHistoriquement le protocole SMB se base sur NetBIOS, qui est connu pour générer du broadcast pour la résolution de nom à travers le protocole NBNS et génère donc de la consommation de bande passante inutile.
Pour pallier ce problème il est possible d'installer un serveur WINS, ce qui est la pratique recommandée si NetBIOS n'a pas été désactivé. De plus, il est de plus en plus courant de désactiver complètement NetBIOS car celui-ci n'est plus nécessaire s'il n'y a pas d'application ou de serveur historique (antérieur à Windows 2000)[10].
Base de registre (service LanManWorkstation et autres)
modifierDans la base de registre (notamment sous Windows 7), le paramétrage de base de SMB est dans l'arborescence HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/LanManWorkstation. Comme pour beaucoup d'autres éléments de la base de registre, les noms d'origine des fonctionnalités ont été conservés dans la base de registre, alors que Microsoft a changé le nom de la fonctionnalité.
En plus de ces paramètres de base, il y a de nombreux autres paramètres concernant SMB :
- Le paramétrage qui a le plus d'impact sur les performances réseau[réf. nécessaire] est dans l'arborescence HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Browser
- Le paramétrage ayant le plus d'impact sur la sécurité[réf. nécessaire] est dans HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/LanManServer.
Samba dans l'open source
modifierLe protocole SMB est disponible sur la plupart des systèmes d'exploitation, notamment Linux/Unix, grâce à son implémentation libre Samba. La première version stable et publique de Samba est sortie en 1997[11].
Sécurité
modifierLe protocole SMBv1 utilisait l’ancien protocole de communication Microsoft NTtrans2 en cas de message trop long. Une vulnérabilité nommée EternalBlue exploitait un bufferoverflow dans NTtrans ce qui permit la diffusion en de deux des plus grands ransomware de l'histoire d'internet, WannaCry[12]. Cette faille de sécurité a été corrigée à la suite d'une mise à jour diffusée le (MS17-010).
SMBv3 a également été la source de la CVE-2020–0796 (wormable, donc permettant une transmission latérale similaire à EternalBlue). Cette faille a été patchée par Microsoft quelques jours plus tard.
Références
modifier- (en) « Port Authority Database : port 445 », Gibson Research Corporation (en) (consulté le )
- "Hébergement direct de SMB sur TCP/IP" sur support.microsoft.com
- Spécification du protocole sur MSDN
- Deuxième génération du protocole
- Jose Barreto, « What’s new in SMB 3.1.1 in the Windows Server 2016 Technical Preview 2 », Microsoft TechNet Server & Management Blogs,
- Les mythes à propos de SAMBA
- [1]
- (en) « Windows Server Blog: SMB 2.2 is now SMB 3.0 », Microsoft
- (en) « SMB Direct Protocol et SMB Multichannel », Microsoft
- https://blogs.msmvps.com/acefekay/2013/03/02/do-i-need-netbios/ "Do I need NetBIOS"
- « Release Notes Archive », sur samba.org (consulté le ).
- [email protected], « WannaCrypt : une infection « jugulée », le point sur la situation », NextImpact, (lire en ligne, consulté le )
Voir aussi
modifierArticles connexes
modifier- Microsoft : Partage administratif : IPC$, PRINT$, FAX$
- Open source : Samba
- Network File System (NFS)
- NTLMSSP
Liens externes
modifier- Site officiel de Samba
- Description du protocole SMB (Anglais)
- jCIFS le java CIFS, la bibliothèque logicielle de Samba
- (en) La page de Microsoft concernant CIFS
- (en) JLAN Implémentation CIFS issue d'Alfresco