Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

UNIX 3. Uživatelé a oprávnění © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● uživatelé, /etc/passwd,

Podobné prezentace


Prezentace na téma: "UNIX 3. Uživatelé a oprávnění © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● uživatelé, /etc/passwd,"— Transkript prezentace:

1 UNIX 3. Uživatelé a oprávnění © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/ Obsah: ● uživatelé, /etc/passwd, /etc/shadow ● skupiny, /etc/group, /etc/gshadow ● správa uživatelů a skupin, příkaz sudo ● adresářová služba (LDAP, NIS) ● tradiční unixová oprávnění, ACL ● speciální oprávnění (SUID, SGID, sticky bit) ● atributy, rozšířené atributy ● SELinux, AppArmor, chroot, sandbox 30.3.2011

2 Unixový systém ● víceúlohový ● nutné vzájemné oddělení úloh (procesů) ● proces nemůže zasahovat do paměti jiného ● nutná podpora procesoru – ochrana paměti – IBM PC: i386 (32bitový, Windows NT) – privilegovaný režim – dtto (nelze nebezpečné instrukce) – existovaly i systémy bez podpory CPU → problém ● víceuživatelský ● nutné vzájemné oddělení uživatelů ● pomocí oprávnění (soubory, adresáře, procesy) – nutná podpora v jádře operačního systému (+privileg. r.)

3 Uživatelé ● správce (administrátor) → root (UID=0) ● není jádrem OS omezován ● může se změnit na libovolného uživatele – využíváno při přihlašování (uvítací program jako root ) ● běžný uživatel → UID!=0 ● může zasahovat jen do vlastních souborů, procesů – využívá se systém oprávnění ● NEmůže se změnit na jiného uživatele ● jádro OS pracuje s UID (běžně 0 až 32767) ● ve výpisu se překládá na jméno (srozumitelnost)

4 Definice uživatelů ● uloženo v souboru /etc/passwd ● jednoduchá databáze ( chyba → zbytek se nepoužívá ) ● 1 řádek = 1 uživatel, položky odděleny znakem „ : “ ● login:passwd:UID:GID:FullName:HomeDir:shell ● využívá se při překladu UID → jméno uživatele ( ls -l ) ● založení uživatele ● prosté přidání dalšího řádku – lze i editorem ● nástroje (GUI, useradd, userdel) – používáme kvůli zamykání (editační konflikt)

5 Data o uživatelích ● jsou uložena v textových souborech ● /etc/passwd – definice uživatelů ● /etc/shadow – hesla v chráněném souboru (uživatel nemůže ani číst) ● /etc/group – seznam skupin + členství uživatelů ve skupinách ● /etc/gshadow – hesla skupin v chráněném souboru (jako /etc/shadow )

6 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin... huzva:x:500:500:René Hužva:/home/huzva:/bin/bash ● na prvním řádku je typicky root ● dále jsou tzv. systémové účty se speciálním využitím ● některé mají GUID=0, takže je to „malý root “ ● tři tečky naznačují řádky, které byly v ukázce smazány

7 Skrytá hesla (shadow passwords) ● heslo zakódováno jednosměrnou funkcí ● původně crypt(), později md5, sha1, sha2 – přidávána sůl (1 heslo = více zakódovaných tvarů) ● i tak lze použít útok hrubou silou – bereme všechny kombinace hesel (využití slovníku) – zakódujeme a porovnáme s uloženým tvarem – dnes tzv. „rainbow table“ → otázka vteřin (md5, sha1) ● ukrytí hesel do souboru /etc/shadow ● může číst jen root, běžný uživatel ne ● nevadí, protože před přihlášením oprávnění root

8 /etc/shadow ● opět jednoduchá databáze ● login:passwd:další:údaje:... ● další údaje upřesňují vlastnosti hesla – poslední změna hesla, platnost hesla, účtu, povinná změna, zákaz změny hesla uživatelem,... ● soubor může číst jen uživatel root – zašifrovaná hesla chráněna před zcizením – nelze použít útok hrubou silou – změna hesla uživatelem → SUID (speciální oprávnění) root:6$630fCdtG$:14632:0:99999:7::: huzva:465sWTI1pX/:14251:0:99999:7:::

