securitatea conturilor securitatea sistemului de fişiere...

18
Securitatea sistemelor şi a aplicaţiilor Cursul VII. Securitatea SO. Unix Marius Joldoş U.T. Cluj-Napoca SSA cursul 7 - M. Joldoş - T.U. Cluj 2 Ce este unix? SO multiutilizator cu acces din reţea Are o istorie de peste 30 de ani Dezvoltarea aleatoare a dus la multe lipsuri în securitate Există multe versiuni comerciale şi versiuni gratuite SSA cursul 7 - M. Joldoş - T.U. Cluj 3 Părţi care operează în peisajul UNix AIX - IBM Corp. HP-UX - Hewlett Packard Co. IRIX - Silicon Graphics Inc. (SGI) SCO - Santa Cruz Operation, Inc Solaris - Sun Microsystems (System V) SunOS 4.x - Sun Microsystems (BSD) Tru64 - Was DEC-Digital Unix, now Compaq Tru64. Ultrix - DEC’s version of Unix before Digital Unix Linux (câteva distribuţii – RedHat, Suse, Ubuntu, Mandriva, …) BSDs (FreeBSD/BSDI, OpenBSD,NetBSD) SSA cursul 7 - M. Joldoş - T.U. Cluj 4 Unix. Caracteristici de securitate Securitatea conturilor – Cine poate accesa maşina? – Ce nivel de acces poate avea? Securitatea sistemului de fişiere – Dacă ai acces, ce poţi face cu drepturile pe care le ai? – Include accesul la periferice Securitatea reţelei – În care gazde există încredere şi în care nu

Upload: others

Post on 15-Sep-2019

15 views

Category:

Documents


0 download

TRANSCRIPT

Securitatea sistemelor şi a aplicaţiilor

Cursul VII. Securitatea SO. Unix

Marius JoldoşU.T. Cluj-Napoca

SSA cursul 7 - M. Joldoş - T.U. Cluj 2

Ce este unix?

♦SO multiutilizator cu acces din reţea

♦Are o istorie de peste 30 de ani♦Dezvoltarea aleatoare a dus la

multe lipsuri în securitate♦Există multe versiuni comerciale şi

versiuni gratuite

SSA cursul 7 - M. Joldoş - T.U. Cluj 3

Părţi care operează în peisajul UNix

♦ AIX - IBM Corp.♦ HP-UX - Hewlett Packard Co. ♦ IRIX - Silicon Graphics Inc. (SGI)♦ SCO - Santa Cruz Operation, Inc♦ Solaris - Sun Microsystems (System V)♦ SunOS 4.x - Sun Microsystems (BSD)♦ Tru64 - Was DEC-Digital Unix, now Compaq Tru64.♦ Ultrix - DEC’s version of Unix before Digital Unix♦ Linux (câteva distribuţii – RedHat, Suse, Ubuntu,

Mandriva, …)♦ BSDs (FreeBSD/BSDI, OpenBSD,NetBSD)

SSA cursul 7 - M. Joldoş - T.U. Cluj 4

Unix. Caracteristici de securitate

♦ Securitatea conturilor– Cine poate accesa maşina?– Ce nivel de acces poate avea?

♦ Securitatea sistemului de fişiere– Dacă ai acces, ce poţi face cu drepturile pe

care le ai? – Include accesul la periferice

♦ Securitatea reţelei– În care gazde există încredere şi în care nu

SSA cursul 7 - M. Joldoş - T.U. Cluj 5

Unix. Securitatea conturilor

♦Conturile sunt folosite pentru a controla accesul la resursele maşinii– CPU (timpul procesor)– Fişiere– Echipamente periferice

♦Cea mai uzuală metodă implică nume de utilizator (identificator) şi parolă (autentificator)

SSA cursul 7 - M. Joldoş - T.U. Cluj 6

Unix. Conturile

♦ Detaliile stocate în /etc/passwd (/etc/passwd + /etc/shadow)

♦ Format– Nume utilizator– Parola cifrată– ID utilizator (UID)– Grup primar ID (GID)– Nume real sau comentariu– Director home– login shell

tgray:rU98fsgHj5m/8:20001:200:Tony Gray:/u/sac/tgray:/bin/csh

SSA cursul 7 - M. Joldoş - T.U. Cluj 7

Parolele Unix♦ Folosesc o versiune modificată a DES

– Cheie de 56 biţi (d.e., 8 caractere ASCII-7)– Criptează bloc de 64 biţi (8 ASCII '\0')– Rezultatul se re-cifrează cu parola, în total de

25 ori– Cei 64 biţi finali sunt despachetaţi în 11

caractere imprimabile– În proces se adaugă 12 biţi suplimentari numiţi

sare– Sarea se stochează ca primele două caractere

din parolă♦ Nu se descifrează parolele stocate

– Parola introdusă este cifrată şi comparată cu intrarea din fişierul de parole

SSA cursul 7 - M. Joldoş - T.U. Cluj 8

De ce este nevoie de "sare"?

♦ "Sarea" previne ca parolele duplicate să fie vizibile în fişierul de parole– Deoarece este probabil ca utilizatori diferiţi să aibă

"săruri" diferite♦ Creşte mărimea efectivă a parolelor

– “O sare pe 12 biţi face spargerea unei parole de 4096 ori mai dificilă”

