COMPUTERWORLD
Specializovan² t²denφk o v²poΦetnφ technice

Serißl
o bezpeΦnosti
a informaΦnφm soukromφ

╚ßst 51 - CW 27/98

BezpeΦnost Unixu

Jaroslav DoΦkal, Josef Kaderka

Otev°enost, pru₧nost, p°enositelnost, interoperabilita... tak jsou charakterizovßny unixovΘ operaΦnφ systΘmy. Tyto vlastnosti musφ mφt dopad na jejich bezpeΦnost, a¥ ji₧ kladn² anebo zßporn². N∞kterΘ typickΘ otßzky s tφm spojenΘ jsou naznaΦeny v tomto dφlu serißlu.

OperaΦnφ systΘm Unix vznikl na p°elomu 60. a 70. let v Bellov²ch laborato°φch firmy AT&T. V souladu s v²vojem byl kontinußln∞ obohacovßn o novΘ funkce, nap°. o podporu poΦφtaΦov²ch sφtφ, grafickΘ u₧ivatelskΘ rozhranφ nebo bezpeΦnostnφ prvky. Vzhledem ke svΘ pr∙kopnickΘ roli se samoz°ejm∞ nevyhnul problΘm∙m Φi chybßm a takΘ n∞kterΘ jeho vlastnosti jsou poplatnΘ dob∞ vzniku.

U₧ivatelΘ systΘmu a jeho administrßtor

Do Unixu m∙₧e u₧ivatel p°istupovat pouze na zßklad∞ znalosti p°ihlaÜovacφho jmΘna a hesla. ZvlßÜtnφch (a₧ neomezen²ch) v²sad po₧φvß superu₧ivatel (superuser), jeho₧ p°ihlaÜovacφ jmΘno je root a skr²vß se pod nφm administrßtor systΘmu. MΘn∞ zkuÜen²m administrßtor∙m p∙sobφ t∞₧kΘ chvφle fakt, ₧e omylem zadan² destruktivnφ p°φkaz nelze vzφt zp∞t.

Ka₧d² u₧ivatel mß sv∙j identifikßtor (UID -- User Identifier) a identifikßtor skupiny GID (Group Identifier). Vytvß°enφ skupin a za°azovßnφ u₧ivatel∙ do nich je jednφm z ·kol∙ administrßtora systΘmu. Ud∞lenφm urΦitΘho prßva skupin∞ zφskßvajφ jejφ ΦlenovΘ mo₧nost tφmto prßvem disponovat. Tato mo₧nost vÜak nevypl²vß z Φlenstvφ automaticky (jako nap°. v Novell NetWare), n²br₧ u₧ivatel si musφ ₧ßdanou skupinu p°φkazem newgrp nastavit.

Jako v ka₧dΘm vφceu₧ivatelskΘm a vφce·lohovΘm operaΦnφm systΘmu i v Unixu hraje mimo°ßdn∞ v²znamnou roli administrßtor systΘmu. Dφky otev°enosti Unixu m∙₧e sv∙j systΘm skuteΦn∞ dokonale ovlßdnout zp∙sobem, kter² je v jin²ch prost°edφch nemysliteln², m∙₧e jej takΘ snadno kompromitovat.

╪φzenφ p°φstupu k soubor∙m a adresß°∙m

SystΘm soubor∙ v Unixu p°edstavuje strom s jedin²m ko°enem, kter² se dßle v∞tvφ do jednotliv²ch adresß°∙. Jeho struktura je pevnß a je dßna standardy POSIX.

V tradiΦnφm Unixu existujφ pro ka₧d² soubor 3 mo₧nß p°φstupovß prßva -- pro Φtenφ r, pro zßpis w a pro provßd∞nφ x. Dßle se odliÜujφ 3 kategorie u₧ivatel∙ -- vlastnφk souboru, skupina a ostatnφ. U nov∞ vytvo°en²ch soubor∙ je vlastnφkem jejich tv∙rce. Vlastnictvφ souboru a p°φstupovß prßva m∙₧e zm∞nit jen vlastnφk souboru a samoz°ejm∞ superu₧ivatel. Ka₧dß z uveden²ch kategoriφ mß svoji trojici p°φstupov²ch prßv.

V modernφch verzφch Unixu se pou₧φvajφ i dalÜφ mechanismy, nap°. Access Control List (ACL). Tento nadstavbov² prost°edek dovoluje oprßvn∞nφ k p°φstupu definovat jemn∞ji.

