You are here: TUTWiki>Tietoturva/Tutkielmat>TyoLuettelo?>2008-33

Aleksi Lehti

NFS- ja CIFS-järjestelmien turvapiirteiden esittely ja vertailu

1. Johdanto

Tässä minitutkielmassa tarkastellaan ja vertaillaan tiedostojärjestelmiä NFS (network filesystem) ja CIFS (Common internet filesystem) yleisellä tasolla sekä niiden yleisen turvallisuuden hahmottumista käyttäjän ja ylläpidon kannalta. Tutkielma sivuaa myös SAMBA-tiedostonjakoa, sekä otsikon aihetta eri käyttöjärjestelmien kannalta. Päätelmissä esitetään millaiseen käyttöön näihin protokolliin perustuvat järjestelmät soveltuvat.

2. NFS yleisesittely

NFS on Sun Microsystemsin alunperin kehittämä tiedostoprotokolla tiedostojen jakamiseksi verkon yli. Se kehitettiin Sunin omiin testitarkoituksiin jo vuonna 1984 ja julkaistiin virallisesti vuonna 1989. Tarkoituksena oli antaa käyttäjille tapa päästä käsiksi tiedostoihin verkon yli samalla tavalla, kuin ne olisivat saatavilla paikallisesti. Nykyään NFS on RFC:ssä määritelty vapaa standardi. Alunperin NFS toimi ainoastaan yhteydettömillä UDP-paketeilla, mutta uudemmissa versioissa käytetään yhteydellistä TCP-protokollaa. Uusin versio NFS-protokollasta on versio 4.1 (RFC 5561) vuodelta 2010. Protokollaan on vuosien varrella lisätty useita ominaisuuksia, kuten isojen (yli 4gb) tiedostojen tuki, suorituskyvyn parannuksia, 64 bitin tiedostonimet ja tiedostojen lukitseminen käytön ajaksi eheyden takaamiseksi. NFS on siis seurannut CIFS:n kehitystä samankaltaisilla ominaisuuksilla. [nfs1] [nfs2]

3. CIFS yleisesittely

CIFS-protokolla on tarkoitettu myös erilaisten resurssien jakamiseen verkon yli. Windows-käyttöjärjestelmien tiedostojen, tulostimien ja sarjaporttien jako perustuu tähän protokollaan. CIFS on kehitetty SMB-protokollasta (Server Message Block) Microsoftin toimesta lisäämällä siihen joitakin ominaisuuksia. Nykyään SMB ja CIFS ovatkin lähes synonyymeja. CIFS:n huono puoli on sen vaatima suuri määrä request/response-viestejä, jolloin suorityskyky saattaa heiketä paikallisverkon ulkopuolella, kun verkon viive kasvaa. Määrittelyn mukaan CIFS:n ominaisuuksiin kuuluvat:
File and printer access, File and record locking, Safe caching, read-ahead and write-behind, File change notification, Protocol version negotiation, Extended attributes, Distributed replicated virtual volumes, Server name resolution using DNS, Batched requests, Operates over connection-oriented or connection-less transports, Unicode file names.

Vuonna 2006 Microsoft sisällytti Windows Vistan mukaan CIFS-protokollan version nimeltä SMB2. SMB2 on jatkuvan kehityksen alla ja sen kehitys onkin intensiivisempää kuin esimerkiksi NFS-protokollan. Uusin versio on SMB 2.1, joka on periaatteessa aika pieni revisio, mutta tuo tärkeitä parannuksia suorituskykyyn. SMB 2.1 on sisällytetty Windows 7:aan ja Windows Server 2008 R2:een ja protokollan paranneltu välimuistin käsittely lisää suorituskykyä ilman, että ohjelmiin tarvitsee tehdä muutoksia [smb2.1]. Hyvin SMB/CIFS:n kaltainen on myös Samba, joka on kehitetty reverse-engineering tekniikalla lähes täysin yhteensopivaksi käytettäväksi avoimen lähdekoodin järjestelmissä CIFS:n tapaan.[cifs1] [cifs2]

4. Käytännön sovelluksia

NFS:ää käytetään yleisesti siis unix-puolella levyjaossa. Myös Windowsille ja Windows-serverille on versio NFS:stä, mutta se ei ole niin laajassa käytössä.

CIFS puolestaan on jokaisessa windows-käyttöjärjestelmässä.
Käyttäjä tunnistaa käyttävänsä CIFS:iä kun Windowsin osoiterivillä on \\ ja osoite.

