Server Message Block
Pour les articles homonymes, voir SMB.
| Fonction | Partage de ressources |
|---|---|
| Sigle | SMB |
| Port |
445 : SMB avec Microsoft Directory Services (DNS)[1] 139 : SMB avec NBT (NetBIOS sur TCP/IP)[2] |
Le protocole SMB (Server Message Block[3]) est un protocole permettant le partage de ressources (fichiers et imprimantes) sur des reseaux locaux avec des PC sous Windows.
Dans l'ancien Windows NT 4, il etait appele 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].
Creation
[modifier | modifier le code]SMB a ete developpe en 1983 par Barry A. Feigenbaum chez IBM, pour partager l'acces aux fichiers et aux imprimantes sur un reseau executant IBM PC DOS d'IBM.
En 1987, Microsoft et 3Com ont implemente SMB sous le nom de LAN Manager pour OS/2.
Par la suite il a ete popularise par Microsoft Windows qui l'integrait comme systeme par defaut de partage de fichiers sous Windows. En 1996, dans une operation marketing visant a 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'arrivee de Windows Vista puis de Windows 7, Microsoft a mis au point une version 2 du protocole plus rapide. Le protocole est de nouveau nomme SMB (SMB 2).
En 2012, avec Windows 8 et Windows Server 2012, Microsoft propose la version 3[8] de SMB. Elle apporte des ameliorations 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 a la version 2, notamment avec les centres de traitement de donnees virtuels.
En , avec l'apparition de Windows 10 (1903) et Windows Server 2019, Microsoft decide de ne plus activer la fonctionnalite SMB1/CIFS par defaut comme pour les versions precedentes de Windows. Il demeure tout de meme possible de l'activer pour des questions de retrocompatibilite avec d'anciennes versions, malgre l'important risque de securite (voir le dernier chapitre "securite" de cet article).
Architecture client-serveur
[modifier | modifier le code]SMB fonctionne via une structure de client/serveur, le client va envoyer des requetes specifiques et le serveur de fichiers va y repondre. Le protocole est optimise pour une utilisation dans un reseau local, mais il peut aussi etre utilise sur Internet.
Partage de ressources diverses
[modifier | modifier le code]Le serveur SMB permet de donner l'acces aux clients du reseau a des systemes de fichiers, mais aussi a d'autres ressources comme des imprimantes. Le client peut avoir ses propres disques qui ne seront pas partages et peut acceder en meme temps aux disques et imprimantes partages par le serveur. Les ressources partagees sont accessibles a partir d'une adresse utilisant la convention UNC de type :
\\serveur\partage\chemin\nom_fichier
La couche reseau utilisee par CIFS : TCP/IP ou NetBEUI
[modifier | modifier le code]SMB a ete a l'origine concu pour tourner par-dessus une des implementations de NetBEUI nomme aussi NBF.
Des evolutions du protocole ont ete apportees, car il n'etait pas routable (interconnexion d'un reseau avec un autre). Il a ete encapsule dans des trames TCP/IP depuis Windows 2000.
Charge du reseau
[modifier | modifier le code]Historiquement le protocole SMB se base sur NetBIOS, qui est connu pour generer du broadcast pour la resolution de nom a travers le protocole NBNS et genere donc de la consommation de bande passante inutile.
Pour pallier ce probleme il est possible d'installer un serveur WINS, ce qui est la pratique recommandee si NetBIOS n'a pas ete desactive. De plus, il est de plus en plus courant de desactiver completement NetBIOS car celui-ci n'est plus necessaire s'il n'y a pas d'application ou de serveur historique (anterieur a Windows 2000)[10].
Base de registre (service LanManWorkstation et autres)
[modifier | modifier le code]Dans la base de registre (notamment sous Windows 7), le parametrage de base de SMB est dans l'arborescence HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/LanManWorkstation. Comme pour beaucoup d'autres elements de la base de registre, les noms d'origine des fonctionnalites ont ete conserves dans la base de registre, alors que Microsoft a change le nom de la fonctionnalite.
En plus de ces parametres de base, il y a de nombreux autres parametres concernant SMB :
- Le parametrage qui a le plus d'impact sur les performances reseau[ref. necessaire] est dans l'arborescence HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Browser
- Le parametrage ayant le plus d'impact sur la securite[ref. necessaire] est dans HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/LanManServer.
Samba dans l'open source
[modifier | modifier le code]Le protocole SMB est disponible sur la plupart des systemes d'exploitation, notamment Linux/Unix, grace a son implementation libre Samba. La premiere version stable et publique de Samba est sortie en 1997[11].
Securite
[modifier | modifier le code]Le protocole SMBv1 utilisait l'ancien protocole de communication Microsoft NTtrans2 en cas de message trop long. Une vulnerabilite nommee 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 securite a ete corrigee a la suite d'une mise a jour diffusee le (MS17-010).
SMBv3 a egalement ete la source de la CVE-2020-0796 (wormable, donc permettant une transmission laterale similaire a EternalBlue). Cette faille a ete patchee par Microsoft quelques jours plus tard.
References
[modifier | modifier le code]- | (en) << Port Authority Database : port 445 >>, Gibson Research Corporation (en) (consulte le )
- | "Hebergement direct de SMB sur TCP/IP" sur support.microsoft.com
- | Specification du protocole sur MSDN
- | Deuxieme generation 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 a 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 (consulte le ).
- | << WannaCrypt : une infection << jugulee >>, le point sur la situation >>, NextImpact, (lire en ligne, consulte le )
Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]- Microsoft : Partage administratif : IPC$, PRINT$, FAX$
- Open source : Samba
- Network File System (NFS)
- NTLMSSP
Liens externes
[modifier | modifier le code]- Site officiel de Samba
- Description du protocole SMB (Anglais)
- jCIFS le java CIFS, la bibliotheque logicielle de Samba
- (en) La page de Microsoft concernant CIFS
- (en) JLAN Implementation CIFS issue d'Alfresco
| Officiel | |
|---|---|
| Non-officiel | |