♦ Previne folosirea implementărilor în hardware ale rutinei de cifrare– Cu tehnologia curentă, implementările software

sunt limitate relativ la numărul de încercări pe care le pot face în unitatea de timp

IDIDIDID utilizatorutilizatorutilizatorutilizatorsasasasarererere ParolParolParolParolă cifratcifratcifratcifrată

SSA cursul 7 - M. Joldoş - T.U. Cluj 9

Setarea parolei

25 c25 c25 c25 cicluri aleicluri aleicluri aleicluri ale DESDESDESDES

CHEIECHEIECHEIECHEIE: pa: pa: pa: parolarolarolarola

{{{{saresaresaresare,0},0},0},0}

UIDUIDUIDUID

SSA cursul 7 - M. Joldoş - T.U. Cluj 10

Verificarea parolei

25 c25 c25 c25 cicluri deicluri deicluri deicluri de DESDESDESDES

CHEIECHEIECHEIECHEIE: pa: pa: pa: parolarolarolarola

IDIDIDID

utilizatorutilizatorutilizatorutilizator saresaresaresare Parola cifratParola cifratParola cifratParola cifrată

UIDUIDUIDUID

parolparolparolparolă

comparcomparcomparcompară

SSA cursul 7 - M. Joldoş - T.U. Cluj 11

Securitatea sistemului de fişiere

♦ Controlul accesului la fişiere şi directoare se bazează pe trei straturi de privilegii pentru utilizatori şi trei permisiuni de bază pentru fişiere:– Privilegii utilizator pentru fişiere

• Proprietar • Grup• Lume (“Ceilalţi” or “Public”)

– Permisiuni pentru fişiere• Read (citire)• Write (scriere)• Execute (executare)

SSA cursul 7 - M. Joldoş - T.U. Cluj 12

Permisiunile pentru fişiere

♦Date pentru fişier:-rw-r----- 1 jsmith user 6002 Sep 15 14:02 myfile

Permisiuni Proprietar Grup Dimensiune Data Numele fişierului

Permisiunile se dau ca valoare numerică:

r = 4, w = 2, x = 1, - = 0 rwx = 4 +2+1 = 7

rwxrwxrwx r-xrw-rwx r--r--r--

7 7 7 5 6 7 4 4 4

SSA cursul 7 - M. Joldoş - T.U. Cluj 13

Contul supervizorului

♦ Supervizorul = root

♦ Root este ţinta principală pentru hackeri din cauza privilegiilor pe care le are

♦ Dacă hackerii pot deveni root, atunci pot prelua controlul asupra sistemului

♦ Dacă se întâmplă aşa ceva, e nevoie de un timp considerabil pentru a recupera “sistemul capturat” şi a-l restaura pentru operaţii “normale”

SSA cursul 7 - M. Joldoş - T.U. Cluj 14

Unix & Securitatea

♦ La început, sistemul Unix era foarte nesigur. – Securitatea se păstra prin metode fizice.

♦ Folosind cuvintele lui Dennis Ritchie, unul dintre creatorii lui Unix, "Nu a fost proiectat de la început pentru a fi sigur. A fost proiectat cu trăsăturile necesare pentru a face securitatea service-abilă."

SSA cursul 7 - M. Joldoş - T.U. Cluj 15

Fundamente

♦ Ameninţare – un eveniment nedorit♦ Vulnerabilitate – condiţia în care un control sau o

gardă de siguranţă lipseşte sau este prost administrată şi care permite apariţia unei ameninţări cu un impact mai mare sau mai frecvent sau ambele.

♦ Pierderi – directe sau indirecte– Dezvăluiri– Integritate– Refuzul servirii

♦ Contramăsurile sunt metode menite a reduce riscul şi pierderile asociate unei ameninţări sau unei vulnerabilităţi

SSA cursul 7 - M. Joldoş - T.U. Cluj 16

Procesul de luare a contramăsurilor

♦ Există cinci paşi în stabilirea contramăsurilor– Evaluarea riscurilor– Evaluarea vulnerabilităţilor– Reducerea vulnerabilităţii– Documentarea sistemului– Actualizarea permanentă

♦ Este un proces continuu

SSA cursul 7 - M. Joldoş - T.U. Cluj 17

Evaluarea riscurilor (risk assessment –R/A)

� R/A este studiul vulnerabilităţilor, a amenin-ţărilor, a probabilitătii acestora, a impactului lor şi a eficacităţii teoretice a contramăsurilor.� Riscul poate fi combătut prin acţiuni ale admini-

stratorului securităţii; în schimb, ameninţările nu pot fi combătute.

� Evaluăm riscul unui sistem pentru a:� Determina pierderile aşteptate� Stabili un grad de acceptabilitate� Determina eficacitatea contramăsurilor� Reproiecta şi îmbunătăţi securitatea

SSA cursul 7 - M. Joldoş - T.U. Cluj 18

Calcularea riscurilor

♦ Sunt mai multe formule pentru risc– Una dintre acestea este:: Risc =

Ameninţare * Vulnerabilitate * Cost– Dacă Ameninţare = 0 or Vulnerabilitate =

0 sau Cost = 0 atunci Risc = 0♦ Nu avem control asupra ameninţărilor♦ Avem ceva control asupra costurilor♦ Avem mult control asupra

vulnerabilităţii

SSA cursul 7 - M. Joldoş - T.U. Cluj 19

Determinarea vulnerabilităţilor unui sistem♦ Se face folosind software de scanare şi

probare pentru a identifica slăbiciuni potenţiale– Se caută echipamente neautorizate– Se caută imperfecţiuni în sistem

♦ Se folosesc unelte cum sunt– Crack– SATAN– . . .

SSA cursul 7 - M. Joldoş - T.U. Cluj 20

Tipuri de vulnerabilităţi

� Sunt 3 clase de vulnerabilităţi� De proiectare

Slăbiciuni în specificarea sau proiectul de bază. Chiar dacă s-a implementat exact după specificaţii slăbiciunea va apărea.D.e. folosirea criptării XOR pentru protecţia datelor

� De implementareSlăbiciuni în sistemul ţintă ca rezultat al erorilor sau

practicilor necorespunzătoare din partea autorului. D.e. folosirea strcpy() in loc de strncpy()

� De configurareSlăbiciuni în sistem rezultate din parametri incorecţi sau

hardware necorespunzător.D.e. servicii neutilizate, permisiuni de citire pentru toţi etc.

SSA cursul 7 - M. Joldoş - T.U. Cluj 21

Surse de informaţii despre vulnerabilităţi♦ Surse gratuite

– Bugtraq• www.securityfocus.com

– NTbugtraq• www.ntbugtraq.com

– VulnWatch• www.vulnwatch.com

♦ Surse comerciale– E-Security Online de la E&Y

– DeepSight de la Symantec

Ar trebui raportate

vulnerabilităţile?

SSA cursul 7 - M. Joldoş - T.U. Cluj 22

Testarea penetrării

♦ Cunoscută şi ca– Analiza penetrării (PentAn)– Atacul echipei Tigru– Echipa roşie [Echipa albastră]

♦ Scopul final al testului este violarea politicilor de securitate ale unui sit

♦ Utilitatea studiului vine din gradul de penetrare, din documentarea şi concluziile studiului, iar nu din succesul sau eşecul penetrării– Spre exemplu: compromiterea cu succes a datelor

utilizatorului nu este echivalentă escaladării privilegiilor într-un sistem

SSA cursul 7 - M. Joldoş - T.U. Cluj 23

Reducerea vulnerabilităţilor

♦ Trebuie lucrat pentru eliminarea vulnerabilităţilor

♦ Trebuie creată documentaţie pentru sistem, precum şi proceduri de operare

♦ Staţi la curent cu exploatările şi toate corecţiile pentru sistem

SSA cursul 7 - M. Joldoş - T.U. Cluj 24

Slăbiciuni ale Unix

♦ Procesul de login – o singura parolă slabă poate compromite întregul sistem

♦ Gazdă de încredere – o maşină care permite accesul la resursele locale fără autentificarea prin parolă– Serviciile de fişiere .rhosts şi hosts.equiv– X-window permite accesul de la distanţă– Încrederea este inamicul Dvs.

♦ Pe măsură ce creşte şi se modifică SO unix apar găuri noi

SSA cursul 7 - M. Joldoş - T.U. Cluj 25

Slăbiciuni generale (1)

♦ O versiune a atacului cu depăşire de zonă tampon proiectat pentru refuzul servirii.– Se scrie un tampon cu mai mult decât

poate păstra, a. î. adresa de retur din funcţie sau alţi pointeri stocaţi în stiva program devin corupţi

– Face ca programul să încerce să execute sau să acceseze o locaţie de memorie nevalidă

– Cauzează o eroare care poate stopa aplicaţia sau chiar maşina pe care aceasta rulează

SSA cursul 7 - M. Joldoş - T.U. Cluj 26

Slăbiciuni generale (2)

♦ Atacuri pe bază de intrare nevalidă: metodă de creare a datelor de intrare care fac ca o aplicaţie să execute comenzi pe care nu le-ar executa în mod normal

♦ Similară atacurilor cu depăşire de tampon, dar...– Exploatează lipsa validării intrării, nu a depăşirii

limitelor– Caută să păcălească aplicaţia să execute comenzi,

nu să exploateze abilitatea de a suprascrie stiva♦ Cele mai comune se găsesc în scenarii

CGI

SSA cursul 7 - M. Joldoş - T.U. Cluj 27

Slăbiciuni generale (3)

♦ Atacul prin acces de la distanţă la procesorul de comenzi: foloseşte forţa brută sau atacuri orientate pe date pentru a forţa un sistem sa deschidă o conexiune înapoi spre atacator

♦ Exploatează servicii greşit configurate sau vulnerabile în alt fel pentru a obţine un acces mai direct

♦ Metode uzuale– X Windows

– Canale înapoi

SSA cursul 7 - M. Joldoş - T.U. Cluj 28

Slăbiciuni generale (4)

♦ Ingineria socială– Lucrez la departamentul de securitate

• Avem o problemă. Avem nevoie de ajutorul Dvs. Daţi-ne parola Dvs.

• Trebuie să vă actualizăm definiţiile de viruşi; utilizatorii să-mi dea parolele de pe screensavers

– Probleme cu lista de plată• Sunt de la contabilitate. Nu pot face sistemul să execute

jobul de calcul al salariilor.

– Un tur personalizat• Sunt nou, arată-mi cum merg lucrurile

– Ai încredere în mine; lucrez la telefoane• Caut un defect.

SSA cursul 7 - M. Joldoş - T.U. Cluj 29

Informaţiile pentru inginerie socială♦ Hackerii îşi obţin informaţiile pentru ingineria socială din:

– Directoarele cu angajaţi – adesea aflate pe paginile de Web ale companiilor. Numele, adresele de email, numerele de telefon, departamentele în care lucrează sunt la câteva click-uri distanţă

– Sistemele de telefonie ale companiilor – adeseori au posibilitatea de a lista numele angajaţilor

– Directoare de lobby –oficii, nume, titluri, etc.– Postări pe Usenet & arhive de liste de mail – se obţine

numele angajatului. Adeseori semnăturile conţin titlul şi informaţii de contact. Traversarea mai multor intrări pot da informaţii despre stilul de scris al persoanei

– Baze de date online – numere de telefon & adrese de email gratuite din multe locaţii.

– Pagini de Web personale – adeseori persoanele dau informaţii ca, de exemplu, unde lucrează, unde au urmat şcoala, cine le sunt prietenii, ce mâncare le place etc. Toate de la sursă.

– Informaţia de DNS publică – bazele de date cu mapări de la nume la adrese au info de contact pentru administratorii sistemelor respective.

SSA cursul 7 - M. Joldoş - T.U. Cluj 30

Atacuri asupra Unix

♦ Pe lângă slăbiciunile de ordin general ale unix, mai există o serie de slăbiciuni specifice, care au fost exploatate

♦ Următoarele transparente vor schiţa câteva dintre problemele comune –majoritate, dar nu chiar toate au fost corectate– Unele necesită ca administratorul de

sistem să efectueze anumite acţiuni

SSA cursul 7 - M. Joldoş - T.U. Cluj 31

Bibliotecile partajate

♦ Permit programele legate dinamic să acceseze cod din biblioteci folosite în comun– Editorul de legături dinamice al sistemului (ld.so or ld.so.1)

face disponibil codul referit de program la execuţie– Principalul beneficiu este că programele nu trebuie re-

construite la actualizarea bibliotecilor

♦ Dacă atacatorii pot modifica o bibliotecă dinamică sau pot furniza o altă bibliotecă prin una dintre variabilele de mediu ale LD, atunci aceştia pot obtine accesul la nivel supervizor prin orice program legat dinamic executat cu privilegii de root

SSA cursul 7 - M. Joldoş - T.U. Cluj 32

Eroarea de validare a accesului

♦ O eroare de validare a accesului reprezintă o situaţie în care se efectuează o verificare pentru validare, dar, din cauza logicii incorecte, se oferă acces necorespunzător.

♦ Vulnerabilitate exemplu [froot bug, AIX 3.2, Administrator Access]– Comanda:

$ rlogin victim.com -l –froot

Permite acces root de la distanţă fără validare din cauza unei erori de analiză a textului care substituie “root” ca nume al persoanei care este validată. Login are întotdeauna succes indiferent de parolă din cauza logicii de condiţionare lipsă.

SSA cursul 7 - M. Joldoş - T.U. Cluj 33

suid/sgid

♦ Întrebare: John a scris un program. Bob îl execută. Ale cui fişiere le poate accesa?– Răspuns: în mod normal pe cele ale lui Bob, cu condiţia să

nu fie setaţi biţi de set-user-id (suid) sau set-grup-id (sgid).– Un program cu suid sau sgid se execută “în numele

proprietarului"!

♦ Fişiere setate la SUID/SGID permit utilizatorilor obişnuiţi să le ruleze cu permisiuni mai elevate.

♦ Problema: majoritatea fişierelor SUID/SGID permit programelor/scenariilor să fie rulate ca root. – Acest lucru poate fi foarte periculos şi nesigur într-un mediu

server. Hackerul poate exploata uşor multe dintre aceste fişiere pentru a obţine acces “root”

SSA cursul 7 - M. Joldoş - T.U. Cluj 34

De ce suid root?♦ Pentru că ele sunt mecanisme Unix pentru

schimbarea identităţii utilizatorilor şi grupurilor– Fie pe termen nedefinit, fie pentru execuţia unui singur

program– Au fost create pentru a trata inflexibilităţile modelului de

control al accesului ale Unix– Utilizatorii au nevoie de privilegii de supervizor pentru a

executa anumite funcţii ale SO (dar ei nu ar trebui să primească statut de supervizor)

– Este sursa pentru probleme de securitate care nu se mai termină

♦ Coada de imprimare este, în esenţă, un fişier– Cineva trebuie să fie proprietarul lui– Cum să pună alţii ceva în coada respectivă? Fără a face

disponibilă coada în orice scop– Răspunsul uzual din Unix este să se ruleze programul de

imprimare setuid la proprietarul cozii

SSA cursul 7 - M. Joldoş - T.U. Cluj 35

Programe importante care folosesc suid

♦ /bin/passwd – Schimbarea parolei

♦ /bin/login – Programul de login

♦ /bin/at – Trimiterea de job-uri pe loturi

♦ /bin/su – Schimbarea UID-ului unui

program

SSA cursul 7 - M. Joldoş - T.U. Cluj 36

Slăbiciuni legate de instalare♦ Un program care are o serie de probleme de securitate este

