Bezpečnost a správa rozsáhlých počítačových sítí

David Košťál, Michael Mráka

Bezpečnost

Úvod

Důvodů k zabezpečování počítačů a sítě je mnoho a je jistě zbytečné je zde opakovat. Místo toho se budeme zabývat tím, jak rozdělit naše data a stroje do skupin vyžadující různé stupně ochrany a ukážeme si nástroje vhodné pro toto zabezpečení.

Pro počítačové sítě je charakteristické, že se administrátoři snaží nejen chránit zdroje před zneužitím, poškozením či se je úplně utajit, ale že mají snahu co nejvíce (právě takovýchto) zdrojů mezi jednotlivými počítači sdílet. To do jejich práce přináší zcela nové prvky a rozměry :-).

Sdílení uživatelských účtů, skupin, etc.

Na Linuxových (a obecněji UN*Xových) strojích je seznam uživatelů uložen v souboru /etc/passwd. Tento soubor je lokální na každém počítači a proto ruční údržba tohoto seznamu v rozsáhlejší síti (ačkoliv není nemožná) je velice náročná a nevhodná. Řešením je buď použít nějaký nástroj na automatickou údržbu tohoto souboru na všech strojích nebo použití nějaké globální, síťové databáze.

Globální údržba uživatelské databáze je možná pomocí systémů NIS, NIS+, Hesiod a dalších. Dotazy na mapování UID->login a zpět pak probíhají dotazem na odpovídající sever po síti. Při výpadku sítě nebo severu se používají záložní servery. Nevýhodou může být čekání na timeouty při úplném výpadku sítě případně neflexibilita některých systémů (NIS neumožňuje vytvářet účty jen na vybraných strojích, tzn.že na všech strojích spojených pomocí NIS jsou stejné účty).

Lokální soubor /etc/passwd používáme například na FI. Lokální soubory zde slouží spíše jako jakési "keše", protože skutečná uživatelská databáze sídlí na Administrativním serveru. Lokální soubory jsou vždy při bootu stroje, přidání či ubrání účtů, změně hesla či na žádost správce automaticky aktualizovány. Totéž platí i pro soubor s uživatelskými skupinami /etc/group.

Sdílení hesel je záležitost podobná, ale ne úplně stejná. Po systému na sdílení hesel totiž můžeme chtít, aby uživatel měl na různých strojích různá hesla nebo aby mu při změně hesla na stroji A bylo toto heslo nastaveno i na strojích B-G.

Systémy NIS, NIS+ umožňují používat pouze jedno heslo pro uživatele.

Mezi podobné systémy, ale o něco sofistikovanější a bezpečnější, patří systémy Kerberos či SESAME.

Na FI umožňujeme mít jak na každém stroji zvláštní heslo, tak nabízíme možnost aby si každý uživatel vytvořil sám skupinu (jednu) strojů, na kterých chce heslo sdílet. Toto je zvlášť užitečné pro jednoduché sdílení hesel mezi pracovními stanicemi s tím, že na důležitých serverech má uživatel jiné, tajnější heslo.

Sdílení diskové kapacity

Zde rozlišíme jaká data se na (sdílených) discích nacházejí. Operační systém a swap je dobré (už z důvodu rychlosti či zbytečného nepřetěžování sítě) mít na lokální stanici. Zabezpečení těchto dat viz.kapitola olokální bezpečnosti. Aplikace by naopak měly být z důvodu snazší údržby a omezení místa které zabírají instalovány na serveru a sdíleny přes některý ze síťových souborových systémů. Ve většině případů jsou aplikace považovány za data, které není potřeba "naprosto" zabezpečovat, snad až na omezení použití pouze uvnitř vaší sítě nebo firmy. Ochrana proti kradení komerčního SW by měla být řešena přes pomocí těchto programů, které si při spuštění ověří platnou licenci u některého ze síťových licenčních serverů. Oproti poškození by se sdílené aplikace měly chránit tím, že na všechny stanice (kromě jedné kde se SW instaluje) budou poskytovány jen pro čtení.

Zcela samostatnou kapitolou jsou uživatelská data. Sem patří domovské adresáře uživatelů, jejich pošta. To jsou osobní informace, kterým by měla být poskytnuta větší ochrana, a to i před neoprávněným čtením (například při odposlechu sítě, nastavení správných UN*Xových přístupových práv je samozřejmostí :-)

Při sdílení těchto dat po síti se navíc objevují i tyto problémy:

Nyní si ukážeme některé ze síťových souborových systémů spolu s jejich klady i zápory.

Možnosti ochrany sítě