9 Skupiny ● každý uživatel je členem alespoň 1 skupiny ● další skupiny v /etc/group ● primární skupina ● explicitně definována v /etc/passwd ● změna primární skupiny příkazem newgrp (nový shell) ● BSD systémy posuzují pouze primární skupinu ● SYSV systémy posuzují všechny skupiny najednou – dnes typické chování (v Linuxu volitelná vlastnost jádra)

10 /etc/group ● seznam skupin ● opět jednoduchá databáze ● názevsk:passwd:GID:login1,login2 ● BSD systémy ● všichni uživatelé ve skupině users ● SYSV systémy ● každý uživatel má vlastní stejnojmennou skupinu ● větší důraz na implicitní soukromí ● dá se nastavit (při vytváření uživatele) – /etc/default/useradd

11 /etc/gshadow ● stejná ochrana hesel, jako /etc/shadow ● názevsk:heslo:administrators:members ● typicky se hesla nepoužívají ● členství ve skupinách pevně dáno – nastaví se při přihlášení uživatele ● je-li však heslo nastaveno, může uživatel do skupiny vstoupit až po přihlášení – příkaz newgrp

12 Správa uživatelů a skupin ● různé nástroje pro GUI a příkazový řádek ● GUI se liší dle distribuce, řádkové stejné (standard) ● useradd, userdel, usermod ● groupadd, groupdel, groupmon ● passwd ● pro změnu hesla (uživatel vlastní, root všechny) ● id ● výpis aktuálních informací (UID, GID, skupiny) uid=500(huzva) gid=500(huzva) groups=500(huzva),501(www)

13 Nástroj sudo ● kontrolovaná elevace (zvýšení) oprávnění ● lze spustit příkaz jako jiný uživatel (i jako root ) ● /etc/sudoers → konfigurace ● použití: sudo příkaz – využívá distribuce Ubuntu (vkládá se heslo uživatele) ● příkaz su ● změna na jiného uživatele ● nutno znát jeho heslo ( root nemusí)

14 Adresářová služba ● externí databáze uživatelů ● nahrazuje nebo doplňuje lokální databázi (viz dříve) ● specializovaná databáze, replikace, distribuovanost ● uživatelé, skupiny, hesla, členství ve skupinách, jména tiskáren, počítačů,... ● optimalizace pro čtení a prohledávání ● aktualizace (změny) jen občasné ● LDAP ( Lightweight Directory Access Protocol ) ● NIS ( Network Information Service ) ● MS Active Directory, X.500, ale též DNS

15 LDAP ● původně protokol k X.500 ● model klient – server, používá TCP/IP ● jednotný globální prostor ● autentizace uživatelů, ACL ● podpora decentralizace ● podpora různých atributů ● na TUL jméno + heslo, ale též heslo pro WiFi apod. ● OpenLDAP, Fedora Directory Server ● open source implementace LDAP ● MS Active directory privátní implementací LDAP

16 Atributy LDAP ● dle X.520 ● C – country (CZ) ● SP – state or province (Liberecký kraj) ● L – locality (Liberec) ● O – organization (Technická univerzita) ● OU – organization unit (Fakulta mechatroniky) ● CN – common name (René Hužva) – CN=René Hužva, OU=Fakulta mechatroniky, O=Technická univerzita, L=Liberec, SP=Liberecký kraj, C=CZ

17 NIS ● původně Yellow Pages (YP) ● kolidovalo s ochrannou značkou v UK ● firma Sun Microsystem ● licencováno pro unixové systémy ● dnes spíše LDAP ( blíže k tomu, co má MS Windows ) ● uživatelé, hesla, názvy počítačů, e-mailové aliasy, skupiny a členství ve skupinách,... ● novější verze: NIS+

18 Tradiční unixová oprávnění ● velmi jednoduchá ● v době vzniku Unixu málo výkonné počítače (1969) ● jde o rychlost souborového systému (FS – filesystem) ● žádná dědičnost, vše na konkrétní adresář, soubor – ke čtení ze souboru jsou nutná metadata – metadata jsou v i-node, který obsahuje i oprávnění – využijeme data, která stejně musíme načíst → efektivní ● „svatá trojice“ – jednotně pro soubory i adresáře ● 3 druhy: čtení, zápis, spuštění (Read, Write, eXecute) ● 3 cíle: vlastník, skupina, ostatní

