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 :-).
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.
Lokální soubor
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.
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.
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:
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ř.
Další ochrana se potom sestává z lokální ochrany každého jednotlivého
počítače a
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.
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.
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í
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í k
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).
http://www.ee.ryerson.ca:8080/~sblack/mat/ http://www.iu.hioslo.no/cfengine/
Příklad konfigurace cfengine:
http://www.tivoli.com//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í diskové kapacity
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ě
Lokální ochrana počítače
/etc/inetd.conf
zda neobsahuje nechtěné a nepotřebné služby.
Na stanici nepotřebujete více než ssh, identd, finger. Na
serveru ještě poštu, ftp, nfs, pop/imap (nejlépe spouštěné pomocí
ssl-wrapperu), httpd a lpd.
/etc/hosts.allow
a /etc/hosts.deny
Příkladem,
který omezí přístup na všechny služby jen ze sítě 147.251.48.0, pouze
na ssh odkudkoliv ze strojů, který má správně nastavený DNS záznam:
/etc/hosts.allow:
sshd: KNOWN
ALL: 147.251.48.0/255.255.255.0
/etc/hosts.deny:
ALL: ALL
/etc/syslog.conf
.
Ochrana sítě
Odkazy a literatura
Programy
Přednášky jenž už na seminářích CZLUGu zazněly:
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/
Konference
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/
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í
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ů.
MAT (Monitoring & Administration Tool)
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)
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.
tidy: /tmp * age=14
)
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)
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