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

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

Počítačová bezpečnost 2. Bezpečnost v OS © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● jádro,

Podobné prezentace


Prezentace na téma: "Počítačová bezpečnost 2. Bezpečnost v OS © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● jádro,"— Transkript prezentace:

1 Počítačová bezpečnost 2. Bezpečnost v OS © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/ Obsah: ● jádro, procesy, thready, knihovny ● privilegovaný režim, systémové volání, změna kontextu ● multitasking, ochrana paměti, víceuživatelský systém ● oprávnění (DAC, MAC), chroot, sandbox 15.12.2010

2 Jádro operačního systému ● jádro se zavádí při startu počítače ● přebírá kontrolu nad počítačem – vynucuje si „poslušnost“ nad procesy i uživateli – běžné postupy typicky bez problémů – problémy v komplikovaných případech ● souběh, vyzrazení již nepoužívaných dat, ladící režim atp. ● prostředky procesům přiděluje a hlavně odebírá: – preemptivně → lze odebrat násilím – nepreemptivně → proces musí sám prostředku vzdát ● zajišťuje multitasking ● zajišťuje víceuživatelské prostředí

3 Typy jader ● monolitické jádro ● vše v jednom adresním prostoru ● nelze vynutit poslušnost jednotlivých komponent ● mikrojádro ● jádro je malé, doplňky v procesech ● efektivní izolace → lze vyšší bezpečnost

4 Vznik procesu ● algoritmus ● zápis postupu pro vyřešení úlohy ● program ● zápis algoritmu v nějakém programovacím jazyce ● proces ● spuštěný program ● thread (vlákno) ● odlehčený proces (proces má jedno či více vláken)

5 Proces ● spuštěný program ● stejný program může být spuštěn vícekrát ● každý má svoje vlastní data – například dva prohlížeče, v každém jiná webová stránka ● jádro registruje popis každého procesu v PCB – Process Control Block – číslo procesu, vlastník, priorita, otevřené soubory,... ● proces používá knihovny – knihovna je v paměti součástí procesu – o použití knihoven rozhoduje programátor

6 Thread (vlákno) ● odlehčený proces ● nižší režie při změně kontextu ( střídání procesů na CPU ) – sdílí společný paměťový prostor – efektivnější sdílení dat, synchronizace ● za cenu komplikací (tzv. souběh) – stejná oprávnění, otevřené soubory, proměnné prostředí,... – rychlé vytváření a rušení vlákna ● bezpečnostní rizika – nežádoucí interakce mezi thready (sdílená paměť) – historie Internet Exloreru: ● okna samostatné procesy → snížení režie a zvýšení rychlosti použitím threadů → kvůli bezpečnosti přechod na procesy (nebezpečný je JavaScript a pluginy – např. Flash)

7 Knihovny ● snaha o opakované použití kódu ● v jazyce C je standardní knihovna (libc) – zjednodušuje jazyk, standardizuje šířeji jazyk ● knihoven jsou tisíce (její vytvoření je jednoduché) ● knihovna může způsobit problém ● program je bezchybný, ale volá knihovní funkci... ● překrytí funkce u dynamické knihovny ● dva základní typy knihoven: ● statické ● dynamické

8 Překrytí knihovní funkce ● vlastnost dynamického linkeru ● vyvolán zavaděčem (část jádra) – při spuštění dynamicky linkovaného programu ● při spuštění je nahrána specifická knihovna – funkce této knihovny překryjí pozdější stejnojmenné – lze použít pro opravu vadné funkce v knihovně – využíváno též ladícími nástroji ● např. pro trasování, ale i různé „antiviry“ ● problém u SUID binárek v unixových systémech – je-li na binárce SUID, je LD_PRELOAD ignorováno – mohlo by být využito pro elevaci oprávnění

9 Typy knihoven 1) statické knihovny ● soubory s příponou.a ● knihovna je linkerem „přilepena“ k programu 2) dynamické knihovny ● soubory s příponou.so (ve Windows.DLL ) ● program obsahuje jen seznam knihoven a funkcí ● při spuštění musí loader zavést též knihovnu – knihovna může být v paměti sdílena mezi více procesy – sdílení může být riziko (pluginy v tabech prohlížeče) – rizikem může být i loader (podvržení knihovny)

10 Privilegovaný režim ● některé instrukce jsou nebezpečné ● ohrožení stability nebo bezpečnosti počítače – instrukce pro I/O, řízení procesoru, ochrana paměti... ● procesor má 2 stavy (nebo více) – tzv. ring0, 1... ● privilegovaný – lze provést jakoukoliv instrukci – v tomto stavu běží jádro operačního systému ● neprivilegovaný – pokus o použití privilegované instrukce → vnitřní přerušení ● program je obratem jádrem nekompromisně ukončen – v tomto stavu běží všechny uživatelské programy

11 Systémové volání ● proces žádá jádro o provedení operace ● jde o změnu (přepnutí) kontextu – z uživatelského do jaderného prostoru ● proces je v neprivilegovaném stavu – vstup do jádra je možný jen softwarovým přerušením ● těch je omezený počet a je snadné je všechny ohlídat ● jádro je v privilegovaném stavu – jádro může pro proces provést nedostupné operace – jádro nejprve zkontroluje oprávnění procesu ● pak teprve provede požadovanou operaci ● například komunikace s I/O (zápis na port, do souboru...)

12 Změna kontextu ● anglicky: context switch ● kontext ● veškeré běhové informace o procesu ● PCB, stav procesoru ● s kontextem manipuluje jádro OS (scheduler) ● při střídání procesů na CPU (multitasking) ● stovky až tisíce změn za vteřinu → vyšší režie ● uložení kontextu (do RAM) → přerušení procesu ● obnovení kontextu (z RAM) → obnovení běhu

13 OS podle schopností

14 Víceúlohový systém ● lepší využití HW počítače ● úloha je zablokovaná, v tomto stavu čeká na dokončení I/O operace (tisk, síť, pevný disk) ● úloha záměrně spí (vstup od uživatele, jiná událost) ● potřeba oddělení jednotlivých úloh a jádra OS ● HW podpora v CPU (ochrana paměti, privilegovaný režim) ● střídání úloh při vykonávání procesorem ● tzv. multitasking (v jádře OS ho zajišťuje scheduler) ● potřebuje reentrantní jádro OS ● více úloh volá jádro zároveň (DOS neumožňoval)

15 Multitasking ● v počítači více (spuštěných) procesů zároveň ● pohodlí uživatele → paralelní zpracování – DOS neuměl → jednodušší jádro OS ● v počítači více (běžících) procesů, než CPU → pseudoparalelismus ● procesy se musí o čas procesoru rozdělit ● střídání procesů na CPU → změna kontextu ● zajišťuje jádro OS ● dobrovolné → nepreemptivní ● vynucené → preemptivní

16 Využití multitaskingu ● multiprogramování ● programátor předpokládá současný běh procesů ● obstarává ho multitasking → systémové řešení ● paralelní výpočty → potřeba vzájemné komunikace ● programování síťových serverů ● problémy ● zajištění atomických operací → semafory, RCU atp. ● synchronizace výpočtu ve více procesech ● nežádoucí interakce programů → ochrana paměti

17 Jádro a multitasking ● nepreemptivní multitasking ● běžící úloha se musí procesu sama vzdát – úloha proto periodicky volá speciální službu jádra ● například Windows pro DOS (tj. včetně Win98) ● preemptivní multitasking ● jádro využije časovač → časové kvantum procesu – po vyčerpání času vyvolá časovač přerušení – proces je přerušen a jeho kontext uložen ● jádro privilegovaný režim, proces je v neprivilegovaném režimu – scheduler vybere z fronty proces, který poběží ● např. řada Windows NT, Linux, Mac OS X atd.

18 Ochrana paměti ● jádro při multitaskingu zajišťuje ochranu paměti ● nutná podpora v procesoru – typicky metoda zámků a klíčů, též segmenty (mezní reg.) ● každý proces má vlastní virtuální adresní prostor – využívání stránkování nebo segmentace ● některé úseky paměti jsou mezi procesy sdíleny – sdílené knihovny ● kód knihovny je pouze pro čtení ● má-li knihovna vlastní data, má každý proces vlastní instanci – sdílená paměť mezi procesy (řídí programátor) ● pro čtení i zápis (při zápisu pozor na souběh)

