Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   





Clic aici
PC Magazine





Soluții - PC Magazine Romania, August 2004

INTERNET PRO - Cerberul meu

Alexandru Ioan Lazăr

Identitatea este o mare problemă pe Internet (vezi, am și ajuns la un consens?). Uite un exemplu: în fiecare seară vin de la școală și prima mea oprire este calculatorul. Îmi verific mesajele, și - normal - serverul se interesează cine sunt. Acesta e cazul cel mai simplu: normal că trebuie să știe cine sunt, de vreme ce vreau să-mi verific mesajele (de unde să știe serverul care sunt mesajele mele?).

Normal că asta implică și un pic de bun-simț din partea mea. Ca orice utilizator de bună-credința (yeah, right…) nu sunt interesat decât de propriile mele mesaje, nu mă interesează mail-urile colegului de bancă, și chiar așa, nu îi știu parola și nici nu vreau s-o aflu. ☺

În lumea ,,normală", identitatea nu pune probleme securității decât în cazuri extreme. Asta pentru că numele meu este, inevitabil, asociat chipului meu. Cine m-a văzut o dată, va ști că sunt… eu. Normal, dacă aș fi dat în urmărire generală și aș vrea să mă ascund, aș putea să îmi schimb înfățișarea, dar aș putea fi, inevitabil, recunoscut (profilul nasului, strabismul…). Lucrurile sunt cam pe dos atunci când vorbim de Internet. În general, nu mă pot prezenta unui om cu IP-ul (,,bună ziua, 197.156.122.63 mă numesc, dumneavoastră"?) - dar asta e cam singura metodă prin care calculatoarele se pot recunoaște pe Internet: IP-ul și adresa MAC a plăcii Ethernet.

,,Nu pot… la ora aia mă dedublez"

Înainte să-ți povestesc despre Kerberos, vreau să-ți explic un pic problema identității. Când îți verifici căsuța de mail, introduci un nume de utilizator și o parolă. Atunci declari identitatea ta ca utilizator: ,,Bună, puiule, std[@cwazy.co.uk] mă numesc, uite parola, mă lași să intru?". Eu pot să-mi verific mail-ul de pe orice calculator legat la Internet: nu calculatorul care intră e problema, pentru că nu el vede e-mail-ul, ci eu, utilizatorul; eu pot fi [email protected], dar la fel de bine pot fi și altcineva.

Pentru securitatea rețelelor, situația este mai complicată. Eu pot, desigur, să falsific identitatea unui utilizator (să spun că sunt "root" când, de fapt, nu sunt). Lucrul acesta devine însă din ce în ce mai greu. Parole sigure și mascate prin shadow înseamnă o securitatea aproape imposibil de compromis. Singura metodă (care trebuie însă luată în seamă!) este interceptarea pachetelor care conțin numele de utilizator și parola.

Dacă ai citit articolele din serialul tocmai terminat îți amintești, probabil, de o situație în care perechea username-password este inutilă: atunci când autentificarea se face identificând nu utilizatorul, ci calculatorul. Mda, imitarea IP. Atunci, privilegiul de de utilizator al unei mașini nu este al meu, ca persoană, ci al mașinii în care cealaltă are încredere. Oricine are acces la acea mașină este utilizator al celeilalte. Nu mai are nici un sens să falsific identitatea utilizatorului (care utilizator, în fond?) - eu trebuie să falsific identitatea mașinii.

Atunci când între două mașini există o relație de încredere, cum se pot identifica ele una pe alta dacă nu prin IP? Dar și IP-ul poate fi falsificat. Ce securitate mai e asta? Atunci e nevoie de încă ceva… eventual criptat, ca să fie greu de spart.

Biletele la control…

Tocmai pe asta se bazează Kerberos. El este, de fapt, un sistem de autentificare. Numai că este un sistem mai "hoț": identificarea se face nu numai pe bază de nume de utilizator și parolă, ci și pe un ansamblu de chei și bilete (tickets) numite credentials .

Kerberos este implementat ca un sistem de servere: unul se ocupă cu alocarea cheilor (servere Kerberos), iar celălat cu alocarea "biletelor" (server ticket-granting). Biletele sunt criptate, folosind un algoritm DES (așa că sunt sigure… cel puțin pentru următoarele trei ere geografice ☺) pentru chei cunoscute numai de client și de server.