Než začneme budovat síť je potřeba si uvědomit několik "maličkostí". Většina útoků pochází překvapivě z řad lokálních uživatelů. Útoky zvenčí jsou řádově menší co do počtu a také mnohem menší co do možností typu útoku. V ochraně před lokálními uživateli nám hlavně pomáhá bezpečnostní politika organizace, která určuje např.kdo má právo přístupu ke kterým zdrojům, jaká jsou omezení na připojení do sítě (v době od 8 do 20 hodin, nikdo nemá právo připojovat žádný HW), a hlavně definuje postihy za nepovolenou činnost.

Další ochrana se potom sestává z lokální ochrany každého jednotlivého počítače azochrany sítě a přístupu do ní.

Lokální ochrana počítače

Je doplněk ochrany sítě. Žádná z těchto ochran není dostačující samostatně a i dohromady jen umožňují o něco větší ochranu a možnost logování. Je velice dobré si uvědomit, že "bezpečnost" není něco co by šlo koupit nebo nainstalovat, ale že to znamená aktivní přístup správce sítě/počítače. Zde uvedené nástroje, postupy a metody jen zjednodušují práci administrátora.

Následující body by Vám mohly pomoci při zajišťování bezpečnosti lokálního stroje (při pohledu ze sítě). Rozhodně ale netvoří úplný výčet akci, které je potřeba pro zabezpečení provést.

Ochrana sítě

Je doplněk lokální ochrany počítače. Žádná z těchto ochran není dostačující samostatně a i dohromady jen umožňují o něco větší ochranu a možnost logování. Je velice dobré si uvědomit, že "bezpečnost" není něco co by šlo koupit nebo nainstalovat, ale že to znamená aktivní přístup správce sítě/počítače. Zde uvedené nástroje, postupy a metody jen zjednodušují práci administrátora.

Ochrana sítě začíná u síťového HW. Vhodnou topologií sítě doplněnou správně umístěnými switchi můžete docílit toho, že bude téměř nemožné a méně důvěryhodných míst (učebny, ...) odposlechnout provoz na důvěrnějších částech sítě. Samozřejmě pak nesmíte zapomenout na zaheslování "inteligentnějších" síťových prvků -- routerů, switchů,...

Dalším módním doplňkem Vaší sítě může být použití firewallů. Firewally (obecně) oddělují lokální síť od Internetu, případně dvě (či více) lokální sítě od sebe. Firewally neochraňují před útoky zevnitř, ale před útoky zvenčí (lépe řečeno je ztěžují a zaznamenávají).

Typy firewallů:

Pravidla pro použití firewallů (opět jen z těch hlavních):

Typické topologie při použití firewallu jsou například následující. Jeden FW hlídající lokální síť. Pak veřejné servery mohou být buď před FW (jsou snáze napadnutelné) nebo za FW (nedoporučuje se, protože když jsou úspěšně napadeny, otvírají nekontrolovatelný přístup do Vaší sítě). Druhou možností je buď za použití dvou FW nebo jednoho s více síťovými rozhraními vytvořit tzv.demilitarizovanou zónu (DMZ),kde budou (odděleně od Vaší sítě a přitom chráněny FW) umístěny servery poskytující veřejné služby (WWW, FTP,...).

Odkazy a literatura

Programy
TCPD: ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz
Q-MAIL: http://www.qmail.org/
SSL wrapper: http://www.rickk.com/sslwrap
SSH: ftp://ftp.fi.muni.cz/pub/ssh/ a originál http://www.cs.hut.fi/ssh
IP Chains: http://www.rustcorp.com/linux/ipchains/
TIS Firewall Toolkit: ftp://ftp.tis.com/pub/firewalls/toolkit
CODA: http://www.coda.cs.cmu.edu/
AFS: http://www.transarc.com/Support/afs/
Kerberos: http://210.34.0.26/faq/kerberos-faq/
Přednášky jenž už na seminářích CZLUGu zazněly:
AFS -- Miroslav Ruda http://www.linux.cz/jevicko/AFS
Bezpečnost UN*Xových OS -- David Košťál http://www.linux.cz/jevicko/Bezp/bezp.ps
Firewall pod Linuxem -- Jan "Yenya" Kasprzak http://www.linux.cz/cikhaj/Firewall/
Sendmail -- Petr Kolář http://www.linux.cz/cikhaj/Sendmail/
Konference
RootShell http://www.rootshell.com/
Bugtraq bugtraq@netspace.org (listserv@netspace.org)
Linux linux@linux.cz
Linux-security linux-security@redhat.com

Správa rozsáhlých počítačových sítí