K manipulaci s ACL obvykle slou₧φ p°φkazy lsacl (v²pis) a chacl (nastavenφ nebo zm∞na). Pro specifikaci ACL se pou₧φvß tvar (u₧ivatel.skupina,p°φstup).

Zßv∞reΦnß zmφnka se t²kß p°φstupov²ch prßv k adresß°i. Chce-li mφt u₧ivatel rozumn² p°φstup do adresß°e, m∞l by mφt alespo≥ prßvo r-x. V takovΘm p°φpad∞ m∙₧e dan² adresß° zkoumat (vstoupit do n∞j a vypisovat jeho obsah; Φφst obsah soubor∙ nebo jej kopφrovat jinam -- pokud to dovolφ prßva t∞chto soubor∙). Mß-li u₧ivatel k adresß°i prßva rwx, m∙₧e v n∞m ruÜit soubory vΦetn∞ t∞ch, kterΘ mu nepat°φ nebo ke kter²m nemß ₧ßdnΘ prßvo (i kdy₧ s nimi jinak nem∙₧e d∞lat nic)! Existuje takΘ specißlnφ atribut, p°i jeho₧ nastavenφ mohou ruÜit soubory v adresß°i jen jejich vlastnφci (pak mß p°φsluÜn² v²pis tvar rwt).

Procesy

Ka₧d² proces (b∞₧φcφ program) mß svΘho vlastnφka (viz UID), kter²m je u₧ivatel, jen₧ dan² proces vytvo°il a od kterΘho se odvozujφ prßva procesu. AvÜak u₧ivatel mß jist∞ mo₧nost m∞nit svoje heslo. Musφ tudφ₧ mφt mo₧nost zßpisu do souboru uchovßvajφcφho hesla. Ale tak d∙le₧it² soubor p°ece nem∙₧e b²t p°φstupn² pro zßpis obyΦejnΘmu u₧ivateli! ╪eÜenφ se naz²vß s-bit, oznaΦenφ je odvozeno od Set UID ( SUID, podobn∞ SGID). Jednß se o dopl≥kov² atribut souboru, kter² °φkß, ₧e program, obsa₧en² v danΘm souboru, bude mφt po spuÜt∞nφ UID nikoli u₧ivatele, kter² jej spustil, n²br₧ vlastnφka souboru. N∞kdy se pou₧φvß termφn efektivnφ UID.

Mechanismus SUID je na jednΘ stran∞ dobr²m pomocnφkem, ale na druhΘ m∙₧e b²t zdrojem problΘm∙. Ledabyl² administrßtor m∙₧e vytvo°it soubor s nastaven²m s-bitem, u kterΘho z roztr₧itosti neomezφ p°φstup pro zßpis. Naopak peΦliv² administrßtor by m∞l mφt p°ehled o vÜech souborech ve svΘm systΘmu s nastaven²m s-bitem.

NaÜt∞stφ akce typu "Vymyslφm nekal² program, ulo₧φm do souboru, nastavφm u n∞j s-bit, vlastnictvφ p°edßm u₧ivateli root a je to" zde ji₧ byly a Unix je °eÜφ obvykle tak, ₧e p°i zm∞n∞ vlastnφka s-bit zruÜφ. AvÜak z historie i souΦasnosti je znßmo vφce postup∙ vyu₧φvajφch nevhodn∞ nastaven² s-bit k zφskßnφ neoprßvn∞nΘho p°φstupu.

Autentizace u₧ivatele

Autentizace u₧ivatele spoΦφvß v uvedenφ sprßvnΘho hesla. Unix obvykle po₧aduje volit netrivißlnφ heslo o alespo≥ Üesti znacφch. V p°φpad∞ pot°eby lze snadno stanovit povinnost mφt delÜφ heslo, urΦit dobu jeho platnosti, nutnost je periodicky m∞nit apod. Pokud by byla ochrana heslem nedostaΦujφcφ, mohou b²t dopln∞ny libovolnΘ dalÜφ mechanismy, nap°. systΘm jednorßzov²ch hesel S/Key, dodateΦnß hesla pro p°φstup p°es modemy nebo autentizace pomocφ nßstroj∙ jako Kerberos, RADIUS apod.

