SMB/CIFS

From EIK wiki

Server Message Block, lühidalt SMB (ühe versioonina tuntud ka kui CIFS), on ISO mudeli 5.kihil töötav võrguprotokoll. SMB-d kasutatakse enamjaolt Microsoft Windowsis (kus see enne Active Directory juurutamist oli tuntud kui "Microsoft Windows Network") failide, printerite, jadaportide ja erinevate sidevahendite jagamiseks võrgusõlmede vahel. CIFS kui SMB1 dialekt, on jäänud ajalukku. Selle all mõeldakse SMB-protokolli, mis oli kasutusel Microsoft Windows NT4 operatsioonisüsteemis.[1]

Ajalugu

Esmakordselt mainitud IBM-i poolt 1985, kuid hiljem suuresti Microsofti poolt arendatud.[2] Protokolli loojaks võib nimetada Dr. Barry Feigenbaumi, kelle initsiaalidest sai protokolli esimeseks nimeks BAF. Microsoft nimetas 1996.aastal SMB ümber CIFS (Common Internet File System).[3]

  • SMB 1 (1984)
  • CIFS (1996)
  • SMB 2.0 (2008) Esimene suur uuendus algsesse protokolli.
  • SMB 2.1 (2010)
  • SMB 3.0 (2012) Tuli välja koos Windows 8 ja Windows Server 2012. Tõi kaasa uuendused nagu SMB Direct Protocol (SMB üle RDMA), SMB Multichannel (mitu samaaegset ühendust ühe SMB sessiooni kohta), SMB Transparent Failover.
  • SMB 3.0.2 Windows 8.1 ja Windows Server 2012 R2
  • SMB 3.1.1 Ilmus Windows 10 ja Windows Server 2016 koosseisus. Toetab lisaks AES-128 CCM-ile ka AES-128 GCM krüpteeringut, ning autoriseerimisele eelnevat tervikluse kontrolli, kasutades selleks SHA-512 räsi.[4]


Võimalused

  • Faili ja kirje tasemel lukustamine
  • Failide ja kataloogide muutustest teavitamine
  • Unicode tugi
  • Lisaatribuutide (Extended Attributes) tugi
  • Autentimine nii kasutaja kui share tasemel, domeenide tugi
  • Printimine
  • Võrgu sirvimine

SMB töötab mitmete madalama kihi protokollide peal, nagu TCP/IP (port 445), NetBEUI ja IPX/SPX. Juhul, kui kasutatakse TCP/IP või NetBEUI, on sessioonikihi protokolliks NetBIOS API.[2]

Kui SMB-d kasutada üle TCP/IP, DECnet või NetBEUI, tuleb pöördumiseks kasutada NetBIOS-nimesid. NetBIOS nimed on kuni 15 sümbolit pikad, harilikult kasutatava arvuti nimed. Microsofti toodete puhul peavad need olema suurtähtedega.

Kui NetBIOS nimed saadetakse võrku, lisatakse lühemale nimele tühikuid, et tekiks 15-sümboli pikkune nimi, pluss 16. sümbol, mis määrab nime tüübi. Microsoft nimetab seda NetBIOS järelliiteks.[2]


Turvalisus

SMB kasutab krüpteeringut (AES-128-CCM) alates versioonist 3.0. Versioonile 3.1.1 lisati AES-128-GCM tugi ning võimalus nende kahe vahel valida. Teatud olukordades, nagu näiteks suurte failide üle krüpteeritud SMB seansi kopeerimine, annab AES-128-GCM kuni 2-kordse kiiruse võidu.

Versioon 3.1.1 tõi ka autentimiseelse tervikluse kontrolli võimaluse, mis kaitseb vahemehe ründe eest ühenduse loomise faasis. Kontrolliks kasutatakse SHA-512 räsi. SMB signing on kasutusel kaitsmaks pakettide muutmise ja võltsimise eest ning krüptograafia pealtkuulamise vastu.[5]

SMB1 on rünnatav NSA poolt loodud nuhkvaraga EternalBlue, mis kasutab ära dokumenteeritud haavatavust CVE-2017-0144.[6] Lekkinud EternalBlue-d kasutas omakorda levimiseks krüptoviirus Wannacry. [7]

UNIX ühilduvus

Vast kõige tuntum ja levinum SMB realisatsioon UNIX-süsteemidele on SAMBA. Samba algseks loojaks on Andrew Tridgell, kes lõi selle 1992.aastal isiklikust vajadusest vahetada faile DOS ja UNIX süsteemide vahel. Samba võimaldab failide ja printerite jagamist Microsoft Windows klientidele, ning ühildub Microsoft Windows Server domeeniga nii domeenikontrolleri kui -liikmena. Alates versioonist 4 on toetatud ka Active Directory.[8]

Kataloogi jagamine Unitys.
Kataloogi jagamine Unitys.

Toetatud on enamik Unix, OpenVMS ning UNIX-laadseid süsteeme, nagu Linux, Solaris, AIX, BSD, aga ka Apple macOS Server ja macOS klient (Mac OS X 10.2 ja edasi). Sambat levitatakse GNU General Public License alusel.[4]

Nimi Samba tuleb väidetavalt Linuxi sõnaraamatu otsingust, kasutades tööriista grep[9]

grep -i '^s.*m.*b' /usr/share/dict/words

Samba tekitab valitud UNIX-i kataloogidest (kaasaarvatud alamkataloogid) võrgujao. Microsoft Windowsi kasutajad näevad neid kui tavalisi võrgusolevaid Windowsi katalooge. UNIX-i kasutajad saavad katalooge haakida kui osana failistruktuurist, kasutades käsku smbmount.[10]

smbmount {service} {mount-point} [-o options]

Alternatiivina võib kasutada utiliiti smbclient, mis loob FTP-sarnase kasutajaliidese. Igal kataloogil saavad olla erinevad kasutajaõigused. Jagu nimega "netlogon" (kirjutuskaitstud jagu /etc/samba/netlogo) on kasutajate sisselogimisskriptide jaoks.[4]

Samba seadistused asuvad failis smb.conf (harilikult /etc/smb.conf või /etc/samba/smb.conf). Samuti on võimalik implementeerida group policy-t.[4]

Juuresoleval pildil on näha kataloogi võrku jagamine Ubuntu Linuxis läbi Nautilus failibrauseri sarnaselt Microsoft Windowsile. Üksikasjalikud õpetused Samba seadistamiseks Ubuntus on toodud Ubuntu kogukonna Wiki lehel.

Samba seadistamiseks on loodud ka ridamisi graafilisi tööriistu, nagu GOsa, Smb4K ja Webmin. Webmin-i puhul on tegemist universaalse graafilise seadistusliidesega, kus ka Samba komponent olemas. Täpsemalt nende ja ka teiste tööriistade kohta saab lugeda Samba ametlikult veebilehelt.

SMB-ga seotud tööriistad

DFS (Distributed File System) seob erinevad SMB jaod kasutaja jaoks üheks süsteemiks

jCIFS on Java teek, mis implementeerib SMB protokolli.

Allikad