4.1 Esittely kuvin

FileS-1.jpg
Kuva1: Windows-verkonjako käyttää CIFS:ää, joten käyttäjäperusteinen autentikaatio lienee kutakuinkin tuttua.

FileS-2.jpg
Kuva2: sama kansio jakajan(serverin) näkökulmasta ja etäoikeudet (windows xp)

FileS-3.gif
Kuva3: Windows-serverissä on mahdollisuus käyttää myös NFS:ää

FileS-4.gif
Kuva4: NFS-etäoikeuksia windows-lisäosassa

FileS-5.gif
Kuva5: Saatavuuden kannalta on mahdollista käyttää myös molempia. Kuvassa CIFS-pohjaisen tiedostonjaon etäoikeusmäärittely. [al1]

5. Turvallisuudesta ja turvapiirteistä yleisesti

5.1 NFS:n perusturvallisuusominaisuudet

NFS on alkuperältään vanhempi protokolla, eikä itsessään sisällä käyttäjänhallintaa. Versiossa 4 on siirrytty suorasta todentamispohjaisesta autentikoinnista sääntöpohjaiseen. Tämä tarkoittaa sitä, että kone tunnistetaan alkuperän ja nimen perusteella, mutta sen lisäksi on olemassa yksinkertaisia sääntöjä, jotka sallivat/rajoittavat käyttöä. Tyypillisessä NFS-jaossa autentikointi siis suoritetaan tunnistamalla kone client-nimen tai ip-osoitteen perusteella. Myös pääsy ilman tunnistamista on mahdollista. Käyttäjäpohjaisen autentikoinnin puuttuminen aiheuttaa tietoturvariskin, koska ei voida tietää kuka etäkonetta käyttää. Esimerkiksi vain vaihtamalla clientinsä käyttäjänimen joksikin olemassaolevaksi käyttäjäksi ja yhdistämällä oikeasta ip-osoitteesta pääsee käsiksi kaikkiin toisen käyttäjän tiedostoihin etäkoneessa. Tietysti on olemassa mahdollisuus konfiguroida NFS-exports estämään pääsy tietyltä käyttäjältä johonkin tiettyyn tiedostoon, mutta käyttäjämäärän lisääntyessä konfigurointi vaikeutuu ja homma voi ns. karata käsistä. [nfs1]

5.11 Security triple NFS:lle

NFS käyttää käyttäjän tunnistamiseksi RPC:n mukaisia mekanismeja AUTH_NONE, AUTH_SYS, AUTH_DH tai AUTH_KRB4 tai kaikkien näiden käytön mahdollistavaa mekanismia RPCSEC_GSS (versiosta 4 alkaen). Sille syötettäviä parametreista käytetään termiä Security triple. Niillä päätetään minkälaisilla suojausasetuksilla jako tapahtuu. Mahdollisia tapoja on kolme:

Kerberos: Kerberos on verkkoautentikointiprotokolla, joka mahdollistaa salaamattomassa verkossa salatun identetiteettitunnistuksen. NFS v4:ssä on mukana Kerberos v5, joka on vuonna 1993 julkaistu versio Kerberos-protokollasta. Protokolla perustuu tekniikoihin DES, MAC ja MD5 .

Lipkey: Low Infrastucture Public Key toimii siten, että kumpikin osapuoli autentikoi toisensa, eikä avainsertifikaattien vaihtoa verkon yli tarvita. Aluksi lipkey käyttää SPKM-3:a luomaan salatun kanavan käyttäjältä serverille, jolla on jonkin kolmannen osapuolen luotettu sertifikaatti. Käyttäjällä itsellään pitää olla sama kolmannen osapuolen sertifikaatti, jonka avulla tiedot varmennetaan. Sen jälkeen kun käyttäjätiedot on hyväksytty, siirrytään käyttämään normaalia datayhteyttä.

SPKM3 perustuu Diffie-Hellmanin avaimenvaihtoon käyttäjän ja palvelimen välillä. Siinä luodaan PKI-tunnisteilla luodaan salattu kanava vaihtoon.[nfs1]

5.2 CIFS:n perusturvallisuusominaisuudet