19 Význam oprávnění čtení (zobrazení) obsahu souboru výpis obsahu adresáře (příkaz ls ) zápis do souboru (změna obsahu) změna obsahu adresáře (vytvoření, smazání a přejmenování položek) spuštění (provedení) binárka, skript vstup do adresáře (musí být i ve všech nadřízených)

20 Uplatňování oprávnění ● řízení přístupu podle modelu DAC ● uživatel má definováno UID a GID (těch i více) ● objekty oprávnění pro vlastníka, skupinu a ostatní ● uplatňují se jen nejkonkrétnější oprávnění ● jsem-li majitel → práva pro vlastníka ● patřím do skupiny, ale nejsem majitel → pro skupinu ● nejsem ani vlastník, ani skupina → práva pro ostatní ● POZOR: ● (!!!) žádný (!!!) průnik ani sjednocení atp.

21 Zobrazování oprávnění ● pro objekty (soubor, adresář) zobrazuji: ● tři trojice oprávnění (Read, Write, eXecute) ● vlastník, skupina, ostatní – rwx rwx rwx ● ve výpisu musí být k objektu vypsán: ● vlastník ● skupina

22 ls -l -rw-rw-r-- 1 huzva www 801512 led 22 2009 seznam.txt typ objektu tři trojice oprávnění vlastník skupina délka čas poslední změny obsahu název Typ vypsaného objektu: - → obyčejný soubor d → adresář (directory) b→ blokové zařízení (block) c→ znakové zařízení (char) p→ roura (pipe) s→ soket počet odkazů Počet odkazů je počet jmen (v adresářích), které odkazují na daný objekt. Souvisí s pevnými odkazy („hardlink“). U adresářů se započítává odkaz z vnitřku samotného adresáře (tj. dvě tečky „..“) a další případně obsažené podadresáře.

