9 Bezpečnost

Dříve nebo později uživatel, jenž využívá výpočetní systém jako jeden z prostředků své pracovní činnosti, začne požadovat bezpečnost svých dat. Je pro něj důležité najít všechna svá data tak, jak je v minulém sezení zanechal. Mnohdy je pro něj důležité i jejich soukromí, tj. jistota, že jeho data jsou nejenom nezměněna, ale také jiným uživatelem nepřečtena (tj. kopírována). Tento zdánlivě samozřejmý předpoklad však nebyl v dosavadní historii výpočetní techniky nikdy dokonale zajištěn. Správce výpočetního systému je totiž vystaven nikoliv pouze nedokonalosti ochrany operačního systému, ale také neznalosti uživatelů a možnosti fyzického zneužití stroje. Uživatelé si musí být např. vědomi povinnosti ukončit své sezení (odhlásit se) po skončení své práce. Počítač s daty by měl být v zamykatelné místnosti nebo by měl být zbaven možnosti startovat na holém stroji jiné programy, než je používaný operační systém (např. fyzickým odpojením zařízení pro zavádění takových programů, jako je disketa, CD, páska atd.). Nebezpečí zničení nebo zneužití dat uživatele vystoupilo do popředí jako problém při sdílení dat na tomtéž stroji různými uživateli s interaktivním přístupem. Vznik rozsáhlých počítačových sítí a Internetu pak problém bezpečnosti dat odkryl jako jeden z nejpalčivějších. Např. finanční operace bankéřů nelze provádět přes Internet, pokud nebudou jednoznačně spojeny s konkrétní osobou. Proto další rozvoj využití výpočetní techniky není možný bez dokonalého zabezpečení ochrany dat. Je ale dokonalá ochrana vůbec možná? Teoreticky jistě ne, protože algoritmy praktického světa jsou popsatelné mechanizmy až na úrovni Turingových nebo Postových strojů a tedy, jak víme ze studia matematické informatiky (viz např. [Mann74]), nedokazatelné. Žádný operační systém není vzhledem ke své složitosti vyplývající z praktických požadavků dokazatelný, tedy nelze matematicky dokázat jeho bezchybnost. O matematicky dokazatelné reakci uživatele nebo fyzického rozmístění výpočetní techniky a organizace přístupu k ní už ani nemluvě. S vědomím těchto nedostatků při modelováním skutečného světa výpočetní technikou je nutné přistupovat k řešení bezpečnosti dat. V podobě dnešních počítačů bezpečnost dat nebude nikdy dokonalá, v mnoha případech však může být pro potřeby dostačující.

Požadavky na bezpečnost dat, kterou zajišťuje výpočetní systém, byly přehledným způsobem postulovány již v r. 1983. Jde o dokument Ministerstva obrany vlády Spojených států (Department of Defense, DoD) s označením TCSEC (Trusted Computer System Evaluation Criteria, Kritéria hodnocení důvěry výpočetního systému), viz [TCSEC83], známý také pod označením Oranžová kniha (Orange book). TCSEC zavedl různé skupiny či stupně bezpečnosti. Každá skupina určuje míru požadované bezpečnosti dat. Skupiny byly označeny písmeny D, C, B a A. Za písmenem obvykle následuje cifra, která rozděluje skupinu na úrovně (např. C2 nebo B1). Nejméně požadované zabezpečení je skupina D, které např. odpovídá způsob ochrany dat v UNIX version 7. Úrovně C, B a A postupně zvyšují nároky, přitom vyšší úroveň (směrem k písmenu A a nižšímu číslu) vždy zahrnuje požadavky úrovně nižší. Reálně jsou implementovány úrovně C2 a B1, skupina A je na rozhraní reálných možností současné výpočetní techniky. Zadavatel výpočetního systému pak může stanovit, nakolik je nutné jeho data ochránit, což určí odkazem na odpovídající úroveň. Každý současný výpočetní systém podporuje uvedený systém kategorií bezpečnosti dat, přestože se běžně používá úroveň C2 a B1. SVID respektuje TCSEC a definuje chování UNIXu v úrovních C2, B1 a B2. POSIX TCSEC necituje, ale z jeho způsobu ochrany dat vyplývá úroveň C1. POSIX dále o bezpečnosti uvádí pouze drobné úvahy v kontextu ochrany dat a definici bezpečnosti v operačních systémech teprve připravuje. Jak uvidíme u SVID, bezpečnost operačního systému úzce souvisí s prací správce systému a se sítěmi. Obě oblasti však POSIX zatím nedefinuje. V dalším textu kapitoly si uvedeme obsah úrovní podle TCSEC a také jejich konkrétní podobu v SVID1.

V kapitole ovšem nejprve ukážeme úzká místa bezpečnosti dat v UNIXu, která nesmí správce systému zanedbávat, zvláště je-li uzel součástí sítě Internet. Ukážeme také, jak lze v těchto případech zabránit zneužití dat i v bezpečnostní úrovni D  a jak je bezpečnost posílena instalací vyšší bezpečnostní úrovně. Text kapitoly bude obecný a nemůže zahrnout nedostatky vzniklé chybami v jednotlivých verzích UNIXu, kdy některá ochrana např. není omylem zajištěna. Samozřejmě nezůstane pouze u místního operačního systému, ale uvedeme také bezpečnostní potřeby sítí a jejich praktická zajištění, jako je podsystém Kerberos nebo ochranné zdi (firewalls).

UNIX není koncepčně systém, který by si zasloužil tak špatný věhlas, který z pohledu bezpečnosti dnes má. Jak uvidíme v následujícím čl. 9.1, pokud je UNIX programován pečlivě, nemusí k úmyslným ani neúmyslným poškozením dat docházet. Velká část systémových služeb nebo i součástí jádra UNIXu byla ale programována v akademickém prostředí, kde bezpečnost dat není vyžadována tak přísně jako v průmyslu. Je proto věcí každého výrobce průmyslové verze UNIXu, aby převzatý zdrojový kód analyzoval a ladil také z pohledu bezpečnosti. Nedostatky, které správce systému v konkrétní verzi odhalí, by měl spíše než zveřejňovat v časopisech oznamovat výrobci, který se postará o odstranění. Také může kontaktovat některou z institucí, která se bezpečností výpočetních systémů seriózně zabývá,  jako je např. DARPA CERT (Computer Emergency Response Team, Skupina pro řešení neočekávaných stavů počítačů,  cert@sei.cmu.edu), která úzce spolupracuje s výrobci, nebo DoE's CIAC (Department of Energy's Computer Incident Advisory Capability, Poradenská služba pro výpadky počítačů Ministerstva energie, ciac@tiger.llnl.gov), která je i telefonicky dostupná 24 hodin denně. Obě organizace působí ve Spojených státech.

Povinností správce systému je neustále sledovat chování operačního systému, používat systém sledování vznikajících sezení uživatelů (auditing) nebo vstupů do operačního systému prostřednictvím sítě. Rovněž se vyplatí procházet statistiku chování jádra a jeho parametrů. Jedná se o využívání prostředku sar a dalších podpůrných programů, které probereme v kap. 10. Tyto a další z bezpečnosti vycházející aktivity budeme v kapitole probírat, poukazovat na nedostatky, které se v UNIXu mohou vyskytovat, a doporučovat vhodná řešení.
 

9.1 Bezpečnost v úrovni C1

Jak je patrné z předchozích kapitol, UNIX zajišťuje vstup uživatele do systému podle jeho jmenné identifikace, která je podle tabulky /etc/passwd převáděna na identifikaci číselnou (UID). Po přihlášení je uživatelova pracovní činnost v systému interpretována skupinou procesů, které jádro eviduje v jeho vlastnictví právě podle UID. Každý takový proces je prováděn za dozoru jádra. Odkazy prováděných instrukcí procesu musí být v rámci jeho adresovatelného prostoru, tj. uvnitř jeho datového nebo textového segmentu, případně zásobníku. To je omezující z pohledu přístupu k dalším částem operační paměti. Operační paměť je přidělována pouze jádrem a o zvětšení datové oblasti o další část operační paměti musí proces požádat např. voláním jádra malloc. Odkazy mimo oblast procesu v operační paměti jsou vždy prováděny jádrem. Schéma je uvedeno na obr. 9.1.
 
Obr. 9.1  Adresace operační paměti procesem uživatele

Procesu je tedy dovolena pouze manipulace s daty v jemu přidělené oblasti. Tak jsou procesy navzájem ...



1Evropská snaha o definici bezpečnosti dat začíná rokem 1989, kdy vzniká dokument ZSIEC německého Federálního úřadu pro bezpečnost v informační technologii (BSI), který principálně vychází z TCSEC, ale označování úrovní má odlišné (viz čl. 9.2). V roce 1990 pak vzniká společný dokument zemí Francie, Německa, Nizozemí a Velké Británie s názvem ITSEC (Information Technology Security Evaluation Criteria, Kritéria hodnocení bezpečnosti informační technologie, tzv. Bílá kniha, viz [ITSEC90]), který navazuje na TCSEC a který opět zavádí jiné značení úrovní bezpečnosti (viz opět čl. 9.2). Vzhledem k tomu, že kolébkou informačních technologií jsou Spojené státy, v drtivé většině případů je citována Oranžová kniha a i my se v dalším textu podle toho zachováme.