V minulosti byla hesla (samoz°ejm∞ Üifrovanß) p°φstupnß vÜem u₧ivatel∙m, u souΦasnΘho Unixu jsou ulo₧ena mimo jejich dosah. N∞kdy b²vajφ navφc kopie Üifrovan²ch hesel spolu s dalÜφmi d∙le₧it²mi ·daji ulo₧eny v TCB (Trusted Computing Base -- d∙v∞ryhodnß v²poΦetnφ bßze), kde jsou navφc jiÜt∞ny kontrolnφmi souΦty a jin²mi opat°enφmi. P°i startu operaΦnφho systΘmu i p°i n∞kter²ch dalÜφch operacφch se ov∞°uje konzistentnost obsahu TCB. Jsou-li detekovßny problΘmy, nepovolφ se nap°. p°echod do vφceu₧ivatelskΘho modu, dokud nenφ zjednßna nßprava. Tφm se dociluje odolnosti v∙Φi nekorektnφm zßsah∙m do systΘmov²ch oblastφ vΦetn∞ zßsahu administrßtora.

V Internetu lze vyhledat programy pro hledßnφ slab²ch hesel (crack, npasswd, passwd+). V praxi je m∙₧e pou₧φt jen administrßtor, nebo¥ uvedenΘ programy musφ mφt p°φstup k Üifrovan²m hesl∙m. Jejich Φinnost se obvykle sklßdß ze dvou zßkladnφch fßzφ. P°i prvnφ se zkouÜφ r∙znΘ kombinace znßm²ch ·daj∙ o u₧ivateli, ve druhΘ se pak p°echßzφ na slovnφky. Standardn∞ jsou k disposici slovnφky z anglofonnφho prost°edφ, nicmΘn∞ dφky pφli tuzemsk²ch nadÜenc∙ mßme i slovnφky nßrodnφ.

Komunikace a sφt∞

V Unixu jsou dob°e patrnΘ stopy v²voje poΦφtaΦovΘho sv∞ta poΦφnaje terminßlov²m re₧imem p°es jednoduchΘ sφt∞ zalo₧enΘ na dvoubodovΘ komunikaci a₧ po sφt∞ poskytujφcφ slu₧by odpovφdajφcφ dneÜnφm po₧adavk∙m. U klasickΘho Unixu se nap°. autentizace opφrala o d∙v∞ryhodnost IP adres a nemo₧nost neoprßvn∞n∞ zachytit komunikaci mezi systΘmy. Na tomto p°edpokladu je zalo₧en zejmΘna klasick² sφ¥ov² souborov² systΘm (NFS), umo₧≥ujφcφ sdφlenφ systΘmu soubor∙ v rßmci poΦφtaΦovΘ sφt∞ stejn∞ jako bezpeΦnostnφ mechanismus, povolujφcφ p°φstup k danΘmu poΦφtaΦi jen z definovan²ch adres. Rovn∞₧ systΘm grafickΘho u₧ivatelskΘho rozhranφ X-Window byl zam²Ülen pro relativn∞ bezpeΦnΘ prost°edφ. Navφc b∞₧nΘ sφ¥ovΘ protokoly jako Telnet, ftp, POP3 a dalÜφ komunikujφ otev°en∞, Φili riziko zachycenφ hesel je znaΦnΘ.

V souΦasn²ch verzφch Unixu jsou u₧ vÜechny naznaΦenΘ problΘmy vy°eÜeny. Prakticky ke vÜem slu₧bßm existujφ bezpeΦnΘ alternativy, zalo₧enΘ na osv∞dΦen²ch kryptografick²ch metodßch. Jejich implementace je jednφm z ·kol∙ administrßtora.

Zßznamy o pr∙b∞hu prßce systΘmu a u₧ivatel∙

Unix mß k dispozici propracovan² systΘm zßznam∙ o chodu systΘmu, nebo¥ ji₧ od zaΦßtku poskytoval podklady pro platby od u₧ivatel∙. N∞kterΘ ·daje zaznamenßvajφ p°φmo systΘmovΘ procesy do urΦen²ch soubor∙ (log∙). DalÜφ mo₧nostφ vedenφ zßznam∙ je systΘmov² proces syslog, na kter² se mohou definovan²m zp∙sobem obracet i jinΘ procesy. Samoz°ejmostφ je mo₧nost zvolit akci p°i vzniku udßlosti (ignorovßnφ, zßznam, odeslßnφ elektronickΘho dopisu, okam₧itΘ hlßÜenφ na terminßl).

K zßkladnφm zaznamenßvan²m ·daj∙m pat°φ:

- ·sp∞Ünß p°ihlßÜenφ -- vΦetn∞ mφsta a Φasu,

- ne·sp∞Ünß p°ihlßÜenφ,

- zahßjenφ a ukonΦenφ chodu systΘmu,

- problΘmy zjiÜt∞nΘ za chodu systΘmu,

- p°φjmu a odesφlßnφ elektronickΘ poÜty,

- zm∞ny UID,

- v²znamnß hlßÜenφ jin²ch program∙.

