Bezpečnosť sieťových služiebOperačný systém FreeBSD je vyvíjaný v prvom rade ako sieťový server a na tento účel je aj najčastejšie používaný. Internet ale už dávno nie je priateľská komunita ľudí, ktorí si navzájom dôverujú, pomáhajú a neškodia, ako tomu bolo v dobe jeho vzniku. Práve naopak, Internet je zlý, zákerný a plný nepriateľov. Zabezpečenie sieťových služieb je na každom serveri také dôležité, že sa mu venuje prevažná väčšina času administrácie serverov. Operačný systém FreeBSD poskytuje mnoho nástrojov na zabezpečenie ním poskytovaných sieťových služieb. Nijaký všeobecne platný spôsob na zabezpečenie počítača pred útokom zo siete neexistuje. Rovnako sa ani o jednom operačnom systéme nedá defintívne povedať, že je bezpečnejsí ako iný. Zabránenie vykonaniu akejkoľvek nežiadúcej aktivity je v prevažnej miere vecou konfigurácie operačného systému a programov poskytujúcich služby. Zároveň platí, že systém je taký bezpečný, aké je bezpečné jeho najmenej bezpečné miesto. Preto sa odporúča budovať zabezpečenie na princípe cibule, podľa ktorého sa služby obaľujú vrstvami zabezpečenia, aby útočníka, ktorý sa dostane cez vonkajšiu vrstvu, zachytila ďalšia, vnútornejšia vrstva. Odhliadnuc od zabezpečení počítača na úrovni správy celej siete (demilitarizované zóny, virtuálne privátne siete, konfigurovateľné sieťové prepínače spolu s prideľovaním IP adresy na základe hardvérovej adresy sieťovej karty, odtienenie siete za transparentný proxy server či preklad sieťových adries, a pod.), je možné pomocou nástrojov nachádzajúcich sa priamo v operačnom systéme FreeBSD vytvoriť hneď niekoľko vrstiev zabezpečenia:
Kým prvé tri vrstvy zabezpečenia, ktorým sa bude v krátokosti venovať táto časť seriálu, sú určené na zabráneniu prieniku do systému zvonku, posledné dve spomínané majú dva účely: minimalizovať škody spôsobené pri prekonaní ostatných vrstiev a preniknutiu do systému, a zároveň slúžia na obmedzenie rozsahu pôsobnosti lokálnych používateľov. Filtrovanie paketovPravidlami filtrovania paketov možno veľmi efektívne definovať, ktoré služby a v akom rozsahu budú poskytované. Dobrými pravidlami filtrovania paketov možno zamedziť skenovaniu portov, sťažiť určovanie typu operačného systému, alebo čeliť niekotrým typom útokov založených na vlastnostiach TCP/IP sietí. S podporou filtrovania paketov je na tom operačný systém FreeBSD veľmi dobre. V čase písania tohto článku stabilná vetva FreeBSD obsahuje dva paketové filtre, ipf(8) a ipfw(8). V čase, keď budete čítať tento článok, bude však už s najväčšou pravdepodobnosťou skutočnosťou stabilná vetva FreeBSD 5, v ktorej k spomínaním dvom paketovým filtorm pribudne pf z OpenBSD. Všetko sú to veľmi kvalitné stavové paketové filtre, ktoré dokážu paket doslova obrátiť naruby a podľa zistených skutočností s ním naložiť mnohorakými spôsobmi. Pri riešení otázky, ktorý paketový filter použiť, si treba položiť otázku, na aký účel má byť použitý. V zásade každý z uvedených paketových filtrov dokáže uspokojiť požiadavky väčšiny aplikácií a špeciálne črty niektorého z nich sa ukážu výhodné až pri značne špecifických požiadavkách. Často je rozhodujúcim faktom pri výbere jedného z nich spôsob zápisu pravidiel filtrovania, podľa preferencií administrátora. Navyše, možno používať aj viacero z nich súčasne (týka sa to minimálne ipf(8) a ipfw(8)). Pre podrobnejšie informácie viď man 7 firewall, man 8 ipf, man 8 ipfw a v nich odkazované maunály. Kontrola spojeníPod týmto slovenským opisným názvom sa skrýva anglický termín TCP wrapppers, niekedy do slovenčiny prekladaný ako TCP obálky. TCP obálky skutočne akýmsi spôsobom obaľujú sieťové spojenie a môžu ho povoliť či zakázať. Napriek prítomnosti mena protokolu TCP v názve dokáže FreeBSD implementácia kontroly spojení pracovať aj s UDP "spojeniami" (UDP je nespojovaný protokol a žiadne spojenia sa teda pri ňom nevytvárajú; podľa určitých heuristík je ale možné definovať niečo ako UDP spojenie medzi dvomi stranami komunikujúcimi datagramami). Princíp tohto bezpečnostného mechanizmu je v tom, že pri uzatváraní spojenia sa robí podrobná kontrola iniciátora tohto spojenia a na základe zistených skutočností sa podľa určených pravidiel reaguje. Zisťované informácie sú podrobnejšie, ako pri paketovom filtri. Robí sa spätný preklad IP adresy, pokúša sa zistiť meno používateľa na vzdialenom systéme, ktorý požiadavku na spojenie inicalizoval a podobne. Na základe zistených skutočností o požiadavke na spojenie a pravidiel pre TCP wrappers, možno spojenie nielen povoliť alebo odmietnuť, ale možno naň reagovať aj inými spôsobmi. Pri odmientnutí spojenia možno inicátorovi spojenia odoslať krátku správu, zvyčajne so stručným zdôvodnením odmientnutia spojenia (tým môže byť napríklad nesprávne nakonfigurovaný jeho DNS server). Informácie o niektorých spojeniach možno logovať a neskôr analyzovať, pričom možno použiť buď systémové logovanie, alebo si urobiť vlastné. V princípe možno pri príchode každej požiadavky na spojenie vykonať ľubovoľnú akciu: TCP wrappers umožňujú na príchod požiadavky reagovať spustením akéhokoľvek programu alebo skriptu. Kontrola požiadavky na spojenie prebieha ešte skôr, ako sa táto požiadavka dostane ku konkrétnej požadovanej službe. Táto služba musí byť ale naprogramovaná tak, aby TCP obálky podporovala. Väčšina sieťových služieb, ktoré sú súčasťou operačného systému FreeBSD, túto podmienku spĺňa. Ako príklad možno uviesť sshd(8), ftpd(8) alebo sendmail(8). Najčastejšie sa s pojmom TCP Wrappers spája program inetd(8). Pre podrobnejšie informácie viď man 5 hosts_access. Konfigurácia služiebZatiaľ čo bezpečnostné chyby v samotnom operačnom systéme FreeBSD nie sú časté, chyby v rôznych aplikáciách poskytujúcich sieťové služby sa objavujú veľmi často. Je to dané tým, že tieto aplikácie niekedy podstupujú dosť búrlivý vývoj, menia sa a zmenami sa zavádzajú do ich kódu nové chyby. Poskytované služby sú veľmi rôznorodé a rôznorodé sú aj aplikácie zabezpečujúce tieto služby. Je povinnosťou každého administrátora sledovať webové stránky a elektronické konferencie programov, ktoré jeho server používa. V prípade objavenia chyby je treba pohotovo chybu odstrániť, prípadne službu na nevyhnutný čas do uverejnenia spôsobu opravy prestať poskytovať. Keďže prestať poskytovať službu môže byť niekedy veľmi nepríjemné alebo dokonca nanajvýš nežiadúce, je potrebné s možným objavením bezpečnostnej chyby v aplikácii počítať už pri jej výbere, kompilácii, inštalácii a konfigurácii. Všeobecne platný postup by sa hľadal len ťažko, ale možno sa držať niektorých odporúčaní.
Operačný systém – akýkoľvek – poskytuje zabezpečenie na všeobecnej úrovni. Naproti tomu jednotlivé aplikácie disponujú (alebo by aspoň mali disponovať) špecifickými mechanizmami na zabezpečenie vlastnej bezpečnosti a zabrániť tak svojmu zneužitiu. Ani veľmi dobre zabezpečený operačný systém nie je nič platný, ak nedbanlivo nakonfigurovaný webový či mailový server otvorí do systému ľahko zneužiteľnú bezpečnostnú dieru. O jaile a bezpečnostných úrovniach behu systému bude nasledujúce pokračovanie seriálu. |