Un bilet este, în esență, un mesaj (care include și cheia alocată clientului la autentificare). Folosind mesajul acesta, un client poate folosi un serviciu furnizat de server - dar într-un mod absolut sigur. Sunt destui care pot falsifica un IP, dar o cheie AES-256 CTS, de exemplu, este ceva mai greu de falsificat. De fapt, e practic imposibil, timpul necesar e prea mare.

Principiul este, în mare, următorul: utilizatorul introduce numele de utilizator și parola. I se alocă un bilet inițial - pe care îl poate folosi ca să obțină bilete pentru alte servicii. După care, folosind aceste ultime bilete, el poate folosi serviciile care le urmăresc până la expirararea biletelor, când va trebui din nou să fie autentificat prin procesul de login. Procesul este perfect transparent pentru utilizator - singurul lucru pe care nu îl cunoaște exact este timpul de expirare al biletelor.

Toate aceste credentials sunt stocate în așa-numitul credentials-cache de pe hard-disk, într-un fișier. Locația acestui fișier poate fi specificată în fișierele de configurare Kerberos - și ar fi foarte bine să o setezi….

Evident, marele avantaj în folosirea Kerberos este că, de vreme ce negociază comunicațiile prin pachete autentificate și (opțional) criptate, securitatea nu depinde de firewall (pachetele sunt oricum filtrate, pentru că sunt autentificate și criptate: ce nu corespunde cu biletul e respins).

Un cerber îmblânzit

Teoretic, Kerberos este perfect sigur. Asta e teoria. În acest moment, există mai multe metode de a zădărnici această protecție - majoritatea destul de complexe (în fond, Kerberos este dezvoltat de MIT) dar eficiente.

Prima (și cea mai întâlnită situație) este aceea în care nu ai setat locația credentials-cache-ului, tocmai ți-ai bătut un cui în talpă. Kerberos merită folosit, de exemplu, pe servere de fișiere. Problema este că, dacă nu ai specificat explicit altceva, locația cache-ului este în /tmp/<UID> (sub Linux, cel puțin), unde <UID> este UID-ul utilizatorului căruia îi aparține credential-ul. Dacă mai mulți utilizatori sunt logați simultan și pot citi aceste fișiere, ei tocmai au făcut rost de credential-urile de care aveau nevoie pentru a se da drept altcineva. Așa că asigură-te că aceste credential-uri sunt stocate departe de ochii utilizatorilor prea curioși.

Mai este o problemă. Pentru asta pot să garantez, pentru că am încercat-o (e drept, pe o versiune veche, pe Linux Fedora Core I, distribuția pe care o folosesc, nu am încercat încă). Dacă durata de expirare a biletului este foarte mare (de ordinul orelor), atunci cand un client părăsește sistemul prin logout, biletele, cu credentials cu tot, rămân acolo. Atunci un atacator care are parola și numele de utilizator al acelui client poate să treacă peste bariera impusă de Kerberos asumându-și adresa clientului. Un fel de imitare IP mai avansată.

Cerberi de închiriat

Pachetul Kerberos este dezvoltat de MIT (inițial a fost realizat pentru utilizare in-house, în condițiile proiectulu Athena), și poate fi obținut de pe site-ul sus-numite instituții: http://web.mit.edu/kerberos/dist/index.html . Pachetul Kerberos este disponibil pentru sistemele UNIX, și probabil că îl vei găsi chiar cu distribuția pe care o folsești (poate nu în cazul tuturor, dar pot garanta pentru Linux Fedora Core și pentru Slackware 8.1 și 9.x). Personal sunt fan declarat al Kerberos, pentru că, dacă îl configurezi corect, pachetul îți va asigura o securitate excelentă, și îți recomand să-l folosești mai ales dacă ai de administrat o rețea mare, unde acțiunile de IP-spoofing sunt totuși destul de greu de detectat. Este disponibil pentru mai multe platforme - UNIX, Win32, Mac, Cygnus.

Până data viitoare, eu îți urez mult noroc, și, ca să citez un clasic în viață, "stay with the law". Aștept mesajele tale: [email protected].


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2004 Agora Media.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

www.agora.ro

www.agora.ro

www.agora.ro