Krom∞ uveden²ch ·daj∙ lze zaznamenßvat aktivitu ka₧dΘho u₧ivatele nebo procesu a samotnΘho operaΦnφho systΘmu, nap°. spouÜt∞nφ program∙, p°φstup k soubor∙m a jin²m prost°edk∙m atd. Je t°eba mφt na mysli, ₧e takovΘ zßznamy mohou rychle zaplnit i velmi velk² systΘm soubor∙.

èifrovßnφ a kontrolnφ souΦty

Hesla se Üifrujφ upraven²m algoritmem DES. Pro Üifrovßnφ soubor∙ je u₧ivatel∙m k disposici program crypt, kter² poskytuje jen pom∞rn∞ nφzk² stupe≥ odolnosti. V p°φpad∞ pot°eby lze doplnit dokonalejÜφ mechanismy, nap°. PGP.

Pro kontrolnφ souΦty se pou₧φvß program cmp anebo r∙znΘ nßstroje pro digitßlnφ podpis typu MD2, MD4, MD5 anebo Snefru (viz http://ciac.llnl.gov/ciac/ToolsUn ixSig.html). Nap°. pro klφΦovΘ binßrnφ soubory zajiÜ¥uje ulo₧enφ digitßlnφch podpis∙ na bßzi MD5 nßstroj zvan² Tripwire (ftp://info.cert.org/pub/tech_tip s/security_tools). N∞kterΘ systΘmy jako je HP-UX pou₧φvajφ tzv. PDF (Product Description File), kterΘ slou₧φ pro kontrolu atribut∙ a existence soubor∙.

Jak zajistit bezpeΦnost systΘmu?

Administrßtor musφ mφt nßle₧itou pr∙pravu, spoΦφvajφcφ v dobrΘ znalosti vlastnφho systΘmu, bezpeΦnostnφch rizik, slabin, potencißlnφch zdroj∙ ·tok∙ a v neposlednφ °ad∞ i sv²ch u₧ivatel∙.

Nevyhnutelnostφ je p°φstup administrßtora k Internetu. Nejaktußln∞jÜφ ·daje o problΘmech r∙znΘho druhu najdete na http://161.53.42.3/~crv/security/ bugs/list.html, viz obrßzek). Administrßtor by m∞l urychlen∞ instalovat vÜechny zßplaty. M∞l by pou₧φvat pot°ebnΘ bezpeΦnostnφ nßstroje (nap°. http://ciac.llnl.gov/ciac/Securit yTools.html). Musφ vΘst u₧ivatele k dodr₧ovßnφ bezpeΦnostnφch zßsad. M∞l by vyjφt ze zßsad bezpeΦnostnφ politiky svΘ organizace a mφt zpracovßnu metodiku kontrol vΦetn∞ Φasov²ch rozvrh∙.

Dßle je vhodnΘ mφt p°ipraven scΘnß° opat°enφ pro p°φpad pr∙niku a postup p°i obnov∞ Φinnosti systΘmu. Pro zefektivn∞nφ prßce p°i ovlßdßnφ v∞tÜφho mno₧stvφ systΘm∙ dodßvajφ specializovanΘ firmy vhodnΘ nßstroje.

SystΘmy vyÜÜφch bezpeΦnostnφch ·rovnφ

P°evß₧nß v∞tÜina systΘm∙ Unix mß mo₧nost posφlit svoji ·rove≥ bezpeΦnosti na stupe≥ C2 (podle TCSEC, viz CW 33/97). V²jimeΦn∞ existujφ systΘmy, vyhovujφcφ stupni B1 (viz CW 32/97). Jako p°φklady systΘm∙ tΘto ·rovn∞ lze uvΘst HP-UX BLS-CMW, SCO CMW+.

Na ·rovni B2 se po₧aduje formßlnφ model bezpeΦnostnφ politiky. P°φsluÜn²m kritΘriφm zatφm vyhovuje jedin² systΘm typu Unix a to Trusted RUBIX B2 firmy Infosystems Technology.

A co jeÜt∞ vyÜÜφ ·rovn∞? Jejich po₧adavky jdou ji₧ nad filozofii Unixu, poΦφnaje zavedenφm funkce bezpeΦnostnφho administrßtora u ·rovn∞ B3 nebo d∙razem na verifikaci u ·rovn∞ A1. SystΘmy t∞chto ·rovnφ je t°eba vyvφjet s ohledem na bezpeΦnost od samotnΘho poΦßtku nßvrhu.


| COMPUTERWORLD - serißl o bezpeΦnosti | COMPUTERWORLD | IDG CZ homepage |