SMB/CIFS on sekä käyttäjä- että autentikointiperusteinen protokolla. Käyttäjärajauksen lisäksi voidaan siis asettaa yhteyskohtaisia rajoitteita (interface, ip-osoite), joista käyttäjien on mahdollista käyttää palvelimen jakamia resursseja. Yleensä etäkäyttäjä siis joutuu jossain vaiheessa todentamaan itsensä salasanan avulla. Kehittynyt käyttäjänhallinta sisältää myös ominaisuuksia kuten tunnuksien voimassaoloaikoja, salasanojen vanhenemista, toimikortteja, käyttäjätietojen lähetystä salattuna, käyttäjäryhmiä ja muita käyttäjäkohtaisia sääntöjä. Käyttäjistä ja heidän oikeuksistaan on mahdollista pitää listaa toimialueen avulla. CIFS mahdollistaa myös salasanojen kryptaamisen verkkoliikenteessä.

Unix-pohjaisissa järjestelmissä voidaan käyttää CIFS/Samba:n käyttäjärajauksen lisäksi järjestelmän lokaalia oikeusrajausta (chmod). Näiden päällekkäinen toiminta mahdollistaa laajat säätömahdollisuudet tarpeen mukaan. CIFS:ssä käyttäjälle voi määrittää tarkoin, mitä etäkoneessa voi tehdä ja mitä ei. Joten jos käyttäjiä on enemmän kuin muutama, verkko on hallitsematon ja oikeuksia halutaan rajata niin käyttäjäperusteinen autentikointi on oikea keino.

Samba-järjestelmässä tyypillisen hyvä esimerkki käyttäjän todentamisen mahdollisuuksista löytyy tiedostosta smb.conf seuraavilla riveillä (seltyksineen):
security = SHARE/SERVER/USER ; serverin jakotyyppi
guest ok = no/yes ; sallitaanko anonyymi päähakemiston listaus
interfaces = eth0 ; mille verkkokortille yhteys rajataan

sekä tyypillinen jaon määrittely

[jako] ; jaon nimi
comment = jaettu kansio ; kommentti
path = /jako ; tiedostopolku<br / public = no/yes ; onko yleinen (anonyymi sallittu)
writable = no/yes ; voiko kirjoittaa
valid users = user1 user2 @ryhma1 ;sallitut käyttäjät ja ryhmät
create mode = 0770 ; missä chmoodissa uusi tiedosto luodaan
directory mode = 0770 ; missä chmoodissa uusi hakemisto luodaan

Tässä sallitaan etäkäyttöön kansio nimeltä jako ja määritellään, miten sitä pystyy etänä käyttämään. [cifs1] [samba1]

5.22 Autentikointimekanismit

CIFS Sisältää neljä erilaista mahdollista autentikointitapaa, jolla
kullakin on omat heikkoutensa ja vahvuutensa koska mahdollisten hyökkäyksien
laatu voi vaihdella protokollakohtaisesti.

1. Jakotason Suojaus
Jakotason suojauksessa ei ole käyttäjäkohtaisia salasanoja. Jokainen kansio on suojattu kansiokohtaisella salasanalla, joka lähetetään verkon yli salaamattomana on yleisesti käyttäjien tiedossa. Tämän kaltainen suojaus ei ole kovin vahva.

2. Selväkielinen salasana-autentikaatio
Selväkielinen salasana-autentikaatio on käyttäjäkohtainen, mutta autentikointitiedot lähetetään selväkielisenä verkon yli, joten ne voidaan saada helposti selville haistelemalla verkkoliikennettä. Tämän kaltaista suojausta ei tulisi käyttää suurissa verkoissa, joissa verkkoliikenne kulkee useiden linkkien kautta, vaan ainoastaan eristetyissä verkoissa, jos autentikaatiotapaa on pakko käyttää.

3. LANMAN 2.1 Haaste-vaste
Lanman on alunperin windows NT:ssä käytetty hasheihin perustuva autentikaatioprotokolla. Salasanaa ei lähetetä verkon yli enää selväkielisenä, mutta sillä on ainakin seuraavat heikkoudet, jolla hyökkääjä voi saada käyttäjän salasanan selville: Tiedetyn selvätekstin hyökkäys, pieni salausavaimen pituus, kohdennettu selvätekstihyökkäys, sanalistahyökkäys, heikot salasanat. Salasana on todella helppo murtaa esim. L0phtcrack-ohjelmalla. Tälläkin autentikointitavalla on siis sudenkuoppansa, ja sitäkin tulisi käyttää vain pienehköissä verkoissa tai jos syntyy yhteensopivuusongelmia jonkun muun autentikaatiotavan kanssa.