23 Příklad výstupu $ ls -ld /dev/ttyS0 /dev/sda web.tgz vyuka brw-r----- 1 root disk 8, 0 bře 19 06:28 /dev/sda crw-rw---- 1 root uucp 4, 64 bře 19 06:28 /dev/ttyS0 drwxrwxr-x 4 rene www 4096 pro 18 07:18 vyuka -rw-r--r-- 1 rene rene 550258 lis 7 2008 web.tgz $ stat ucitele.txt File: `ucitele.txt' Size: 2280 Blocks: 16 IO Block: 4096 regular file Device: fd00h/64768d Inode: 9132416 Links: 1 Access: (0644/-rw-r--r--) Uid: (500/huzva) Gid: (500/huzva) Access: 2009-10-01 09:17:19.000000000 +0200 Modify: 2008-08-29 08:31:50.000000000 +0200 Change: 2008-08-29 08:31:57.000000000 +0200

24 Oktalový zápis oprávnění ● každá trojice oprávnění se dá zapsat oktalově ● velmi často využíváno ● součet vah: ● rwx → 7 → všeobecně přístupný (skript, adresář) ● rw- → 6 → čtení a zápis (textový soubor) ● r-x → 5 → binárka, adresář s programy ● r-- → 4 → jen čtení (textový soubor) ● --x → 1 → binárka, nelze použít debugger

25 Nastavení oprávnění ● příkazem chmod ● využití oktalového zápisu oprávnění ● chmod 775 /bin/bashrwxrwxr-x ● chmod 664 index.htmlrw-rw-r-- ● symbolický zápis oprávnění místo oktalového ● příklad: u+r, u+rw, g-x, o=r, o=

26 umask ● slouží k implicitnímu nastavení oprávnění ● pro nové soubory a adresáře ● určuje, která oprávnění se mají ODEBRAT – výsledek je tedy rozdíl 777 - umask ● u adresáře je oprávnění x všude nastaveno ● příklad: umask→ výpis aktuálního umask umask 022→ soubor bude mít 644, adresář 755 umask 006→ soubor bude mít 661, adresář 771

27 Další oprávnění ● speciální oprávnění ● výjimky ze standardního chování systému ● řeší situace, které tradiční oprávnění řešit neumí ● standardní součást unixových systémů ● ACL (dle POSIXu) ● rozšíření standardních oprávnění ● trojice ( rwx ) pro další uživatele i skupiny – MS Windows vlastní ACL (jemnější) – Linux ACL vážně až dnes (v RHEL 4 od roku 2005) – Samba oprávnění mapuje (redukuje), připravuje vlastní

28 ACL – Access List ● rozšíření tradičních unixových oprávnění ● ale i na složitější požadavky stačí tradiční + speciální ● využívá tradiční trojici oprávnění ( rwx ) ● pomocí ACL může mít objekt další klasická oprávnění pro další jednotlivé uživatele i skupiny ● definováno normou POSIX ● implementace v Linuxu ● existuje dlouho, ale problémy – vyřešeno 2005 ● současné distribuce mají ACL implicitně zapnuto – ACL se dá selektivně aktivovat pro jednotlivé FS

29 getfacl $ ls -ld /home/huzva drwx--x---+ 48 huzva huzva 4096 bře 26 07:37 /home/huzva $ getfacl /home/huzva getfacl: Removing leading '/' from absolute path names # file: home/huzva # owner: huzva # group: huzva user::rwx user:apache:--x group::--x mask::--x other::--- ● slouží pro zjištění ACL (standardní výpis jen „+“) tradiční oprávnění (vlastník) uživatel zapsaný v ACL tradiční oprávnění (skupina) maska práv ACL tradiční oprávnění (ostatní)

30 setfacl ● slouží k nastavení ACL ● setfacl -m u:apache:rw názevsouboru – m → změna nastavení ACL – u – pro uživatelem – maska – g – pro skupinuo – ostatní – x → odebrat konkrétní ACL – b → odebrání všech ACL (zůstanou jen tradiční) ● maska je sjednocením všech oprávnění – tj. uživatelé i skupiny – pokud nějaké chybí, ve výsledku se neuplatní

31 Speciální oprávnění ● tradiční součást unixových systémů ● mění standardní chování systému (s oprávněním) ● SUID bit ● ve výpisu je místo x u práv vlastníka písmeno s ● SGID bit ● ve výpisu je místo x u práv skupiny písmeno s ● sticky bit ● ve výpisu je místo x u práv ostatních písmeno t ● Pozn.: Je-li písmeno velké, překryté oprávnění není přítomno.

32 SUID bit ● standardní chování: ● nový proces přebírá oprávnění od svého rodiče ● na binárce programu je nastaven SUID bit: ● spuštěný proces běží s právy vlastníka binárky ● může to být jakýkoliv uživatel, často ale root – při chybě v SUID programu bezpečnostní problém!!! ● příklad: změna hesla ● soubor /etc/shadow běžný uživatel nepřečte ● program na změnu hesla je SUID root $ ls -l /etc/shadow /usr/bin/passwd -r--------. 1 root root 1753 26. bře 23.16 /etc/shadow -rwsr-xr-x. 1 root root 25464 28. led 17.12 /usr/bin/passwd

33 SGID bit ● podobné jako SUID, ale pro skupinu ● nový proces běží s právy skupiny vlastnící binárku ● příklad: skóre ve hře ● skóre hry je pro všechny uživatele v souboru – hra i uživatelé mohou měnit → dá se fixlovat ● soubor se skóre dáme skupině games – zápis bude možný pouze pro skupinu games (664) ● program se hrou bude SGID games – spuštěná hra skóre zapíše, ale uživatel sám ne $ ls -l /usr/bin/gnomine /var/lib/games/gnomine.Small.scores -r-xr-s--x 1 root games 111784 bře 11 2009 /usr/bin/gnomine -rw-rw-r-- 1 games games 95 bře 17 11:10 /var/lib/games/gnomine.Small.scores

34 Procesy se SUID a SGID bitem ● při spuštění dojde ke specifickému nastavení ● RUID, RGID: na UID uživatele, který proces spustil ● EUID, EGID: nastaveno podle binárky – tj. podle vlastníka (je-li nastaven SUID) a skupiny (SGID) – za normálních okolností EUID=RUID, EGID=RGID ● za běhu lze volat setuid() a setgid() – slouží k dočasné změně EUID – původní hodnoty uloženy do SavedUID, SavedGID – využívají démoni ke zvýšení bezpečnosti privil. procesů ● různé unixové systémy mají drobné odlišnosti – Linux má navíc FSUID, FSGID pro přístup k FS

35 SGID bit pro adresáře ● SGID má speciální význam pro adresář ● založíme-li v adresáři nový objekt, nebude patřit primární skupině uživatele, který ho založil, ale bude patřit skupině, která je SGID v tomto adresáři ● používá se na společné projekty více uživatelů (uživatelé jsou ve stejné skupině) ● kombinujeme s umask ● nastaví-li si uživatel vhodný umask, nebude bránit uživatelům ve stejné skupině v modifikaci souborů, které on sám vytvoří (nebude smazáno právo w)

36 Sticky bit ● problém adresáře /tmp ● všichni do něj mají právo zápisu ● procesy do něj odkládají dočasné soubory ● právo zápisu však je i právem mazat, přejmenovat ● různí uživatelé si tak navzájem mohou škodit ● na adresáři je nastaven sticky bit ● vytváření není nijak omezeno ● mazání a přejmenování může provést jen majitel daného objektu (souboru, adresáře) $ ls -ld /tmp drwxrwxrwt. 88 root root 12288 27. bře 10.38 /tmp

37 Atributy ● nastavení specifických vlastností objektů FS ● interpretuje OS (pro jednotlivé soubory, adresáře) ● v různých systémech různě (Linux, OS/X, BSD, Win) ● společné atributy souborů unixových systémů ● i – immutable → nelze smazat ani změnit obsah ● a – append only → lze jen přidávat (logy) ● další atributy (Linux) – synchronní operace, potlačení atime, nezálohovat, komprimováno, žurnálování dat, bezpečné mazání,... ● příkazy: lsattr, chattr

38 Rozšířené atributy ● „poznámky“ k objektům FS (systému souborů) ● nejsou pevně dány OS nebo FS, typicky: ● název=hodnota → celé zapsáno jako řetězec ● systémové rozšířené atributy – např. definice nastavení pro pro SELinux ● uživatelské rozšířené atributy – využívají aplikace (kontrolní součet souboru, asociovaná aplikace, použité kódování,...) ● typicky omezená velikost, sdruženo s metadaty – v extrémním případě až do max. velikosti souboru (fork)

39 SELinux ● doplňující zabezpečení pro Linux ● implementuje MAC (Mandatory Access Control) – přesněji RBAC → Role-based Access Control – na souborech jsou rozšířené atributy – definované role pro různé skupiny programů – → i proces běžící jako root může být omezen ● vytvořila NSA v USA (Národní úřad pro bezpečnost) – používá Fedora a klony RHEL (CentOS apod.) ● 3 režimy: – disabled, permissive (jen hlášení, bez omezení), enabled

40 AppArmor ● doplňující zabezpečení pro Linux ● implementuje MAC (jako SELinux) – nevyužívá rozšířené atributy → cesta k binárce ● vytvořila firma Novell – používáno v SLES, openSUSE, Ubuntu ● jednodušší správa – není tak komplexní, jako SELinux

41 chroot ● systémové volání jádra OS ● běžícímu procesu je změněn kořen FS – kořen je „posunut“ do zvoleného adresáře – vzniká problém s přístupem k dynamickým knihovnám ● dyn. knihovny musí být nakopírovány do chroot prostředí ● proces se „nedostane“ mimo chroot – neplatí pro uživatele root – chroot není zabezpečením, spíše ochranou proti chybě ● například nemožnost smazat soubory mimo chroot ● v unixových systémech velmi oblíbené

42 Sandbox ● bezpečnostní technika ● implementováno v jádře OS ● proces se může „odstřihnout“ od funkcí OS – typicky si proces vybere, které funkce znepřístupnit ● vybraná systémová volání přestanou fungovat ● v případě funkčního exploitu nejsou další akce povoleny – velmi dobře implementováno ve Windows ● bohužel to zcela využívá jen prohlížeč Google Chrome – v unixových OS neexistuje ucelená implementace ● sandbox lze vytvořit např. pomocí SELinuxu


Stáhnout ppt "UNIX 3. Uživatelé a oprávnění © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● uživatelé, /etc/passwd,"

Podobné prezentace


Reklamy Google