![Скачать презентацию Bezpečnosť operačného systému Unix Doc Ing Ladislav Hudec Скачать презентацию Bezpečnosť operačného systému Unix Doc Ing Ladislav Hudec](https://present5.com/wp-content/plugins/kama-clic-counter/icons/ppt.jpg)
776f7b7e1a54141a72549dd247349060.ppt
- Количество слайдов: 41
Bezpečnosť operačného systému Unix Doc. Ing. Ladislav Hudec, CSc.
Riadenie prístupu k objektom q Ochrana všeobecných objektov v počítačovom systéme. Existuje niekoľko komplementárnych cieľov v ochrane objektov. o o o Kontrola každého prístupu – ak subjekt mal prístup k objektu, neznamená to, že ho bude mať stále. Je potrebné zariadiť, aby po zmene prístupových práv subjektu, sa táto zmena uplatnila okamžite. Povolenie najnižších privilégií – subjekt by mal mať prístup k najmenšiemu počtu objektov potrebných na vykonanie úlohy. Nepovolením prístupu k nepotrebným objektom sa chránime proti slabinám v bezpečnosti v prípade, že časť bezpečnostných mechanizmov by zlyhala. Verifikácia akceptovateľného použitia – schopnosť pristúpiť je rozhodnutie binárne áno-nie. Ďalším záujmom môže byť kontrola, či aktivita subjektu nad objektom je vhodná. Napríklad prístup procesu k údajovej štruktúre zásobník. 2
Bezpečnostné charakteristiky štandardných operačných systémov q Základné úlohy operačného systému počítača: o o q Správa prostriedkov počítačového systému – procesor, hlavná pamäť, diskový priestor, vstupno – výstupné zariadenia, atď. Poskytovanie služieb používateľom – súborový systém, ovládače vstupno – výstupných zariadení, sieťová komunikácia, editori, systémové hodiny, atď. Bezpečnostné charakteristiky štandardných operačných systémov o o o Autentifikácia používateľa – OS musí identifikovať a autentifikovať každého používateľa a až potom môže umožniť prístup k svojim zdrojom podľa jeho autorizácie Ochrana pamäti – každý používateľský program sa musí vykonávať v časti pamäti chránenej proti neoprávneným prístupom Riadenie prístupu k súborom a vstupno – výstupným zariadeniam – OS chráni systémové a používateľské súbory pred neoprávnenými prístupmi, tak isto chráni aj vstupno – výstupné zariadenia Alokácia a riadenie prístupu k všeobecným objektom – prideľovanie procesora, hlavnej pamäti, synchronizačné mechanizmy, konštrukcie na podporu súbežného spracovania Presadzovanie zdieľania (spoločného používania) – zdroje musia byť prístupné používateľovi podľa potreby. Zdieľanie prináša potrebu garantovania integrity a konzistencie. Garancia férových služieb – všetci používatelia očakávajú využívanie procesora a ostatných služieb tak, že každý z nich bude obslúžený (bez starvácie). Zabezpečujú to 3 systémové hodiny a plánovacie disciplíny.
Bezpečnostné charakteristiky štandardných operačných systémov q Bezpečnostné charakteristiky štandardných operačných systémov o o Medziprocesová komunikácia a synchronizácia – vykonávajúce sa procesy potrebujú medzi sebou komunikovať alebo synchronizovať prístup k spoločným prostriedkom. Tieto služby zabezpečuje operačný systém a slúži ako most medzi procesmi. Ochrana bezpečnostných údajov operačného systému – operačný systém musí spravovať údaje, prostredníctvom ktorých presadzuje bezpečnosť. Ak by tieto údaje neboli chránené proti neoprávnenému prístupu (čítanie, zápis, zrušenie), potom OS by nedokázal presadzovať bezpečnosť. 4
Bezpečnostné charakteristiky štandardných operačných systémov q V čom spočíva dôveryhodnosť operačného systému? Jeho podstata je v rešpektovaní pravidiel špecifikácie, návrhu a implementácie o o Bezpečnostná politika – súbor bezpečnostných požiadaviek ako množina dobre definovaných, konzistentných a implementovateľných pravidiel. Pravidlá musia byť vyjadrené jasne a nedvojzmyselne. Bezpečnostný model – predtým ako návrhár začne vytvárať dôveryhodný OS musí byť presvedčený, že navrhnutý systém bude splňovať jeho požiadavky. Vytvorí si model prostredia, ktoré bude chránené a študuje rôzne spôsoby na zaistenie bezpečnosti. Model je v skutočnosti reprezentácia bezpečnostnej politiky. Návrh – po vybratí bezpečnostného modelu si musí návrhár vybrať prostriedky na implementáciu modelu Dôvera – OS hrá centrálnu úlohu pri bezpečnosti. Návrhár musí mať nástroje, aby sa ubezpečil, že OS splňuje jeho požiadavky. Dôvera je založená na dvoch aspektoch: v v q Vlastnostiach OS – OS má všetky funkcionality potrebné na zaistenie očakávanej bezpečnostnej politiky Záruky – že OS bol implementovaný takým spôsobom, že máme dôveru zaistenia bezpečnostnej politiky Bolo vyvinutých viacero bezpečných (aj dôveryhodných? ) OS, viacero sa stále ešte vyvíja. Niektoré bezpečné OS boli originálne navrhnuté pre bezpečnosť, iným 5 boli iba dorábané bezpečnostné charakteristiky dodatočne.
Bezpečnostné charakteristiky štandardných operačných systémov q Bezpečnostné charakteristiky dôveryhodných operačných systémov o o o Identifikácia a autentifikácia používateľa – dôveryhodný OS vyžaduje I&A všetkých používateľov Špecifikovanie politiky riadenia prístupu – dôveryhodný OS musí mať špecifikovanú politiku riadenia prístupu, napríklad MAC alebo DAC. Principiálne obe politiky môžu byť aplikované súčasne, MAC má potom prednosť pred DAC (pre DAC sú oprávnené iba tie subjekty, ktoré vyhovujú MAC). Ochrana opakovaného použitia prostriedku – pred opakovaným použitím prostriedku je nevyhnutné z prostriedku odstrániť všetky údaje, ktoré by mohol nový používateľ (útočník) vyčítať a zneužiť. Napríklad pri alokácii diskového priestoru pre nový súbor môže tento alokovaný priestor obsahovať údaje zo starého nie bezpečne zrušeného súboru. Podobne je to s hlavnou pamäťou, registrami procesora, cache, atď. Úplné sprostredkovanie – aby politika riadenia prístupu fungovala efektívne, je nevyhnutné, aby všetky prístupy boli riadené. Je nedostatočné riadiť prístup iba k súborom, keď útočník získa prístup cez pamäť alebo vonkajší port alebo sieť alebo skrytý kanál. Dôveryhodná cesta – OS musí mať spôsob ako zaistiť, že sa používajú nespochybniteľné zdroje. Napríklad skutočný prihlasovací modul a nie podvrhnutý Trójsky kôň na odchytávanie mena a hesla používateľa. 6
Bezpečnostné charakteristiky štandardných operačných systémov q Bezpečnostné charakteristiky dôveryhodných operačných systémov o o o Účtovateľnosť a audit – bezpečnostne dôležité akcie môžu byť jednoduché (prístup k súboru) ale aj zložitejšie (zmena v centrálnej databáze riadenia prístupu). Účtovateľnosť vyjadruje schopnosť systému sledovať bezpečnostne dôležité udalosti, ktoré v systéme nastali a identifikovať subjekt, ktorý tieto udalosti spôsobil a je za ne zodpovedný. Záznamom týchto udalostí sa hovorí auditné záznamy. Auditné záznamy musia byť chránené. Redukcia auditného záznamu – centrálny problém auditných záznamov je jeho objem a analýza. Jedným extrémom je, že do auditného záznamu sa ukladajú informácie o všetkých elementárnych aktivitách subjektov, to však vedie k enormnému objemu záznamu. Vo väčšine dôveryhodných OS je auditované napríklad iba prvý prístup k súboru (otvorenie) a zatvorenie súboru alebo podobných objektov. Problém analýzy auditného záznamu je „hľadanie ihly v kope sena“. Niektoré dôveryhodné OS vykonávajú redukciu auditných záznamov. Detekcia prieniku – je založená na sledovaní abnormálnych vzorov vo využívaní objektov. Problém je stanoviť „čo je abnormálny vzor? “. 7
Bezpečnostná architektúra Unix q Aj keď väčšina operačných systémov má bezpečnostnú architektúru, ktorá vysvetľuje, ako je presadzovaná bezpečnosť a kde sa uchovávajú bezpečnostne relevantné údaje, Unix má históriu divergujúcich a konvergujúcich verzií. o o o Bezpečnostné črty – boli do Unixu zabudovávané, keď taká potreba vznikla (bezpečnosť nebola pôvodným návrhovým cieľom). Unix – bol pôvodne navrhnutý pre malé viac používateľské počítače v sieťovom prostredí a neskoršie bol škálovaný pre komerčné servery a ešte neskoršie bol škálovaný pre PC. Unix – bol podobne ako internet vyvinutý pre priateľské prostredie (používatelia bez zlých úmyslov!) ako sú výskumné laboratóriá a univerzity a bezpečnostné mechanizmy boli slabé. Ako sa Unix vyvíjal, boli doňho vstavané nové bezpečnostné opatrenia, ktoré posilnili existujúce opatrenia. Pri vstavaní nových bezpečnostných opatrení - návrhári sa úskostlivo snažili minimálne zasahovať do existujúcej štruktúry Unixu. Filozofia návrhu Unixu - predpokladá, že bezpečnosť je spravovaná skúseným administrátorom a nie bežným používateľom. Preto nástroje na správu bezpečnosti sú často vo forme skriptov a príkazových riadkov. 8
Identita používateľa a identita skupiny q Identita používateľa (UID) a identita skupiny (GID) sú 16 -bitové čísla. Niektoré hodnoty UID majú špeciálny význam (môžu sa meniť medzi rôznymi systémami), ale superpoužívateľ (root) má vždy hodnotu 0. Príklady UID: o q -2 : nobody, 0 : root, 1 : deamon, 2 : uucp, 3 : bin, 4 : games, 9 : audit. Informácie o identitách používateľov a identitách skupín sú uložené v používateľských kontách a v domovských adresároch o Používateľské kontá – sú uložené v súbore /etc/passwd. Položky tohto súboru majú formát user name: password: UID: GID: ID string: home directory: login shell v User name – je reťazec dlhý najviac 8 znakov. Identifikuje používateľa prihlásení, ale sa nepoužíva pri riadení prístupu. Unix nerozlišuje medzi používateľmi s rovnakými UID. v v Home directory – špecifikuje domovský adresár používateľa v o ID string – obsahuje plné meno používateľa v o Password – je uložené zašifrovane (hašovacia hodnota) Shell – dostupný Unix shell používateľovi po úspešnom prihlásení Ďalšie používateľsky špecifické nastavenia sú definované v súbore. profile v používateľovom domovskom adresári. Aktivity vykonané systémom po nalogovaní používateľa sú špecifikované v súbore /etc/profile Zobrazenie súboru passwd napríklad príkazom cat /etc/passwd alebo less /etc/passwd zobrazí položky ako dieter: RT. Qs. EEsx. T 92: 10026: 53: Dieter Gollmann: /home/staff/dieter: /usr/local/bin/bash 9
Identita používateľa a identita skupiny q Superuser (root) - v každom unixovom systéme je používateľ so špeciálnymi privilégiami. o o o Superuser (superpoužívateľ) má UID 0 a zvyčajne sa mu hovorí root. Konto root je používané operačným systémom na základné úlohy ako je login, zaznamenanie auditného logu alebo prístup k I/O zariadeniam. Pre superpoužívateľa sú vypnuté všetky bezpečnostné kontroly a superpoužívateľ môže v systéme vykonať skoro všetko. Napríklad superpoužívateľ sa môže stať lubovoľným iným používateľom, môže zmeniť systémové hodiny. Superpoužívateľ je schopný nájsť cestu na obídenie prípadných malých obmedzení, ktoré mu boli nastavené. Napríklad superpoužívateľ nemôže zapísať do súborového systému, ktorý je namontovaný ako read only, ale môže ho odmontovať a opätovne namontovať ako writable. Superpoužívateľ nemôže odhaliť heslo, pretože je uložené iba jeho hašovaná hodnota. 10
Identita používateľa a identita skupiny q Skupiny - používatelia patria do jednej alebo viacerých skupín. Zaraďovanie používateľov do skupín je pohodlný spôsob na rozhodovanie v riadení prístupu. o o o Je možné všetkých používateľov, ktorí majú prístup k emailu dať do skupiny mail, prípadne všetkých operátorov dať do skupiny operator. Každý používateľ patrí do primary group (primárnej skupiny). GID primárnej skupiny je uložené v súbore /etc/passwd Súbor /etc/group obsahuje zoznam všetkých skupín. Položky v súbore majú formát group name: group password: GID: list of users. Napríklad položka infosecwww: *: 209: chez, af Vo vyššie uvedenom prípade má skupina infosecwww zablokované heslo, identita skupiny je GID 209 a má dvoch členov chez a af. Existujú špeciálne skupiny GID: 0 : system (wheel), 1 : deamon, 2 : uucp, 3 : mem, 4 : bin, 7 : terminal o V Unixe system V môže byť používateľ v danom čase iba v jednej skupine. Aktuálna skupina je zmenená príkazom newgrp. Používatelia sa môžu voľne nastaviť do skupiny v ktorej sú členmi. Ak sa používateľ snaží nastaviť do skupiny, v ktorej nie je členom, po zadaní príkazu newgrp sa vyžiada heslo a udelí sa dočasné členstvo v prípade, že používateľ vložil správne heslo. 11
Subjekty q Subjekty – sú procesy o Každý proces je identifikovaný PID (process ID) o Nové procesy sú vytvárané príkazmi exec alebo fork o S každým procesom je zviazané reálne UID/GID a efektívne UID/GID o o Reálne UID je zdedené z rodičovského procesu, typicky je to UID nalogovaného používateľa Efektívne UID je zdedené z rodičovského procesu alebo je zdedené zo súboru, ktorý sa práve vykonáva Proces Reálne UID Efektívne /bin/login root Používateľ dieter sa naloguje, proces logon verifikuje username a heslo a mení UID a GID /bin/login dieter Proces logon vykonáva shell z loginu používateľa /bin/bash dieter Zo shellu používateľ vykonáva príkaz ls /bin/ls dieter Používateľ vykonáva príkaz su na štart nového shellu ako root /bin/bash dieter root Reálne GID Efektívne system staff staff system 12
Subjekty q Login a heslo – v Unixe sú používatelia identifikovaní pomocou username a autentizovaní heslami o o o Keď sa systém zavedie (boot) login proces je odštartovaný ako root Keď sa do systému prihlási používateľ, login proces verifikuje username a heslo. Ak je verifikácia úspešná, UID/GID sa zmení podľa používateľa a vykonáva sa shell z používateľovho loginu. Login roota môže byť obmedzený na terminály vymenované v /etc/ttys. Ostatné nalogovanie používateľa je zaznamenané v /usr/adm/lastlog a môže byť zobrazené, napríklad príkazom finger. V mnohých systémoch Unix je dĺžka hesla obmedzená na 8 znakov. Systém obsahuje nástroj na kontrolu kvalitného hesla. Heslo je hašované algoritmom crypt(3). Tento algoritmus opakuje 25 krát málo modifikovaný DES algoritmus, pričom dátový blok sú samé 0 a heslo je šifrovací kľúč. Hašovacie hodnoty sú uložené v súbore /etc/passwd. Keď pole hesla je prázdne, používateľ nemusí pri logine zadávať heslo. Keď pole hesla začína * (asterisk), používateľ sa nedokáže nalogovať, pretože asterisk nemôže byť hašovacou hodnotou žiadneho hesla. (Toto je bežná metóda zablokovania používateľovho konta. ) Heslá sa menia príkazom passwd. Používateľ je vyzvaný zadať staré heslo (ochrana pred zmenou hesla pri neobsadenom termináli). Pretože sa text hesla na termináli nezobrazuje, pre istotu je potrebné napísať nové heslo dva razy (odstránenie prípadného preklepu pri prvom zadávaní nového hesla). Po zmene hesla sa tento efekt prejaví pri novom logine alebo pri vykonaní príkazu su (set user). 13
Subjekty q Tieňový súbor hesiel – Shadow Password File o o Bezpečnejšie verzie Unix ponúkajú ďalšie opatrenia na bezpečnosť hesiel. Súbor etc/passwd je čitateľný pre other, pretože obsahuje údaje používateľských kont, ktoré sú potrebné iným programom. Útočník si môže skopírovať súbor hesiel a v režime off-line môže skúšať slovníkové útoky. Aby sa odstránila táto zraniteľnosť, sú heslá uložené v tieňovom súbore hesiel /. secure/etc/passwd a tento súbor je prístupný iba rootovi. Tento súbor môže byť využitý na bezpečnostný mechanizmus „stárnutia hesla“ a po expirácii hesla k zablokovaniu konta. Položka v tieňovom súbore hesiel obsahuje: v v Heslo v Dátum ostatnej zmeny v Minimálny počet dní medzi zmenami hesla v Maximálny počet dní platnosti hesla v Koľko dní dopredu je používateľ upozornený na expiráciu hesla v Počet dní, počas ktorých môže byť používateľ neaktívny v Dátum, po ktorom nemôže byť login viac použitý v o Username Rezervované Solenie hesla je ďalším bezpečnostným mechanizmom na spomalenie slovníkových útokov. Soľ je 12 bitová hodnota, ktorá sa pridáva k vlastnému heslu. Soľ sa ukladá v otvorenom tvare. 14
Objekty q Objekty v riadení prístupu predstavujú súbory, adresáre, pamäťové zariadenia a I/O zariadenia o o q Pre účely riadenia prístupu je so všetkými objektmi zaobchádzané rovnako so zdrojmi. Zdroje sú organizované v súborovom systéme do stromovej štruktúry. Každý súborový záznam v adresári je ukazovateľom do údajovej štruktúry, ktorá sa nazýva inode. o Nižšie je uvedený zoznam polí, ktoré sú relevantné pre riadenie prístupu. v mode – typ súboru a prístupové práva v uid – používateľ vlastniaci súbor v gid – skupina vlastniaca súbor v atime – doba prístupu v mtime – doba modifikácie v itime – doba modifikácie inode v block count – veľkosť súboru v o - fyzické umiestnenie. Každý adresár obsahuje ukazovateľ na seba (súbor „. “) a ukazovateľ na svoj rodičovský adresár (súbor „. . “). o Každý súbor má svojho vlastníka, zvyčajne používateľa, ktorý súbor vytvoril. o Každý súbor patrí do skupiny. 15
Objekty o o V závislosti na verzii Unix, novovytvorený súbor patrí do skupiny svojho tvorcu alebo do skupiny adresára. Predtým než sa rozoberú polia v inode, je možné analyzovať adresár príkazom ls –l a získať výpis –rw-r–r– 1 diego staff 1617 Oct 28 11: 01 adcryp. tex prípadne výpis drwx- - - 2 diego staff 512 Oct 25 17: 44 ads/. Tieto výpisy obsahujú niektoré informácie, ktoré hľadáme: v v v Prvý znak udáva typ súboru: „-“ indikuje súbor, „d“ indikuje adresár, „b“ indikuje súbor blokového zariadenia a „c“ indikuje súbor znakového zariadenia Ďalších 9 znakov udáva súborové oprávnenia (uvedie sa ďalej) Nasledujúce číselné pole je linkové počítadlo (link counter), napočítavajúce počet linkov (ukazovateľov) na súbor v Ďalšie dve polia sú mená vlastníka súboru a skupiny súboru v Potom nasleduje veľkosť súboru v bajtoch v v o Čas a dátum je mtime, čas ostatnej modifikácie. Príkaz ls –l zobrazuje atime, čas ostatného prístupu. Príkaz ls –lc zobrazuje itime, čas ostatnej modifikácie inode. Posledným poľom je meno súboru. Znak „/“ po mene ads indikuje adresár. Meno súboru je uložené v adresári a nie v inode. Súborové oprávnenia sú zoskupené do troch trojíc, ktoré definujú prístup čítania (read), zápisu (write) a vykonania (execute) pre vlastníka (owner), skupinu (group) a ostatných (other alebo world). Znak „-“ indikuje, že právo nebolo pridelené. To znamená, že v v rw-r- - dáva vlastníkovi oprávnenia čítania a zápisu, skupine a ostatným oprávnenia čítania rwx- - - dáva vlastníkovi oprávnenia čítania, zápisu a vykonania a žiadne oprávnenia skupine alebo ostatným 16
Objekty o Súborové oprávnenia v Unixe sú tiež špecifikované oktetovými číslicami tak, že 9 oprávnení je rozdelených na tri skupiny po troch. Každé prístupové právo je binárne vyjadrenie (1 -udelené, 0 -neudelené). Základné oprávnenia vyjadrené oktetovými číslicami sú takéto: v v q 200/020/002 - zápis vlastníkom/skupinou/ostatnými v o 400/040/004 – čítanie vlastníkom/skupinou/ostatnými 100/010/001 – vykonanie vlastníkom/skupinou/ostatnými Súborové oprávnenia vzniknú kombináciou základných súborových oprávnení a teda súčtom ich odpovedajúcich oktetov. Napríklad súborové oprávnenia rw-r- - sa oktetovo vyjadrí číslom 644, oprávnenia rwx- - - sa oktetovo vyjadrí číslom 700. Prednastavené oprávnenia – unixové utility (editori, prekladače) typicky používajú prednastavené oprávnenia 666 pri vytvorení nového súboru a oprávnenia 777 pri vytvorení nového programu o o Tieto oprávnenia môžu byť ďalej nastavené pomocou umask (trojciferný oktet určujúci odobraté právo). umask s hodnotou 777 odoberá všetky oprávnenia, umask s hodnotou 000 nekladie žiadne ďalšie obmedzenia na existujúce oprávnenia. Citlivé prednastavenia umask sú: v v v 022 – všetky oprávnenia pre vlastníka zostávajú, oprávnenie čítania a vykonávania pre skupinu a ostatných 037 - všetky oprávnenia pre vlastníka, oprávnenie čítania pre skupinu zostávajú a žiadne oprávnenia pre ostatných 077 - všetky oprávnenia pre vlastníka zostávajú, žiadne oprávnenie pre skupinu a ostatných 17
Objekty o o Aktuálne oprávnenia sú potom odvodené maskovaním prednastavených oprávnení unixovými utilitami a pomocou umask Vypočítajú sa logickým AND bitov prednastavených oprávnení a inverzných bitov umask. Napríklad: v o o q Prednastavené oprávnenia sú 666 a umask je 077. Potom aktuálne oprávnenia sú 666 AND NOT(077) čo je 600, čo je oprávnenie vlastníka na čítanie a zápis Hodnota umask môže byť zmenená príkazom umask [-S] [mask], kde príznak –S indikuje symbolický režim. Ak mask nie je špecifikované, príkaz vráti aktuálny umask v etc/profile definuje prednastavenú hodnotu v celom systéme. Táto prednastavená hodnota môže byť prepísaná pre jednotlivých používateľov uložením umask do domovských adresárov používateľov. Oprávnenia pre adresáre – každý používateľ má domovský adresár (home directory), napríklad /home/staff/dieter. Podadresáre sa vytvárajú príkazom mkdir. Používateľ musí mať správne súborové oprávnenia pre adresár, aby mohol vložiť súbory alebo podadresáre do adresára o o o Oprávnenie čítania umožňuje používateľovi nájsť súbory v adresári, napríklad vykonaním príkazu ls Oprávnenie zápisu umožňuje používateľovi pridávať súbory a odstraňovať súbory z adresára Oprávnenie vykonania sa vyžaduje pri vytvorení adresára v aktuálnom adresári a na vytvorenie súborov vnútri adresára. Súbor je možné otvoriť, ak je známe, že existuje. Nie je možné použiť príkaz ls na vylistovanie adresára. 18
Objekty q Oprávnenia pre adresáre o o o Takže, aby ste sa dostali do vlastných súborov, potrebujete na adresár oprávnenie vykonania. Aby ste zabránili čítaniu vašich súborov inými používateľmi môžete podľa toho nastaviť oprávnenia prístupu k súborom alebo môžete zakázať prístup do adresára. Na zrušenie súboru potrebuje používateľ na adresár oprávnania zápisu a vykonania. Nepotrebuje žiadne oprávnenie na samotný súbor (aj keď patrí inému používateľovi). Pozostatkom zo starších verzií Unixu je sticky bit. Pôvodným účelom tohto bitu bolo zabezpečiť, aby kódový segment programu po ukončení programu zostal vo swapovacom priestore pamäti (a nevracal sa späť do virtuálnej pamäti). Systém tak zabránil častému prenosu programového kódu často používaného programu z virtuálnej pamäti do fyzickej pamäti. Dnes sa sticky bit používa na obmedzenie práva na zrušenie súboru. Napríklad rady úloh sú často zapisovateľné ostatnými, takže ktokoľvek môže do rady pridať súbor. Takisto v tomto prípade môže byť ktokoľvek schopný aj súbor zrušiť. Keď adresár rady úloh má nastavený sticky bit, potom súbor z rady úloh môže byť odstránený alebo premenovaný iba vlastníkom súboru, vlastníkom adresára a musí zapísať oprávnenie pre adresár, alebo superpoužívateľom. Keď sa na adresár s nastaveným sticky bitom aplikuje príkaz ls –l, oprávnenie vykonania pre ostatných bude nastavené na t a nie na x. 19
Riadenie prístupu q Riadenie prístupu – je založené na atribútoch subjektov (procesov) a objektov (zdrojov). o o Štandardný systém Unix spojuje s každým zdrojom tri množiny prístupových práv odpovedajúce vlastníkovi, skupine a ostatným. Superpoužívateľ nepodlieha takémuto spôsobu riadenia prístupu. Unix narába so všetkými zdrojmi rovnakým spôsobom, nerobí rozdiel medzi súbormi a zariadeniami. Bity oprávnenia sú kontrolované v takomto poradí: v v v o Ak uid používateľa indikuje, že je vlastníkom súboru, bity oprávnenia vlastníka rozhodnú, či používateľ prístup dostane Ak používateľ nie je vlastníkom súboru, ale používateľovi gid indikuje, že jeho skupina vlastní súbor, potom bity oprávnenia skupiny rozhodnú, či používateľ prístup dostane Ak používateľ nie je ani vlastník súboru a ani nie je členom skupiny, ktorá vlastní súbor, potom bity oprávnenia ostatní rozhodnú, či používateľ prístup dostane Je možné aj také nastavenie bitov oprávnení, že vlastník súboru má menej prístupových práv k súboru ako ostatní používatelia. Môže sa to zdať ako prekvapenie, ale tento fakt môže slúžiť ako cenné všeobecné ponaučenie. Pre každý mechanizmus riadenia prístupu je nevyhnutné presne poznať, v akom poradí sú vyhodnocované (kontrolované) rôzne prístupové kritériá. 20
Riadenie prístupu q Nastavenie User. ID (SUID) a nastavenie Group. ID (SGID) o o o Opäť sa vraciame k obľúbenej téme riadeného vyvolania (controlled invocation) Na vykonanie istých funkcií operačného systému (napríklad iba root môže počúvať na dôveryhodných portoch 0 -123) potrebuje Unix privilégiá superpoužívateľa, ale používateľom nemôže byť udelený status superpoužívateľa. Ako to urobiť, aby boli splnené obidve požiadavky? Riešením sú programy SUID (set user. ID) a SGID (set group. ID). Tieto programy sa vykonávajú s efektívnym používateľským ID jeho vlastníka (čo štandardne býva superpoužívateľ) alebo s efektívnym skupinovým ID, ktoré dávajú dočasný alebo obmedzený prístup k súborom bežne nedostupným ostatným používateľom. Keď sa aplikuje ls –l na program SUID, zobrazenie vykonávacieho oprávnenia vlastníka bude dané ako s a nie ako x, t. j. –rws- - x 3 root bin 16384 Nov 16 1996 passwd* Keď sa aplikuje ls –l na program SGID, zobrazenie vykonávacieho oprávnenia skupiny bude dané ako s a nie ako x. V oktetovej reprezentácii oprávnení bude pridaný štvrtý oktet pred oprávnenia vlastníka, skupiny a ostatných. Tento oktet indikuje programy SUID a SGID a adresáre s nastaveným sticky bitom. Oktetová reprezentácia oprávnení programov SUID a SGID: v v 2000 – nastav skupinové ID na vykonávanie v o 4000 – nastav používateľove ID na vykonávanie 1000 – nastav sticky bit Ak je root vlastníkom programu SUID (čo je štandardným prípadom), používateľ počas 21 vykonávania tohto programu získa status superpoužívateľa
Riadenie prístupu q Nastavenie User. ID (SUID) a nastavenie Group. ID (SGID) o Dôležité SUID programy sú: v v o o /bin/at – zaslanie batch úlohy v o /bin/login – program login v o /bin/passwd – zmena hesla /bin/su – program zmeny UID V tejto súvislosti je potrebné dôležité bezpečnostné upozornenie. Pretože počas vykonávania programu SUID má používateľ privilégiá vlastníka programu, tento program by mal robiť iba to, čo používateľ zamýšľa urobiť. Ak útočník, ktorý je schopný zmeniť správanie programu SUID, napríklad prerušením jeho činnosti, môže vstupovať do akcií vyžadujúcich status superpoužívateľa nie iba počas útoku, ale môže byť schopný zmeniť systém, t. j. status superpoužívateľa môže získať aj pri iných príležitostiach. To znamená, že ohrozenie programom SUID prichádza z interakcie s používateľom. Preto všetky vstupy od používateľa, vrátane parametrov v riadkových príkazoch a premenných prostredia, musia byť zadávané s mimoriadnou pozornosťou. Zvláštnou nástrahou je opustenie shellu (shell escape), ktoré dáva používateľovi k príkazom shellu s privilégiamu superpoužívateľa. Programy by mali mať status SUID iba vtedy, keď je to absolútne nevyhnutné. Administrátor by často mal kontrolovať integritu programov SUID (zistiť prípadnú modifikáciu útočníkom). 22
Riadenie prístupu q Zmeny oprávnení – súborov sa vykonajú príkazom chmod, ktorý môže vykonať iba vlastník súboru alebo superpoužívateľ. o Príkaz má takýto formát: v v chmod [-f. R] [who]+permission file – pridáva oprávnenia v chmod [-f. R] [who]-permission file – odoberá oprávnenia v o chmod [-f. R] absolute_mode file – definuje hodnotu pre všetky bity oprávnení chmod [-f. R] [who]=permission file – prestavuje oprávnenia podľa špecifikácie V absolútnom režime, súborové oprávnenia sú špecifikované priamo oktetovým číslom. V symbolickom režime sú modifikované aktuálne oprávnenia. Parameter who môže nadobúdať tieto hodnoty: v v o – zmena oprávnení ostatných v o u – zmena oprávnení vlastníka, g – zmena oprávnení skupiny a – zmena všetkých oprávnení Parameter oprávnenie môže nadobúdať tieto hodnoty: v r – oprávnenie čítania, w – oprávnenie zápisu v x – oprávnenie vykonania pre súbory, oprávnenie prehľadávania pre adresáre v X – oprávnenie vykonania iba ak súbor je adresár alebo aspoň jeden vykonávací bit je nastavený v s – oprávnenie set-user-ID alebo set-group-ID v t – oprávnenie uchovania textu (nastavenie sticky bitu) 23
Riadenie prístupu q Zmeny oprávnení o Prepínač –f potláča chybové hlášky, prepínač –R aplikuje rekurzívne špecifikované zmeny do všetkých podadresárov aktuálneho adresára. Oprávnenia SUID programu môžu byť nastavené napríklad takto: v v o chmod 555 file – nulovanie suid príznaku v o chmod u+s file – nastavenie suid príznaku v o chmod 4555 file – nastavenie suid príznaku chmod u-s file – nulovanie suid príznaku Oprávnenia GUID sa nastavujú použitím písmena g namiesto písmena u. Príkaz chown vykonáva zmenu vlastníka súboru, príkaz chgrp vykonáva zmenu skupiny v súbore. Príkaz chown by mohol byť potenciálnym zdrojom nevítaného SUID programu. Používateľ by mohol vytvoriť SUID program a potom zmeniť vlastníka na roota. Aby sa zabránilo takýmto útokom, niektoré verzie Unixu dovoľujú vykonávať príkazy chown iba superpoužívateľovi. Niektoré iné verzie dovuľujú používateľovi použiť chown iba pre ním vlastnené súbory, ktoré majú vypnuté SUID a GUID bit. Podobné opatrenia sa týkajú aj príkazu chgrp. 24
Riadenie prístupu q Obmedzenia v riadení prístupu v Unixe o o o Súbory majú špecifikovaného iba jedného vlastníka a jednu skupinu. Oprávnenia riadia iba prístup čítania, zápisu a vykonania. Ostatné prístupové práva, napríklad právo odstavenia systému alebo právo vytvoriť nového používateľa musia byť mapované do základných súborových prístupových oprávnení. Iné operácie ako čítanie, zápis a vykonanie musia byť ponechané aplikáciám. Vo všeobecnosti je často nepraktické implementovať komplexnejšiu bezpečnostnú politiku s unixovými mechanizmami riadenia prístupu. Z tohto pohľadu unixová bezpečnosť je umiestnená viac na strane stroja než na strane používateľa (administrátora). 25
Príklady všeobecných bezpečnostných princípov q q V tejto časti sa demonštruje ako niektoré bezpečnostné princípy našli svoje uplatnenie v kontexte s Unixom. Použitie riadeného vyvolania o Citlivé, ale dostupné zdroje, ako je napríklad webový server, môžu byť chránené vzorom riadeného vyvolania, ktorý kombinuje koncepty vlastníctva, bitov oprávnenia a programy SUID v Vytvor nové UID webového servera, ktorý vlastní zdroje a všetky programy, ktoré potrebujú pristúpiť k zdroju v v o o Prideľ prístupové právo k zdroju iba jeho vlastníkovi Definuj všetky programy, ktoré pristupujú k zdroju, ako SUID webového programu V tomto prípade vidíme príklad techniky, ktorá je často použitá v návrhoch bezpečnostných mechanizmov. Abstraktný atribút je reprezentovaný údajovou štruktúrou v systéme. Táto údajová štruktúra je potom znovu použitá ďalším bezpečnostným mechanizmom na iný účel. UID bolo zavedené ako reprezentácia reálnych používateľov v systéme. Teraz je UID použité pre nový typ riadenia prístupu, kde UID viac nekorešponduje s reálnymi používateľmi. Poučenie: vyvaruj sa prehnanej ochrane. Ak odmietneš používateľom priamy prístup k súboru, ktorý používatelia potrebujú na vykonanie svojej úlohy, musíš zabezpečiť nepriamy prístup prostredníctvom programov SUID. Chybný program SUID môže dať používateľom viac príležitostí na prístup než múdro vybraté bity oprávnení. Toto je zvlášť pravda, ak vlastník zdroja a program SUID je privilegovaný používateľ ako je root. 26
Príklady všeobecných bezpečnostných princípov q Zrušenie súborov o objekty existujú v logickej a fyzickej pamäti. Čo sa stane, ak odstránime (zrušíme) súbor zo súborového systému? Existuje stále v nejakej forme? Unix má dva spôsoby na kopírovanie súborov. Príkaz cp vytvára identickú, ale nezávislú kópiu, ktorú vlastní používateľ vykonávajúci príkaz cp. Príkaz link a ln vytvára nový názov súboru s ukazovateľom na originálny súbor a zvyšuje počítadlo linkov (link counter) originálneho súboru. Nový súbor zdieľa obsah s originálom. Ak originálny súbor je zrušený príkazom rm alebo rmdir, súbor zmizne zo svojho rodičovského adresára, ale obsah súboru ako aj jeho kópia stále zostáva. Z tohto dôvodu si používatelia môžu myslieť, že súbor zrušili, zatiaľ čo súbor existuje v inom adresári, a navyše súbor aj stále vlastnia. Aby sa bolo možné presvedčiť, že súbor bol zrušený, superpoužívateľ musí vykonať príkaz ncheck na vylistovanie všetkých liniek na tento súbor a potom tieto linky zrušiť. Navyše ak nejaký proces mal súbor otvorený, ktorý potom bol svojím vlastníkom zrušený, súbor bude existovať dovtedy, pokiaľ proces súbor nezatvorí. Akonáhle bol súbor zrušený, pamäťový priestor alokovaný tomuto súboru sa stane opäť voľný (dostupný). Avšak, pokiaľ tieto pamäťové lokácie nebudú aktuálne opäť použité, budú stále obsahovať obsah súboru. Aby sme sa vyhli takýmto pamäťovým rezíduám, musíme súbor pre jeho zrušením vyčistiť prepísaním jeho obsahu samými nulami alebo inými vzormi vhodnými pre pamäťové médium. Dokonca aj potom súbor nemusí byť kompletne zrušený, pretože vyspelé súborové systémy, napríklad defragmenter, môžu súbory presunúť, ponechajúc na disku viacero kópií súboru. 27
Príklady všeobecných bezpečnostných princípov q Ochrana zariadení o Nasledujúca záležitosť sa stále dotýka rozlíšenia medzi štruktúrami logickej a fyzickej pamäti. Unix narába so zariadeniami ako so súbormi. To znamená, že prístup do pamäti alebo prístup k tlačiarni môže byť riadený ako prístup k súboru prostredníctvom nastavenia bitov oprávnení. Zariadenia sú vytvárané použitím príkazu mknode, ktorý môže byť vykonateľný iba rootom. Malá vzorka zariadení, ktorá môže byť spoločne nájdená v adresári /dev je: v /dev/mem zariadenie mapujúce hlavnú pamäť (image fyzickej pamäti) v /dev/kmem zariadenie mapujúce pamäť kernelu-jadra (image virtuálnej pamäti) v o konzolový terminál v o /dev/console /dev/tty terminál Útočníci môžu obísť opatrenia nastavené na súboroch alebo adresároch, ak môžu dostať prístup k pamäťovým zariadeniam, na ktorých sú tieto súbory uložené. Ak sú bity oprávnenia čítania alebo zápisu pre other na pamäťovom zariadení nastavené, môže útočník po pamäti browsovať alebo modifikovať údaje v pamäti bez toho, aby menil povolenia pre súbory umiestnené v tejto pamäti. Preto skoro všetky zariadenia by mali byť pre other bez povolenia čítania a zápisu. Príkazy ako príkaz process status ps zobrazí informáciu o používaní pamäti a preto vyžaduje povolenie prístupu na pamäťové zariadenia. Definovaním ps ako nejaké SUID na program rootu dovoľuje ps získať nevyhnutné povolenia, ale kompromitáciou príkazu ps by zostali útočníkovi privilégiá roota. Elegantnejším riešením je mať ps ako program SGID a nechať skupinu mem vlastniť pamäťové zariadenia. 28
Príklady všeobecných bezpečnostných princípov q Ochrana zariadení o q Terminálové zariadenia tty sú ďalším zaujímavým príkladom. Keď sa používateľ naloguje, je terminálový súbor alokovaný používateľovi, ktorý sa stane vlastníkom súboru pre reláciu. (Keď nie je použitý terminálový súbor, je vlastnený rootom. ) Je praktické urobiť tento súbor pre other čitateľný a zapisovateľný, aby tak používateľ mohol prijímať správy od ostatných strán. Avšak toto nám tiež prináša slabiny. Strana other je teraz schopná monitorovať celú premávku na a z terminálu, ktorá potenciálne môže obsahovať používateľovo heslo. Strana other môže na používateľský terminál poslať príkazy, napríklad preprogramovať funkčné kľúče a môže nechať tieto príkazy vykonať nevedomému používateľovi. V niektorých systémoch môžu inteligentné terminály automaticky vykonať príkazy. Toto dáva útočníkovi možnosť poslať príkazy použitím privilégií iného používateľa. Zmena roota súborového systému o Riadenie prístupu môže byť implementované obmedzením podozrivých procesov do pieskoviska (sandbox). Prístupu k objektom mimo pieskoviska je zabránené. V Unixe zmena rootu príkazom chroot obmedzuje dostupnosť časti súborového systému neautorizovanému používateľovi. Tento príkaz môže byť vykonaný iba rootom. Príkaz chroot <directory> <command> zmení adresár roota z / do adresára (directory) kde sa vykonáva príkaz (command). Následne sú dostupné iba súbory pod novým rootom. Keď použijeme túto stratégiu, musíme si byť istí, že používateľove programy nájdu všetky systémové súbory, ktoré potrebujú. „Očakáva sa“, že tieto súbory budú v adresároch ako sú /bin, /dev, /etc, /tmp alebo /usr. Nové adresáre s tými istými menami musia byť vytvorené pod novým rootom a vybavené súbormi, ktoré používateľ bude potrebovať, kopírovaním alebo linkovaním odpovedajúcich súborov z originálnych adresárov. 29
Príklady všeobecných bezpečnostných princípov q Namontovanie súborového systému o o o V prípade, že máte rôzne bezpečnostné domény a zavediete do vášho systému objekt z ďalšej domény, musíte redefinovať týmto objektom atribúty riadenia prístupu. Súborový systém Unixu je zostavený nalinkovaním spolu súborových systémov uložených na rôznych fyzických zariadeniach pod jedným rootom, ktorý sa označuje „/“. Toto sa zabezpečí príkazom mount. V sieťovom prostredí môže byť vzdialený súborový systém (NFS) namontovaný z iných sieťových uzlov. Podobne, používateľom môže byť dovolené namontovať súborový systém zo svojich vlastných pamäťových médií (automount). Pokiaľ ste bezpečnostným expertom, mali by ste zbystriť pozornosť. Namontované súborové systémy by mohli obsahovať všetky druhy nechcených súborov, ako sú SUID na rootove programy umiestnené v útočníkovm adresári. Akonáhle bol súborový systém namomtovaný, môže útočník vykonaním takýchto programov získať status superpoužívateľa. Nebezpečenstvo tiež prichádza zo súborov zariadení, ktoré dovoľujú priamy prístup do pamäti (kde boli nastavené oprávnenia), a tak má útočník prístup k týmto súborom. Z tohto dôvodu príkaz mount [-r] [-o options] device directory má príznak –r , ktorý špecifikuje namontovanie iba s čítaním a s voľbami: v nosuid – vypína bity SUID a SGID na namontovanom súborovom systéme v noexec – z namontovaného systému nie je možné spustiť žiadny binárny kód v o nodev - zo súborového systému nie je možné pristúpiť k žiadnemu blokovému alebo znakovému špeciálnemu zariadeniu. Opäť, rôzne verzie Unixu implementujú rôzne voľby pre príkaz mount. 30
Príklady všeobecných bezpečnostných princípov q Namontovanie súborového systému o Poučenie: UID a GID sú lokálne identifikátory, ktoré nemusia byť interpretované rovnakým spôsobom na rôznych unixových systémoch (od rôznych dodávateľov). Pri namontovávaní vzdialených súborových systémov môžu klienti nesprávne interpretovať tieto identifikátory. Z tohto dôvodu by mali byť v celej sieti použité globálne jednoznačné identifikátory. 31
Príklady všeobecných bezpečnostných princípov q Premenné prostredia o Premenné prostredia sú držané shellom a sú normálne použité na konfigurovanie správania sa programových utilít. V tabuľke je uvedených niekoľko premenných prostredia pre bash shell. Proces automaticky dedí premenné prostredia od svojho rodičovského procesu a program vykonávajúci ďalší program môže pre volaný program nastaviť premenné prostredia na ľubovolné hodnoty PATH vyhľadávacia cesta pre príkazy shellu TERM typ terminálu DISPLAY meno dispeja LD_LIBRARY_PATH cesta na hľadanie objektov a zdieľaných knižníc HOSTNAME meno unixového hosta PRINTER prednastavená tlačiareň HOME cesta do domovského adresára PS 1 prednastavený prompt IFS oddeľovanie znakov v argumentoch príkazového riadku 32
Príklady všeobecných bezpečnostných princípov q Premenné prostredia o o Toto je problém, pretože vyvolávač programov SUID/SGID ovláda premenné prostredia, ktoré sú dané týmto programom. Útočník by mohol skúsiť prevziať riadenie vykonávania nastavením premenných prostredia na nebezpečné hodnoty. Navyše, mnoho knižníc a programov sú riadené premennými prostredia nejasným a nedokumentovaným spôsobom. Napríklad, útočník môže nastaviť IFS na nezvyklé hodnoty na oklamanie ochranných mechanizmov, ktoré vyfiltrujú nebezpečné vstupy do programov SUID/SGID. Ako protiopatrenie, program SUID/SGID by mohol vymazať celé prostredie a potom nastaviť malú množinu potrebných premenných prostredia na bezpečné hodnoty. Poučenie: dedené veci, ktoré nechcete alebo o ktorých neviete, sa môžu stať bezpečnostným problémom. 33
Príklady všeobecných bezpečnostných princípov q Vyhľadávacia cesta (searchpath) o o Naším posledným favoritom je vykonávanie programov, ktoré sú vzaté z „nesprávnej“ lokácie. Používatelia Unixu interagujú s operačným systémom prostredníctvom shellu (interpreter príkazového riadku). Z dôvodu pohodlnosti môže používateľ spustiť program iba napísaním jeho mena bez špecifikovania plnej cesty, ktorá dá lokáciu programu v rámci súborového systému. Shell potom bude program hľadať nasledovaním vyhľadávacej cesty (searchpath), ktorá je špecifikovaná v premennej prostredia PATH v súbore. profile v domovskom adresári používateľa. (Použi príkaz ls –a na prezretie všetkých súborov v tvojom domovskom adresári a príkaz more. profile na prezretie tvojho profilu. ) Keď je nájdený adresár obsahujúci program so špecifikovaným menom, vyhľadávanie skončí a program sa vykoná. Typická vyhľadávacia cesta vyzará takto: PATH =. : $HOME/bin : /usr/ucb : /bin : /usr/local : /usr/new : /usr/hosts. V tomto prípade, adresáre vo vyhľadávajúcej ceste sú oddelené „: “, prvá položka „. “ je súčasný adresár. Teraz je možné vložiť „Trójskeho koňa“ tak, že útočník mu dá rovnaké meno ako má existujúci program a uloží ho do adresára, ktorý je prehľadaný skoršie ako adresár obsahujúci originálny program. Na ochranu proti takýmto útokom volajúci program zadá plnú cestu, napríklad /bin/su namiesto zadania iba su. Tiež sa treba presvedčiť, že súčasný adresár nie je vo vyhľadávacej ceste programov, ktoré vykonáva root. 34
Príklady všeobecných bezpečnostných princípov q Obaly (wrappers) o o Riadenie prístupu a auditné mechanizmy prezentované doposiaľ neboli veľmi sofistikované. Pridržiavajú sa tradičnej bezpečnosti operačných systémov a koncentrujú sa na riadenie prístupu k zdrojom. Je možné implementovať opatrenia na „medziľahlej úrovni“ rozumným použitím základných mechanizmov riadenia prístupu. Alternatívne môžeme modifikovať samotný Unix na dosiahnutie tohto cieľa. V tomto prípade je potrebné nájsť komponent Unixu, ktorý môže byť zmenený takým spôsobom, že sú pridané užitočné bezpečnostné opatrenia pričom zvyšok operačného systému zostane nedotknutý. TCP obaly veľmi elegantne demonštrujú tento návrhový prístup. Sieťové služby Unixu ako telnet alebo ftp sú postavené na nasledovnom princípe. Démon inetd počúva prichádzajúce sieťové spojenia. Keď sa spojenie vytvorí, inetd odštartuje príslušný serverový program, a potom sa vráti na počúvanie ďalších spojení. Démon inetd má konfiguračný súbor, ktorý mapuje služby (čísla portov) do programov. Položky v tomto konfiguračnom súbore majú formát: service type protocol waitflag userid executable command-line. Napríklad, položka pre telnet by mohla byť: telnet stream tcp nowait root /usr/bin/in. telnetd in. telnet. Keď inetd príjme žiadosť o službu, ktorú obsluhuje, konzultuje konfiguračný súbor a vytvorí nový proces, ktorý vykoná špecifikované executable. Meno tohto nového procesu je zmenené na meno dané v poli príkazového riadku. 35
Príklady všeobecných bezpečnostných princípov q Obaly (wrappers) o o o Zvyčajne je meno executable a meno dané v príkazovom riadku rovnaké. Táto nadbytočnosť otvára dvere na pekný trik. Nasmeruj démon inetd na program obalu (wrapper), namiesto nasmerovania na originálny executable, a použi meno procesu na zapamätanie mena originálneho executable, ktorý chcete vykonať potom ako obal vykonal svoje bezpečnostné opatrenia. V našom prípade, položka v konfiguračnom súbore pre telnet by mohla byť nahradená týmto: telnet stream tcp nowait root /usr/bin/tcpd in. telnet. Teraz vykonávaný program je /usr/bin/tcpd. Toto je TCP obal executable. Proces vykonávajúci obal je stále nazývaný in. telnet. V rámci tohto obalu je možné vykonať akékoľvek riadenia prístupu alebo logovanie. V originálnej aplikácii boli obaly použité na filtrovanie adries IP. Pretože obal pozná adresár v ktorom sa nachádza, t. j. /usr/bin a svoje vlastné meno, t. j. /usr/bin/in. telnet, obal môže potom zavolať originálny serverový program, t. j. /usr/bin/in. telnet. Používateľ nevidí žiadny rozdiel a dostane presne tú istú službu ako predtým. Poučenie: pridanie ďalšej úrovni nepriamosti je výkonný nástroj v informatike. V bezpečnosti tento nástroj môže byť použitý na útok proti systému a na ochranu systému. Vložením TCP obalu medzi démon inetd a serverový program sme schopní pridať bezpečnostné opatrenia bez zmeny zdrojového kódu démona alebo zdrojového kódu serverového programu. Krása tohto príkladu je v jeho všeobecnosti. Rovnaký princíp môža byť použitý na ochranu celej množiny sieťových služieb Unixu. 36
Príklady všeobecných bezpečnostných princípov q Obaly (wrappers) o Poučenie: TCP obaly kombinujú základný návrhový princíp riadeného vyvolania a elegantný trik, ktorý urobí možným pridať bezpečnostné kontroly do služieb bez nutnosti zmeniť program, ktorý volá tieto služby. Toto je ideálna situácia, keď je potrebné dovybaviť bezpečnosť do existujúceho systému. 37
Záležitosti spravovania operačného systému q Spravovanie superpoužívateľa – konto root je používané operačným systémom na vykonanie jeho základných úloh, ale tiež aj na určité iné úlohy administrácie systému. o o Privilégiá superpoužívateľa sú hlavnou slabinou Unixu. Ak útočník získa status superpoužívateľa, zmocní sa celého systému. Preto prístup k statusu superpoužívateľ musí byť veľmi starostlivo chránený. Ak útočník je schopný editovať súbor hesiel /etc/passwd, môže sa stať superpoužívateľom zmenou svojho UID na 0. To znamená, že súbory /etc/passwd a /etc/group musia byť chránené proti zápisu. Na redukciu dopadu kompromitácie sa odporúča oddeliť povinnosti administrátora systému, napríklad zavedením špeciálnych používateľov ako uucp alebo deamon pre narábanie so sieťovaním. V prípade, že by bol kompromitovaný jeden z týchto špeciálnych používateľov, ešte nie je všetko stratené. Administrátori systému by nemali používať konto root ako svoje osobné konto (bežný používateľ systému). Pokiaľ je to nevyhnutné, zmena na roota je možná napísaním príkazu etc/su (bez špecifikácie používateľa). Operačný systém nezavolá inú verziu príkazu su uloženú v inom adresári, ale originálnu verziu. Je dobrou praktikou logovať do auditu všetky pokusy o vykonanie príkazu su spolu s používateľom, ktorý tento príkaz zadal. 38
Záležitosti spravovania operačného systému q Dôveryhodné hosty – v priateľskom prostredí môže byť postačujúce používateľa autentizovať iba raz, aj keď používateľ pristupuje k viacerým rôznym hostom. o o q Unix podporuje tento režim prevádzky – prevádzka dôveryhodné hosty. Používateľ z dôveryhodného hosta sa môže nalogovať na druhý host bez autentizácie. Jedinou podmienkou je, že na oboch hostoch musí mať rovnaké meno (username). Dôveryhodné hosty stroja sú špecifikované v /etc/host. equiv. Dôveryhodné hosty používateľa sú špecifikované v súbore. rhosts v domovskom adresári. Mená používateľov musia byť medzi hostami synchronizované. Táto úloha môže byť obtiažna v prípade rastu počtu hostov. (Navyše existujú špecifické konfigurácie dodávateľov, ktoré treba pre tento prípad upraviť. ) Akonáhle bol host zavedený do súboru /etc/host. equiv, všetci používatelia hosta získavajú tieto prístupy. Výnimky sa veľmi ťažko konfigurujú. Auditné logy a detekcia prienikov – akonáhle bol systém inštalovaný a je v prevádzke, jeho bezpečnostné mechanizmy by mali zabraňovať ilegálnym aktivitám používateľov. o o o Avšak ochranné mechanizmy nemusia byť adekvátne alebo môžu byť vadné. Nevhodné bezpečnostné mechanizmy môžu byť direktívne, aby vôbec bol systém schopný prevádzky. (Aplikácia nebeží so SP 2!? ) Preto sú potrebné ďalšie mechanizmy na detekciu narušenia bezpečnosti alebo iných podozrivých udalostí, ktoré práve teraz nastávajú alebo sa stali v minulosti. 39
Záležitosti spravovania operačného systému q Auditné logy a detekcia prienikov o Niektoré bezpečnostne relevantné udalosti operačný systém Unix automaticky zaznamenáva do svojich logovacích súborov: v v o o o /usr/adm/lastlog – zaznamenáva čas ostatného nalogovania používateľa, táto informácia môže byť zobrazená príkazom finger /var/adm/utmp – zaznamenáva účtovacie informácie použité príkazom who /var/adm/wtmp – zaznamenáva každý čas nalogovania a odlogovania používateľa, táto informácia môže byť zobrazená príkazom last. Aby tento súbor neprepísal všetku dostupnú pamäť, súbor môže byť v pravidelných intervaloch redukovaný. /var/adm/acct – zaznamenáva všetky vykonávané príkazy, táto informácia môže byť zobrazená príkazom lastcom Presné mená a lokácie uvedených súborov môžu byť odlišné pre rôzne verzie Unix. Na auditné účely môže byť využitá aj funkcia účtovateľnosti, ktorá sa zapína príkazom accton. Pozorovanie systému Unix je možné ďalej zabezpečiť pomocou príkazov find, grep, ps, users. Pri preskúmaní zoznamu zaznamenaných bezpečnostne relevantných udalostí zistíme, že väčšina týchto udalostí má súvis s používateľom, takže položka v zázname by mala obsahovať UID procesov, spôsobujúcich túto udalosť. Ako je potom auditovanie ovplyvnené programami SUID? Takýto program sa vykonáva s UID svojho vlastníka a nie s UID používateľa vykonávajúceho program. Odtiaľ vyplýva, že položky v logu by mali obsahovať reálne UID procesov. 40
Záležitosti spravovania operačného systému q Auditné logy a detekcia prienikov o Poučenie: Používateľské identifikátory sú bezpečnostný atribút, ktorý je použitý na dva účely a to riadenie prístupu a účtovateľnosť. Nie je vždy možné využiť ten istý atribút na obidva účely v tú istú dobu. Pokiaľ UID korešponduje „reálnemu“ používateľovi, riadenie prístupu je založené na oprávneniach a auditovanie je obom komplementárne. Pokiaľ vytvoríte identity špeciálnych používateľov na ochranu prístupu k zdrojom prostredníctvom programov SUID alebo SGID, získate atribút s limitovaným použitím na auditovanie. 41
776f7b7e1a54141a72549dd247349060.ppt