4. NT LM 0.12 Challenge/Response
NT LM on paras suojaus, joka alkuperäisessä CIFS:ssä on mahdollista. Se luo avainmateriaalin MD4-algoritmilla salasanasta. Tällöin on mahdollista saada 56 bitin avain. Aika on ajanut ohi MD4-tekniikasta ja törmäyksiä on mahdollista löytää. Vahvuuteen voi jonkin verran vaikuttaa valitsemalla mahdollisimman vahvan ja pitkän salasanan, jolloin salausavainkin olisi mahdollisimman satunnainen. [cifs1]

6. Vertailua turvallisuudessa

NFS(v4):

Vahvuudet:
- Yksinkertainen
- helppokäyttöinen

Heikkoudet:
- Todentamisperusteinen(+säännöt ja virittelyt)
- Heikko skaalautuvuus
- Vaikea hallinta jos useampi käyttäjä
- Aika turvaton isossa tai hallitsemattomassa järjestelmässä

CIFS:

Vahvuudet:
- Käyttäjäperusteinen autentikointi
- Käyttäjien alkuperän todentaminen
- Kehittynyt käyttäjänhallinta
- Tehokkuus
- Skaalautuvuus suurelle käyttäjämäärälle
- Tuettu (Samban vuoksi myös avoimen koodin järjestelmissä)
- Toimikorttimahdollisuus
- Turvallisempi

Heikkoudet:
- ei IETF standardi
- SMB varsinaisesti suljettu protokolla (Microsoft)

7. Päätelmiä

NFS on parempi helppokäyttöisyytensä ja yksinkertaisuutensa vuoksi täysin hallitussa verkossa, mutta siitä puuttuu osa vitaaleista tietoturvaominaisuuksista. Mikäli tarvetta laajaan käyttäjänhallintaan tai etäoikeuksien rajaamiseen ei ole, niin NFS on toimiva vaihtoehto. NFS on mahdollinen ratkaisu sen tyyppiseen verkkoon, jossa jokin yleinen resurssi pitää jakaa helposti kaikkien saataville, mutta käyttäjien ei tarvitse muokata sitä. Unix-verkko koneelta koneelle muodostuu helpoiten NFS:n avulla. Toki jos kaikki verkon koneet ovat windows-pohjaisia niin CIFS (Windows-verkonjako on valmiiksi asennettuna) loogisempi valinta. CIFS on parempi ratkaisu hallitsemattomissa verkoissa, koska se sisältää kehittyneemmän käyttäjänimiperusteisen autentikoinnin. Listaa käyttäjistä ja heidän oikeuksistaan voidaan ylläpitää isollekin verkolle keskitetysti toimialueen (NT-domain) avulla. Käytännössä tämä tarkoittaa jokaiselle käyttäjälle omaa käyttäjänimeä ja salasanaa sekä jaottelua käyttäjäryhmiin sekä pääsynrajaukseen. CIFS:iä voidaan tosin käyttää myös ilman käyttäjähallintaa (anonyymisti eli kaikki käyttäjät ja salasanat hyväksytään) mikäli niin asetetaan.

Lähdeluettelo

[nfs1] http://www.ietf.org/rfc/rfc3530.txt | NFS v4 specification | 25.9.2008

[nfs2] http://www.faqs.org/rfcs/rfc1094.html | Original NFS specification | 27.9.2008

[cifs1] http://msdn.microsoft.com/en-us/library/aa365233(vs.85).aspx | Microsoft - CIFS protocol overview | 25.9.2008

[cifs2] http://tools.ietf.org/html/draft-heizer-cifs-v1-spec-00 | CIFS 1.0 Specification| 27.9.2008
[samba1] http://us1.samba.org/samba/docs/man/manpages-3/smb.conf.5.html | SMB.CONF example www.samba.org | 27.9.2008

[al1] Kuvat: Aleksi Lehti 27.9.2008

[smb2.1] http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=d8541618-5c63-4c4d-a0fd-d942cd3d2ec6 | Implementing an End-User Data Centralization Solution | 14.11.2009

Print version |  PDF  | History: r5 < r4 < r3 < r2 | 
Topic revision: r5 - 31 Oct 2012 - 11:12:17 - JukkaKoskinen
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback