360 likes | 469 Views
Operációs rendszerek (vimia219). Felhasználó- és jogosultságkezelés. Tóth Dániel, Micskei Zoltán. Számítógépes rendszerek biztonsága. Fontos ez? Mindenkinek fontos? Mikor fontos?. Mikor fontos a számítógépes biztonság?. Szoftverfejlesztésben minden szinten foglalkozni kell a biztonsággal
E N D
Operációs rendszerek (vimia219) Felhasználó- és jogosultságkezelés Tóth Dániel, Micskei Zoltán
Számítógépes rendszerek biztonsága Fontos ez? Mindenkinek fontos? Mikor fontos?
Mikor fontos a számítógépes biztonság? • Szoftverfejlesztésben minden szinten foglalkozni kell a biztonsággal • „Ha egy rendszert nem terveztek biztonságosra, akkor később lehetetlen azzá tenni.” • A rendszer biztonsága a leggyengébb láncszem biztonságával azonos.„Az operációs rendszer nem csodaszer, rosszul megírt alkalmazás ellen nem véd.”
Miből áll a „biztonság” fogalma • „C.I.A.”: Három kölcsönösen egymásra épülő alapfogalom • Cél: • garantálni, hogy a rendszer mindig az elvárt módon viselkedjen • Egy technológia magában kevés • A biztonság mindigcsak a célkitűzés függvényében értelmezhető Normális esetben: „jóindulatú” meghibásodások Biztonsági kontextusban: „rosszindulatú” meghibásodás
Biztonságot biztosító eszközök • Kriptográfia • Kommunikáció sértetlenségéhez, bizalmasságához kell • Platform szintű behatolás elleni védelem • Rendszeren futó alkalmazások sértetlensége • Hálózati behatoláselleni védelem • Redundancia,újrakonfigurálás • Rendelkezésre állás • Hitelesítés, engedélyezés
Tartalom Ezekről majd a következő előadáson részletesen • Számítógépes biztonság bevezető • Felhasználó kezelés, hitelesítés • UNIX, Linux alatt • Windows alatt • Engedélyezés • Engedélyezés általános sémái • Szerep alapú hozzáférés-vezérlés • Hozzáférési jogosultság listák • Engedélyezés UNIX, Linux alatt • Engedélyezés Windows alatt • Biztonsági alrendszer alapok • Központosított hozzáférés-vezérlés
Hitelesítés • Mi alapján dönthető el, hogy ki kicsoda? • …amit tud (pl.: jelszó) • …amije van (pl.: kulcs, belépőkártya) • …ami ő (pl.: ujjlenyomat, arckép) • Ezek (akár egy kombinációja) alapján egy (sértetlen) gép el tudja dönteni, hogy ki a személy, aki előtte ül • Mi a helyzet, ha nem sértetlen a gép? • Mi a helyzet a gép-gép közötti szolgáltatásokkal?
Hitelesítés • Hitelesítés három szinten kerülhet elő: • Ember és gép közötti interakció • Gép és gép között valamilyen hálózaton át • Gépen belül futó alkalmazások valamint az OS között • Hitelesítési protokollok kellenek • Gépen belül ill. gépek között csak az „amit tud” séma lehetséges (bizalmasságot igényel – pl. közös titok) • Itt már feltételezhető bonyolult kriptográfiai számítás elvégzése is (embernél fejben nyilván nem – de rendelkezhet segédeszközzel „amije van” sémánál)
Miből áll egy felhasználói fiók User + ID + Name + Real Name + Personaldata… + SharedSecret (Password, etc.) + PrivateDatastorepath A rendszer számára a felhasználó egy objektum…
Miből áll egy felhasználói fiók • A felhasználói fiókot azonosítja… • Linux, UNIX alapú rendszerek alatt UID • Integer (root 0, felhasználók 1000-…) • /etc/passwd, /etc/shadow, /etc/group tárolja az attribútumokat • Mik ezek az attribútumok • Login név • Jelszó (megváltoztathatóság, lejárati idő) • Home könyvtár • Alapértelmezett shell (illetve shell belépés megtiltása) • Alapértelmezett csoporttagság (erről majd egy kicsit később) • Komment (valódi név)
Felhasználói fiókok Linux alatt • Tárolás fájlokban: • /etc/passwd • /etc/shadow • /etc/group • /etc/gshadow • Létrehozás, módosítás, törlés • useradd, usermod, userdel • groupadd, groupmod, groupdel • passwd
Miből áll egy felhasználói fiók Linux alatt User Group Initialgroup + UID + name + password + shell + homedirectory + comment + expirydate + GID + name(+ password) 1 * members * *
Futó folyamatok • Hogyan állapíthatjuk meg egy futó folyamatról, hogy ki a tulajdonosa • psaux, pstree, /proc/$PID/status • Folyamat futása közben effektív user és group váltása • setuid, setgid mechanizmus • su, sudo parancsok
Azonosítás Linux alatt • Gépen belül • Felhasználó UID-név hozzárendelés feloldása gyakran kell → /etc/passwd-t mindenkinek kell tudnia olvasni • Jelszó ezért nem itt van, hanem a /etc/shadow alatt, hash-elve • Több gép között? • Pl.: ssh-nál • Felhasználó név/jelszó • Kriptográfiai kulcs alapján • Egyediség?
Tartalom • Számítógépes biztonság bevezető • Felhasználó kezelés, hitelesítés • UNIX, Linux alatt • Windows alatt • Engedélyezés • Engedélyezés általános sémái • Szerep alapú hozzáférés-vezérlés • Hozzáférési jogosultság listák • Engedélyezés UNIX, Linux alatt • Engedélyezés Windows alatt • Biztonsági alrendszer alapok • Központosított hozzáférés-vezérlés
Engedélyezés általános sémái Védett objektumok (protectedobjects) Biztonsági szabályzat (policy) ? Adatok ? ? Erőforrások Szereplő (Actor, Subject) Szereplőt leíróadatszerkezet A rendszerben a szereplőt egy adatszerkezet reprezentálja A jogosultság egy reláció a szereplők és a védett objektumok között
Hozzáférés végrehajtása Olvas(Adat1) Jogosultság végrehajtó (enforcementpoint) Adat1 elvégezhető Jogosultsági döntő (decisionpoint) Adat2 Erőforrás3
Jogosultságkezelés alapjai • A rendszer működése során • A szereplők műveleteket kezdeményeznek • A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját • A jogosultsági döntő komponens kiértékeli a kontextust • engedélyezi vagy megtiltja a műveletet • A jogosultsági végrehajtó komponens biztosítja, hogy a döntő által hozott döntés érvényre jusson
Jogosultságkezelés alapjai • A rendszer karbantartása során • Jogosultságok beállítása, módosítása történik • A jogosultságot leíró adatszerkezet maga is egy védett objektum • Tehát lehetnek olyan jogosultságok, amik saját magukra hatással vannak! • Általában a rendszer folyamatosan üzemel, nincs elkülönített karbantartási idő, a jogosultság módosítások azonnal érvényre jutnak
Jogosultságkezelés gyakorlati kihívásai • Sok szereplőt kell kezelni a rendszerben • Különböző rendszerek különbözőképpen azonosítják őket • Sok védett objektumot kell kezelni • Különböző rendszerek ezeket is különbözőképpen azonosíthatják • Jogosultsági relációk: • (Szereplők) X (Objektumok) X (Művelettípusok) • Az ilyet teljes hozzáférési mátrixnak nevezzük • Manuálisan (de még automatizáltan is) kezelhetetlen méretű adathalmaz
Felhatalmazás fajtái - kötelezőség • Klasszikus fogalmak (US DoD szabvány) • Kötelező (mandatory) • csak központi jogosultság osztás • felhasználók nem módosíthatják a házirendet • Belátás szerint (discretionary) • megfelelő jogú felhasználó továbboszthatja a jogokat
Felhatalmazás fajtái - típus • Integritás védelem • Objektumok címkézése • alacsony, közepes, magas… integritási szint • Ellenőrzés: • alacsonyabb szintű felhasználó nem olvashat/írhat magasabb szintű objektumot • Bell LaPadula (bizalmassági) és Biba (sértetlenségi) modellek • Hozzáférés vezérlési listák • objektum → (szereplő, engedélyek) • engedély: adatok írása, attribútumok olvasása…
Felhatalmazás fajtái - típus Feltételek: „No writeup” – nem írhatok magamnál magasabb szintű objektumba„No read down” – nem olvashatok magamnál alacsonyabb szintű objektumból Feltételek: „No readup” – nem olvashatok magamnál magasabb szintű objektumból„No write down” – nem írhatok magamnál alacsonyabb szintű objektumba • Integritás védelem • Objektumok címkézése • alacsony, közepes, magas… integritási szint • Ellenőrzés: • alacsonyabb szintű felhasználó nem olvashat/írhat magasabb szintű objektumot • Bell LaPadula (bizalmassági) és Biba (sértetlenségi) modellek • Hozzáférés vezérlési listák • objektum → (szereplő, engedélyek) • engedély: adatok írása, attribútumok olvasása…
Hozzáférés vezérlési listák A hozzáférési maszk (accessmask) tartalmazza, hogy pontosan milyen műveletekre vonatkozik az engedély * + OP1() + OP2() + mask Szereplő Engedély (Permission) Védett objektum
Hozzáférés vezérlési listák Egy védett objektumhoz engedélyek halmaza rendelhető * * * + mask Szereplő Engedély (Permission) Védett objektum Néha sorrendezést is megkövetel
Szerep alapú hozzáférés-vezérlés A szerep fogalom hierarchikus szereplő csoportosítási lehetőséget ad. Role-based Access Control (RBAC) * * * * * + mask Szereplő Szerep (Role) Engedély (Permission) Védett objektum A szükséges engedélyek száma kezelhető szintre csökken
Hierarchikus objektumok Ha a védett objektumok között természetszerűen hierarchia van… 1 * * * * * * + mask +inherit Szereplő Szerep (Role) Engedély (Permission) Védett objektum …egy engedély vonatkozhat egész részfára is öröklődéssel(inheritance)
Miből áll egy felhasználói fiók User memberOf Group A felhasználó csoporttagság valójában egy RBAC megvalósítási lehetőség + Name(+ Purpose…) (+ SharedSecret)
Tartalom • Számítógépes biztonság bevezető • Felhasználó kezelés, hitelesítés • Linux alatt • Windows alatt • Központosított címtárak • Engedélyezés • Engedélyezés általános sémái • Szerep alapú hozzáférés-vezérlés • Hozzáférési jogosultság listák • Engedélyezés Linux alatt • Engedélyezés Windows alatt • Biztonsági alrendszer alapok • Központosított hozzáférés-vezérlés, csoportházirendek
POSIX fájlrendszer jogosultságok • Alapelemek • Szereplő: user(felhasználó) • Szereplő hierarchia: group (csoport) • Minden userteszőlegesen sok group tagja lehet • Minden group tetszőlegesen sok usert tartalmazhat • Group további groupot nem tartalmazhat • Jogok • 3x3bit, olvasás, írás, végrehajtás (könyvtárba belépés) • Első a tulajdonos felhasználónak • Második a tulajdonos csoportnak • Harmadik mindenkinek • Speciális bitek • setuid, setgid: futtatásnál átveszi a file tulajdonos uid-, gid-jét, • sticky: újonnan létrejött fájlok tulajdonosát állítja • Az execute bit tiltó hatása implicit módon öröklődik a könyvtárakon, más öröklés nincs
Linux fájlrendszer jogosultságok • Tulajdonos manipulálása: chown • csak rootnak engedélyezett, nem delegálható • Jogosultság bitek módosítása: chmod • Csak tulajdonosnak engedélyezett • Többféle megadási mód: • Teljes felülírás 4 db oktális számmal • Módosítás pl: u+x (felhasználó végrehajtás hozzáadása), g-w (csoport olvasás elvétele) • Listázás: ls –l illetve ls –l –n • (POSIX ACL is létezik, idő hiányában nem tárgyaljuk)
Fájlrendszeren kívüli engedélyek • Speciális kiváltságok root felhasználó nevében futó folyamatoknak • Kérhetnek valós idejű ütemezési prioritást • Hozzáférhetnek közvetlenül a perifériákhoz (!) • Kell előtte memória illetve I/O tartomány allokáció • A közelmúltig így működtek a grafikus felületet adó X Window server eszközmeghajtó programjai • 1024 alatti TCP/UDP porton hallgathatnak • Kernel bizonyos konfigurációs beállításait megváltoztathatják, új modult tölthetnek be stb. • Nem előnyös, ha ezek nem szabályozhatóak külön-külön • Legkevesebb jog elve (principle of leastprivileges) • POSIX Capabilities mechanizmus – globális rendszerszintű erőforrásokra vonatkozó jogosultságok (ún. privilégiumok)
Kitekintés • Finomabb felbontású jogosultságkezelés végrehajtható fájlokra • Platform szintű behatolás elleni védőmechanizmusok támogatására (PAX, grsecurity) • A védőmechanizmusok számos egyébként sértetlen programot tesznek működésképtelenné (pl. JavaVM) • Speciálisan kivételezni kell az ilyen alkalmazásokat fájlrendszerbe írt címkével (SELinuxSecurityLabels) • Alkalmazásokhoz hozzárendelt rendszerhívási profilok (AppArmor) – felfedi ha a „szokásoshoz” képest megváltozik az alkalmazás futása