Při správě malé sítě s několika stanicemi a jedním serverem není nutné používat žádné speciální softwarové nástroje. Vše je jednoduše řešitelné pomocí ručních zásahů, případně jednoduchých shellovských skriptů. V případě správy rozsáhlé sítě se stovkami stanic a serverů s několika různými operačnímy systémy to již možné není. Shellovské skripty začnou obsahovat příliš mnoho konstrukcí if... then... else, aby ošetřily jednotlivé rozdíly, a změny provedené ručně si člověk při dobré vůli není schopen zapamatovat. V tuto chvíli je tedy nutné začít používat softwarové nástroje určené pro správu rozsáhlých systémů.

Je zřejmé, že při libovolných změnách musíme postupovat mnohem systematičtěji a dodržovat větší disciplínu, než při správě malé sítě, jinak nám příští reinstalace (upgrade) velmi pravděpodobně zničí naši pečlivě vyladěnou konfiguraci. To, co potřebujeme, jsou separátní záznamy potřebných změn na všech systémech v síti; záznamy, které lze porovnat se stávajícím stavem libovolného stroje, a mechanismus sloužící kopravě případné odchylky od uváděného standardu.

Co bychom měli od těchto nástrojů požadovat a očekávat? Především možnost definovat nastavení celé sítě pomocí jediného centrálního konfiguračního souboru (množiny souborů). Uvedená konfigurace musí být triviálně rozšířitelná i na nové stanice, o které se síť v budoucnu rozroste. Vzhledem k (částečné) diverzitě mezi stanicemi, servery a různými operačními systémy, budeme požadovat možnost 'výjimek', tj. rozdělení systémů na třídy podle jejich vlastností jak statických (OS, IP adresa,...), tak i dynamických (např. momentální zaplnění disku, load, počet uživatelů, čas,...). K 'akcím', které takový program bude provádět, by pak kromě editace souborů (tj. konfigurace), nastavení síťových rozhraní a routování, mountování (případně export) sdílených disků měly patřit i globální služby, např. údržba DNS. Z (nejen) bezpečnostního hlediska jistě oceníme i možnost monitorování změny vlastností důležitých souborů (přístupová práva, vlastník, skupina, případně i obsah).

MAT (Monitoring & Administration Tool)

http://www.ee.ryerson.ca:8080/~sblack/mat/
Shareware; perl + shell skripty, binárky bez zdrojového kódu. Obsahuje GUI interface, který se snaží odstínit uživatele od poměrně složitého formátu konfiguračních souborů; podporuje heterogenní UNIXové prostředí. Umožňuje delegovat některé běžné administrativní úkoly na jiné uživatele. Kromě správy umožňuje monitorovat vytížení procesoru, místo na disku,... Umí vzdáleně spouštět procesy.

Cfengine (Configuration engine)

http://www.iu.hioslo.no/cfengine/
GNU licence. Založen na vyšším jazyku pro popis konfigurací a příkazů. Vlastní konfigurační soubory jsou strukturované, přehledné, snadno editovatelné libovolným editorem. Podporuje heterogenní UNIXové prostředí, možnost spouštění programů na vzdáleném stroji, testování změn souborů, možnost používání neprivilegovanými uživateli.

Příklad konfigurace cfengine:

groups:
	FTPServers = ( castor pollux )
editfiles:
	{ /etc/inetd.conf
	HashCommentLinesContaining "finger"
	AppendIfNoSuchLine "cvspserver  stream  tcp  nowait  root \
	         /local/gnu/bin/cvs cvs -b /usr/loca l/bin pserver"
	}
FTPservers.Sunday.Hr00::
	/local/etc/xferlog rotate=3

Tivoli (Tivoli management software)

http://www.tivoli.com/
Komerčně vytvořený software. Primárně vytvořen pro správu sítě se stanicemi Windows*, podporuje i propojení s UNIXy; kromě administrace podporuje i 'rozšiřování' instalací (snapshot disku, zkopírování na jiný). (Podporuje možnost sdílet jedno heslo mezi Windows* a UNIXy ?!?!?.)

Obdobné projekty:

Host Factory (http://www.wv.com/) řízení + synchronizace nainstalovaného software mezi UNIXovými stroji.
Plantir (http://www.palantir.uio.no/) monitorování strojů, zátěže, remote filesystémů,...
Webmin (http://www.webmin.com/webmin/) administrace UNIXu skrze webovský prohlížeč
The COAS project (http://www.coas.org/index.html) Caldera Open Administration System
PIKT (http://pikt.uchicago.edu/pikt/) Problem Informant/Killer Tool