programul install, care implicit pe multe platforme a fost setuid root. Deşi s-a argumentat de multă vreme că securitatea din install e suficient de bună pentru a preveni abuzurile, în cele din urmă s-a eliminat bitul setuid.

♦ Vulnerabilitate exemplu [install, general, Administrator Access]

% echo “intruder::0:0:The Intruder:/:/bin/sh” >> /etc/passwd

% cp /etc/passwd /tmp/passwdSalvează fişierul de parole curent

% cp /tmp/passwd /etc/password

Adaugă un utilizator de nivel root

% install –d –o <username> /etc Instaleză un fişier în home cu Privilegii de root (deoarece installeste suid)

Restaurează vechiul fişier de parole

SSA cursul 7 - M. Joldoş - T.U. Cluj 37

Slăbiciuni legate de fişierele cu vidaje de memorie

♦ Fişierele de vidaj sunt create de sistem la apariţia unei erori din care programul nu se poate recupera

♦ Conţin imagine memorie folosită de obicei la depanare

♦ Un vidaj de la un program SUID poate conţine parole cifrate sau alte info sensibile

SSA cursul 7 - M. Joldoş - T.U. Cluj 38

Slăbiciuni legate de login incorect

♦ Fişierul /etc/btmp ţine evidenţa tentativelor de login eşuate din cauza numelui de login eronat

♦ Nu este neobişnuit ca cineva să-şi tasteze parola în loc de numele de utilizator (numele de login)– Prin examinarea unui login eşuat şi apoi a

unuia reuşit de la un terminal– Cum utilizatorul şi-a corectat cel mai

probabil eroare, se poate releva o pereche nume de utilizator/parolă

SSA cursul 7 - M. Joldoş - T.U. Cluj 39

Slăbiciuni legate de numele de fişiere

♦ Atacurile folosind nume de fişiere implică crearea de fişiere cu nume interpretat de sistem ca altceva prin imbricarea delimitatorilor de comenzi în nume– unix nu are restricţii referitoare la ce fişiere să fie

folosite într-un nume de fişier– De exemplu:

core; rm – r /*Dacă acest fişier este procesat de către oricare comandă care foloseşte interpretorul de comenzi pentru a expanda numele de fişier, partea de nume de după ‘;’ va fi executată ca o comandă – în acest caz o comandă care să şteargă toate fişierele de pe calculator

SSA cursul 7 - M. Joldoş - T.U. Cluj 40

Sfaturi pentru Unix

♦ Există multe surse de sfaturi referitoare la securitatea sistemelor unix în cărţi, articole sau pe Web

♦ Următoarele câteva notiţe vor sublinia o serie de elemente care se pot dovedi utile în întreţinerea oricărui sistem unix

SSA cursul 7 - M. Joldoş - T.U. Cluj 41

Parole pentru root

♦ Folosiţi întotdeauna o parolă TARE pentru root

♦ Limitaţi accesul la root la un număr minim de utilizatori sau de programe– Oferiţi accesul pe baza nevoii– Aceasta practică ar trebui să limiteze

utilizarea necorespunzătoare accidentală or intenţionată a privilegiilor de root

♦ Reţineţi toate activitătile root prin mecanisme de jurnalizare/contabilizare

♦ NU puneţi fişier .rhosts în directorul root

SSA cursul 7 - M. Joldoş - T.U. Cluj 42

Protejarea conturilor sistem

♦ Conturile sistem nu sunt asociate unui anumit utilizator– Conturile sistem implicite, cum sunt sys, bin,

uucp, sau lp, sunt folosite de sistem pentru a rula aplicaţii sistem sau a gestiona funcţionarea sistemului

– Ştergeţi, dacă se poate, conturi (precum demo, test, guest, sau help) create de programe de aplicaţie pentru a preveni exploatările împotriva acestor conturi

♦ Dacă conturile nu pot fi şterse, consideraţi– Dezactivarea sau schimbarea parolei– Oferirea unui interpretor fals care nu face nimic

la execuţie

SSA cursul 7 - M. Joldoş - T.U. Cluj 43

Conturi pentru musafiri

♦Sunt oferite ca o facilitate pentru vizitatori– Dacă se poate, eliminaţi-le– Dacă sunt necesare:

• Schimbaţi zilnic parola şi activaţi-le numai când este nevoie

• Puneţi contul guest într-un sistem de fişiere restricţionat (chroot)

• Folosirea interpretoarelor de comenzi restricţionate constituie o alternativă la conturile pentru musafiri

SSA cursul 7 - M. Joldoş - T.U. Cluj 44

Directoare de protejat

♦ Minimum toate directoarele din calea de căutare a root trebuie securizate cât mai bine– / - directorul de bază (home) al root– /dev – conţine toate fişierele device standard

• Doar /dev/null, /dev/tty şi /dev/console ar trebui să fie vizibile tuturor

♦ Suspectaţi fişierele de acces la dispozitive situate altundeva decât în /dev.

♦ Scanaţi periodic sistemul în căutarea fişierelor de acces la dispozitive neautorizate

SSA cursul 7 - M. Joldoş - T.U. Cluj 45

Permisiuni pentru directoare

/etc♦ Conţine majoritatea fişierelor de configurare

şi de securitate ale sistemului♦ Nici un fişier sau director nu ar trebui să

poată fi scris de oricine /home♦ Tipic, acest director conţine toate

directoarele atribuite utilizatorilor (home directories)

♦ Permisiunile recomandate pentru fiecare director utilizator sunt 700

SSA cursul 7 - M. Joldoş - T.U. Cluj 46

Protejarea datelor de audit

♦ Accesul la directoare şi la fişiere care conţin info de audit sau jurnale de audit trebuie să fie cât mai restrictiv

♦ Permisiunile recomandate pentru directoare ar trebui să fie 750, cu proprietar şi grup root atribuit grupului administratorului securităţii

♦ Ideal, accesul la jurnalele de audit ar trebui limitat la personalul care se ocupă de securitate

SSA cursul 7 - M. Joldoş - T.U. Cluj 47

Fişiere critice

♦ /dev/kmem, dispozitiv special în mod caracter, oferă accesul la memoria virtuală a unui sistem

♦ /dev/mem , dispozitiv special în mod caracter, oferă accesul la memoria fizică a unui sistem

♦ Daca atacatorul poate accesa aceste dispozitive, atunci el poate modifica atributele sistemelor şi al proceselor

♦ Se recomandă permisiunile 440 cu proprietar root şi grup sys

SSA cursul 7 - M. Joldoş - T.U. Cluj 48

/etc/aliases

♦ Conţine aliasuri pentru e-mail aliases folosite de sendmail

♦ Poate fi configurat să execute automat programe– Exemplu: se poate configura encode/decode pentru a uşura

pentru utilizatori trimiterea/recepţionarea de fişiere binare♦ Din nefericire, acesta devine un loc în care atacatorii

pun executabilele lor♦ Fişierul aliases nu ar trebui să poată fi scris de către

utilizatori♦ Evitaţi aliasurile pentru programe sau scrierile în fişiere

dacă nu sunteţi 100% sigur de rezultat♦ Permisiuni recomandate: 644 cu proprietar root şi

grup bin

SSA cursul 7 - M. Joldoş - T.U. Cluj 49

Ghid pentru audit

♦ Pentru a minimiza şansa de penetrare a securităţii, trebuie monitorizat şi auditat sistemul în mod regulat– Trebuie să vă cunoaşteţi sistemul– Trebuie să vă cunoaşteţi politicile de securitate– Trebuie să auditaţi în mod regulat şi frecvent– Trebuie să înţelegeţi uneltele de audit disponibile

şi modul lor de folosire– Staţi la curent – citiţi cărţi - folosiţi Web-ul

SSA cursul 7 - M. Joldoş - T.U. Cluj 50

Unelte pentru securitate în Unix

♦ Familiarizaţi-vă cu toate uneltele disponibile care să vă ajute să întreţineţi un sistem unix sigur

♦ Unele unelte au fost deja menţionate, altele le vom menţiona

SSA cursul 7 - M. Joldoş - T.U. Cluj 51

COPS (1)♦ Pachetul COPS (Computer Oracle and Password

System) dezvoltat de Dan Farmer de la Sun Microsystems, este o unealtă de securitate pentru administratorii de sistem. Ea verifică numeroase probleme de securitate comune pe sistemele UNIX.

♦ Este o colecţie de programe pentru shell scripts şi programe în C (o versiune mai nouă foloseşte PERL în loc de C)

♦ COPS poate fi rulat cu uşurinţă pe aproape orice variantă de Unix.

SSA cursul 7 - M. Joldoş - T.U. Cluj 52

COPS (2)

♦ Între altele, COPS verifică următoarele şi trimite rezultatele administratorului de sistem:– Verifică /dev/kmem şi alte dispozitive în căutarea

permisiunilor de citire/scriere pentru “ceilalţi”– Verifică fişiere şi directoare speciale/importante în

căutarea de moduri “rele” (scriere de către ceilalţi etc.)

– Verifică dacă sunt parole uşor de ghicit– Verifică id-uri utilizator duplicate, câmpuri nevalide

în fişierul de parole etc.– Verifică id-uri de grup duplicate, câmpuri nevalide

în fişierul group etc.

SSA cursul 7 - M. Joldoş - T.U. Cluj 53

COPS (3)

– Verifică toate directoarele de bază ale utilizatorilor şi fişierele lor .cshrc, .login, profile şi .rhosts în căutarea de probleme de securitate

– Verifică toate comenzile din fişierele /etc/rc şi fişierele cron în căutarea permisiunilor de scriere pentru “ceilalţi”

– Verifică dacă sunt căi de căutare greşite pentru root, sisteme NFS exportate spre “ceilalţi” etc.

– Include un sistem expert care caută să determine dacă un utilizator dat (de obicei root) poate fi compromis în anumite condiţii.

SSA cursul 7 - M. Joldoş - T.U. Cluj 54

npasswd♦ Comanda npasswd, dezvoltată de Clyde Hoover de la

University of Texas at Austin, este menită să înlocuiască comanda standard UNIX passwd, precum şi comanda SUN yppasswd.

♦ Programul npasswd face parolele mai sigure nepermiţând utilizatorilor să-şi alegă parole nesigure.

♦ Npasswd oferă următoarele capabilităţi:– Lungime minimă a parolei configurabilă– Configurabilitate pentru a forţa utilizatorii să folosească litere

mari şi mici sau cifre şi punctuaţie– Verificare parolelor “simple”; d.e. o literă repetată– Verificarea în raport cu numele maşinii şi alte informaţii

specifice gazdei– Verificarea în raport cu numele de login, numele şi prenume

ş.a.m.d.– Verificarea în raport cu cuvinte din diverse dicţionare, inclusiv

dicţionarul sistem.

SSA cursul 7 - M. Joldoş - T.U. Cluj 55

Tripwire

♦ Primul dintre verificatoarele de integritate a fişierelor

♦ Sunt disponibile versiuni pentru Unix şi Windows– Versiuni cu capabilităţi de reţea

♦ Versiunea academică este gratuită. Versiunile comerciale şi pentru Windows, nu.

♦ Util în găsirea cailor troieni.

SSA cursul 7 - M. Joldoş - T.U. Cluj 56

Capabilităţile Tripwire♦ Foloseşte câteva rutine de sumă de control/semnătură pentru a

detecta modificări în fişiere, precum şi pentru monitorizarea elementelor alese din informaţiile întreţinute de sistem.

♦ Sistemul monitorizează şi schimbările de permisiuni, legături şi dimensiuni pentru fişiere şi directoare.

♦ Poate fi făcut să detecteze adăugări sau ştergeri de fişiere din directoarele supravegheate.

♦ Configuraţia lui Tripwire este în aşa fel încât administratorul sistemului/securităţii să poată specifica uşor fişiere şi directoare de monitorizat sau de exclus din monitorizare şi să specifice fişiere cărora li se permit modificări limitate fără a genera o avertizare.

♦ O dată instalat pe un sistem "curat", poate detecta schimbări produse de activitatea intruşilor, modificarea neautorizată a fişierelor pentru a introduce cod de tipul "uşa-din-spate" sau "bombă-logică", activităţi ale viruşilor în mediu Unix.

SSA cursul 7 - M. Joldoş - T.U. Cluj 57

Tripwire. Exemplu de rulare

♦ O rulare alui Tripwire:

Observaţi: Nu sunt modificări

SSA cursul 7 - M. Joldoş - T.U. Cluj 58

Kerberos. ♦ Dezvoltat la MIT pentru Proiectul Athena

(`83)♦ Motivaţia: studenţii din MIT trăgeau prea

mult cu urechea şi obţineau tot timpul parole supervizor şi modificau (sau reporneau) maşini

♦ Merge pentru reţele UNIX TCP/IP; în domeniul public

♦ Bazat pe criptografia simetrică (foloseşte DES)

♦ Foloseşte un arbitrator de încredere

SSA cursul 7 - M. Joldoş - T.U. Cluj 59

Designul Kerberos

• Utilizatorul trebuie să se identifice o dată la începutul unei sesiuni la staţia de lucru (sesiune de login).

• Parolele nu sunt trimise niciodată ca text clar prin reţea (sau stocate în clar în memorie)

• Fiecare utilizator are o parolă.• Fiecare serviciu are o parolă.• Singura entitate care cunoaşte toate

parolele este Serverul de autentificare.

SSA cursul 7 - M. Joldoş - T.U. Cluj 60

Kerberos. Privire generală

♦ Un client care doreşte acces la un server– Clientul solicită un tichet pentru un Ticket Granting

Service (TGS) – serviciu de garantare a tichetelor de la serverul Kerberos.

– Serverul Kerberos trimite tichetul, cifrat cu cheia secretă a clientului.

– Clientul solicită apoi un tichet pentru un anume serviciu de la TGS

– TGS furnizează tichetul solicitat– Clientul prezintă tichetul serverului împreună cu

autentificatorul– Serverul permite clientului să folosească serviciul

SSA cursul 7 - M. Joldoş - T.U. Cluj 61

Kerberos.Obţinerea unui tichet

♦ Obţinerea tichetului iniţial– Utilizatorul are o singură

informaţie secretă care îi poate dovedi identitatea (ex: o parolă).

– Nu dorim să trimitem textul clar al parolei peste reţea!

– În schimb facem ceea ce urmează:

• Utilizatorul (clientul) trimite un mesaj serverului Kerberos, conţinând numele de utilizator şi TGS specific dorit, de obicei ca parte a procesului de login.

Kerberos

Client

Numele utilizatoruluiServiciul dorit

Nume utilizatorParolăServiciu

SSA cursul 7 - M. Joldoş - T.U. Cluj 62

Serverul Kerberos♦ Dacă utilizatorul este în

baza de date Kerberos...– Generează o cheie de

sesiune spre a fi folo-sită între utilizator şi TGS dorit; cheia de sesiune este Ticket Granting Ticket, TGT.

– Cifrează cheia de sesiune de mai sus cu cheia secretă a clientului (o dispersie neinversabilă a pa-rolei utilizatorului).

– Creează un TGT pentru client care să-i folosească la auten-tificare atunci când comunică cu TGS. Acesta este cifrat cu cheia secretă a TGS.

Kerberos

Client

(1) Caută utilizatorul (2) Generează cheia de sesiune

Cli-TGS (3) k1 = hash(parola utilizatorului)(4) determină TGS(5) construieşte TGT(6) trimite E k1(Cli-TGS ), TGT

Bază de datecu chei /utilizatori

TGT = E Kerb-TGS (nume utilizator, adresa, server ID)

SSA cursul 7 - M. Joldoş - T.U. Cluj 63

Kerberos. Obţinerea TGT

♦ Clientul poate acum descifra mesajul şi poate obţine cheia de sesiune pentru TGS.– E k1(Cli-TGS ), TGT– Rezultă cheia de sesiune s folosită pentru Cli-TGS şi

TGT♦ Clientul înlătura parola din sistem. ♦ Nimeni altul nu mai poate folosi TGT-ul... De ce???

Utilizatorul are acum un tichet semnat de serverul Kerberoscare îl autentifică pentru Ticket Granting Service

Client

SSA cursul 7 - M. Joldoş - T.U. Cluj 64

Kerberos.Obţinerea tichetelor Server♦ O nevoie de unul pentru

fiecare serviciu folosit, trebuie obţinute pe rând.– Clientul trimite o cerere la TGS

(se face automat când e nevoie de aplicaţie).

– Clientul creează un autentificator: numele, adresa, ştampila de timp şi-l cifrează cu cheia de sesiune obţinută de la serverul de autentificare Kerberos.

– Clientul creează apoi o cerere: numele serverului, TGT din sesiunea cifrată cu cheia secretă a TGS şi autentificator (de mai sus).

Client

TicketGrantingService

(2) cere/recepţionează tichet server

server ID, E Cli-TGS (nume utilizator, adresa, ştampila de timp), TGT = E Kerb-TGS (nume utilizator, adresa, ID server)

SSA cursul 7 - M. Joldoş - T.U. Cluj 65

Kerberos.Serviciul de a garantare a tichetelor

♦ Decriptează TGT cu cheia Kerb-TGS♦ Foloseşte cheia de sesiune pentru a decripta

autentificatorul şi îl verifică:– Compară informaţia din autentificator cu cea de pe tichet, – Compară adresa de reţea a cererii cu cea din cerere şi– Verifică ştampila de timp în raport cu timpul curent. – Continuă daca toate se potrivesc.

Verificarea ştampilei de timp înseamnă că ceasurile trebuie sincronizate şi se face pentru a reduce probabilitatea reluării

server ID, E Cli-TGS (nume utilizator, adresa, ştampila de timp),TGT = E Kerb-TGS (nume utilizator, adresa, ID server)

SSA cursul 7 - M. Joldoş - T.U. Cluj 66

Kerberos.Obţinerea unui tichet pentru serviciu

♦ TGS returnează un tichet valid pentru ca clientul să-l dea serverului de aplicaţie solicitat. Acesta va avea:– Numele clientului, adresa, ştampila de timp, expirarea,

noua cheie de sesiune. – Cifrează aceasta cu cheia secretă a serverului de

aplicaţie.♦ TGS va trimite şi:

– O nouă cheie de sesiune pentru client şi server (cum am menţionat mai sus), cifrată cu cheia partajată între client şi TGS.

E Cli-TGS (Cli-service) ,Ticket = E TGS-Servicee (nume utilizator, adresa, ştampila de timp,

expirare, Cli-service)

SSA cursul 7 - M. Joldoş - T.U. Cluj 67

Kerberos.Autentificarea♦ Clientul primeşte un mesaj şi-l descifrează

pentru a obţine cheia de sesiune pentru server.

E Cli-TGS (Cli-service) ,Ticket = E TGS-Service (nume utilizator, adresa, ştampila de timp,

expirare, Cli-service)

Clientul poate citi cheia de sesiune pentru serviciu, Cli-serviceNumai Serviciul (sau TGS) ar putea decodifica tichetul

* tichetul conţine Cli-service* tichetul are o ştampilă de timp, o durată de viaţă etc

SSA cursul 7 - M. Joldoş - T.U. Cluj 68

Kerberos.Solicitarea unui serviciu♦ Clientul:

– Creează o cerere spre server, cerere care conţine un autentificator constând din numele clientului, adresa şi o ştampilă de timp (cifrată cu cheia de sesiune furnizată de TGS)

– Şi cheia de sesiune cifrată cu cheia secretă a serverului, furnizată de TGS.

Client Server

(3) Solicită serviciu

SSA cursul 7 - M. Joldoş - T.U. Cluj 69

Kerberos.Serviciul pentru aplicaţii

♦ Serverul decriptează şi verifică tichetul şi autentificatorul, adresa şi ştampila de timp.

♦ Dacă aplicaţia solicită autentificare reciprocă, serverul va trimite clientului un mesaj care conţine ştampila de timp incrementată cu unu (cifrată cu cheia de sesiune).

♦ Mesajele ulterioare vor fi şi ele cifrate cu cheia de sesiune– Acestea depind de aplicaţie.

De citit

♦ Simson Garfinkel, Gene Spafford: Practical UNIX and Internet Security, Second EditionO’Reilly Media, 1996

SSA cursul 7 - M. Joldoş - T.U. Cluj 70

SSA cursul 7 - M. Joldoş - T.U. Cluj 71

Rezumat

♦ Unix– Introducere– Securitatea conturilor– Securitatea sistemului de fişiere– Securitatea reţelei

♦ Contramăsuri şi riscuri♦ Determinarea vulnerabilităţilor♦ Slăbiciuni generale şi specifice Unix♦ Atacuri asupra Unix♦ Sfaturi pentru Unix♦ Unelte pentru securitate în Unix

– COPS, Tripwire♦ Kerberos