19 Řízení přístupu ● nutné pro víceuživatelský systém ● nutné zavedení oprávnění (metod řízení přístupu) – slouží k odlišení uživatelů – vyjádření možnosti přístupu ke zdrojům počítače ● zdrojem jsou typicky soubory, adresáře ● ale i přístup k síti, I/O zařízením atd. ● zavedení pozice správce (root, administrátor) – správce řídí ostatní uživatele ● dvě hlavní metody řízení přístupu: ● DAC – přístup na základě vlastnictví či skupin ● MAC – přístup na základě existence atributů

20 DAC ● Discretionary access control ● DAC je definováno podle TCSEC na úroveň C – přístup ponechaný na „volném uvážení“ ● ve smyslu možnosti předání oprávnění na jiný objekt ● tj. vlastník může nastavovat oprávnění pro „své“ objekty 1) implementace s vlastníkem (a skupinami) – potomek přebírá oprávnění od svého rodiče – objekt má vlastníka, který řídí přístup k objektům 2) implementace se způsobilostmi – tzv. „capabilities“, lze je též předávat (ne nutně vždy) – program má způsobilost k provedení operace ● Fedora 15 bude nahrazovat SUID aplikace pomocí způsobilostí

21 Implementace s vlastníkem ● v unixových systémech, Windows NT,... ● systém definuje uživatele a skupiny – každý uživatel má své UID a GID (těch může být více) – spuštěné procesy přebírají UID a GID svého vlastníka – potomek procesu dědí oprávnění svého rodiče ● objekty mají definovány vlastníka a skupinu – objektem je míněn adresář nebo soubor – oprávnění pro vlastníka (UID), skupinu (GID), ostatní ● přístup procesu k objektům na základě UID, GID – výjimky řeší speciální oprávnění (SUID, SGID a sticky bit)

22 MAC ● Mandatory access control ● MAC je definováno podle TCSEC na úroveň B – subjekty i objekty mají definovány bezpečnostní atributy ● subjekt je typicky proces (thread) ● objektem může být soubor, adresář, síťový port, sdílená paměť... – při přístupu subjektu k objektu jsou atributy porovnány ● porovnání provádí centrálně jádro operačního systému – vlastník nemůže atributy měnit jako u MAC ● umožňuje definovat garantované politiky pro přístup ke zdrojům

23 Využití MAC 1) pro systémy s MLS (Multilevel security) ● definováno podle TCSEC, Common Criteria ● zpracovávání dat s různou úrovní zabezpečení – dokumenty s různým stupněm utajení ● např. důvěrné, tajné, přísně tajné – lidé s různým stupněm pověření ● vyšší pověření může poskytnout přístup pro nižší pověření ● při přístupu lze data klasifikovaná na vyšší stupeň odstranit 2) jako doplňky ke klasickému DAC: ● Linux: SELinux, AppArmor ● Windows Vista: Mandatory Integrity Control

24 Správce systému ● jeden správce ● unixové systémy, Windows NT ● více správců ● OpenVMS

25 chroot ● unixové systémové volání ● provede změnu kořenového adresáře – vytváří tzv. chroot jail (vězení) – může jen root (možnost podvržení /etc/passwd atp.) ● používá se pro „zvýšení bezpečnosti“ – není-li provedeno správně, lze z něj uniknout – při chybě v jádře nebo programu ztrácí význam – spíše ochrana proti běžným chybám ● například smazání souboru omylem, čtení cizího souboru... ● nebylo původně jako bezpečnostní prvek míněno (!) – pro bezpečné uzamčení je určen sandbox

26 Sandbox ● uzavření programu do „bezpečné obálky“ ● při návrhu je cíleno bezpečnostní hledisko – virtualizace je speciální (hardwarový) případ sandboxu ● jádro poskytuje různé úrovně uzavření programu – omezení přístupu k souborovému systému – omezení přístupu k systémovým voláním jádra – omezení přístupu k dalším prostředkům (paměť, síť) ● oblíbené pro „nedůvěryhodné programy“ – webový prohlížeč Chrome využívá sandbox – pluginy uvnitř prohlížeče vyžívají sandbox – možné využít ale i pro vývoj software apod.


Stáhnout ppt "Počítačová bezpečnost 2. Bezpečnost v OS © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● jádro,"

Podobné prezentace


Reklamy Google