Bezpečný přístup na Internet

Linux+Pokud ještě někdo věří, že v dnešní době je jeho počítač připojený k Internetu v bezpečí, měl by si okamžitě sundat růžové brýle. Při využívání celosvětové pavučiny nejsme sami – současně s námi je tam mnoho osob s různými potřebami a charakterem. Většina z nich využívá síť pro svou práci, nebo zábavu. Pro některé z nich je zábavou, prací a dokonce i způsobem života penetrování cizích počítačů. Samozřejmě to nedělají s dobrým úmyslem. A pokud si namlouváme, že zrovna do našeho počítače se nikdo nevloupe, že na něj nezaútočí žádný červ, pak si tedy nic nenalhávejme – na každého jednou dojde. Proto je třeba používat ochranné prostředky. Umožní nám to v klidu surfovat po Internetu s vědomím, že naše data není lehké ukrást nebo zničit. Piotr Machej

Plánování zabezpečení

Absolutně nesmíme připojit k Internetu počítač, který není zatím zabezpečen. Může se nám zdát, že pokud se připojíme jen na chvilku, tak se nic nestane. To je, ale mylné tvrzení. Útočníci velmi často svoji práci automatizují, spouštějí skripty, které periodicky testují síťové adresy počítačů. Tímto způsobem hledají stroje náchylné na jim známé metody útoků (např. velmi jednoduchá hesla). Může se stát, že náš systém bude napadený již v první minutě po připojení do sítě. Z tohoto důvodu musíme udělat nejvíce bezpečnostních opatření ještě před zavedením Internetu. Než začneme posilovat naše zabezpečení, je dobré si ujasnit čeho chceme dosáhnout. Jestli chceme z našeho počítače udělat nedobytný hrad? Možná chceme pouze ochránit naše fotografie? Také je důležité, zda chceme zpřístupnit nějaké prostředky jiným uživatelům Internetu. Pokud bude počítač určen pro mnoho anonymních uživatelů (např. jako anonymní FTP server), tak použijeme jiné zabezpečení, než v případě kdy na něj bude přistupovat pouze několik vybraných lidí a my. Dobré vymezení našich cílů a potřeb nám umožní lépe využít informace obsažené v tomto článku. Pak velmi lehce vybereme zabezpečení, které musíme aplikovat a vyloučíme to, od kterého můžeme (nebo dokonce musíme) ustoupit.

Využívané služby

Hlavní princip je – spouštět pouze nezbytné služby. Prakticky každá distribuce nám během instalace umožňuje výběr jednotlivých balíčků, které budeme používat. Stojí zato, abychom věnovali trochu času na čtení popisu jednotlivých balíčků a vybrání pouze těch, které opravdu budeme potřebovat. Výhody tohoto postupu jsou dvojí. Za prvé, šetříme místo na disku. Za druhé snižujeme počet nainstalovaného softwaru. Díky tomu můžeme lépe kontrolovat změny v systému a navíc se můžeme vyhnout instalování programů problémových z pohledu bezpečnosti. Stojí zato, abychom si ujasnili, který program budeme využívat pro konkrétní účel. Například, pokud potřebujeme poštovní server, můžeme nainstalovat Sendmail (poměrně toporný při konfiguraci a s množstvím bezpečnostních problémů), nebo Postfix – rychle a snadno konfigurovatelný (a přitom bezpečný). Také v případě ostatního softwaru máme odlišné alternativy, i když ne vždy jsou přidány do distribuce. Čím více nám záleží na bezpečnosti našeho systému, tím více se musíme věnovat instalaci bezpečných aplikací.

Spouštění služeb

Jak jsem již řekl, měli bychom spouštět pouze nezbytné služby. Ale pokud jsme zbytečné ani nenainstalovali, tak oč jde? Může se stát, že ne všechny služby budeme využívat neustále. Popíši známý příklad. Máme počítač, který byl kdysi připojený k Internetu prostřednictvím lokální sítě, ve které také pracovaly počítače se systémem MS Windows. Pro sdílení souborů byla na tomto počítači využívána služba Samba. Po nějaké době byl počítač odpojen od lokální sítě a připojen přímo do Internetu. Samba byla nainstalována, protože se hodí pro sdílení souborů ze systému MS Windows 98, spouštěném pod VMWare. Protože tato funkce je používána příležitostně (jednou za týden, nebo ještě méně), nemáme pravidla pro spouštění Samby při startu systému. Proto také služba tohoto typu má být vypnuta. Spouštíme je pouze tehdy, když jsou potřebné. Způsob výběru služeb, které mají být spuštěny po startu záleží na distribuci. V případě distribucí vycházejících z Red Hatu (například Fedora a Aurox) je třeba smazat nebo přidat odpovídající symbolický odkaz v adresáři /etc/rc.d/. V jiných distribucích může být jméno adresáře jiné. Můžeme také pro tento účel použít nástroj ntsysv. Ale služby spouštěné pomocí superserveru Xinetd můžeme vypnout pomocí změny volby disable v souborech umístěných v adresáři /etc/xined.d/. Výsledky naši práce můžeme sledovat zadáním příkazu netstat -nlutp. Zobrazuje všechny porty TCP a UDP, na kterých naslouchá nějaký program. Mimo to, vidíme jména těchto programů.

Zbytečné služby

Pokud nemáme jistotu, které služby mají být vypnuty, obeznamme se s následujícím seznamem: chargen, chargen-udp, daytime, daytime-udp, echo, echo-udp, finger, imap, imaps, innd, ipop2, ipop3, named, netfs, ntalk, ntpd, pop3s, swat, talk, telnetd, time, time-udp. Obsahuje ty služby, které nemáme zapínat, pokud nejsou absolutně potřebné. Není to kompletní seznam – mimo uvedené služby můžeme mít nainstalovány další programy, které bychom neměli zapínat bez potřeby, dokonce i různé servery FTP (wu-ftpd, vsftpd) nebo všechny služby typu rsh, rexec, rcp, rlogin a jiné ze skupiny služeb, jejichž název začíná písmenem r (může je klidně zastoupit program ssh). Pokud již dojde k zapnutí některé z těchto služeb, měli bychom v rámci svých možností vybrat nejbezpečnější. Například místo imap musíme vybrat šifrovanou verzi imaps a místo ipop3 – pop3s.

Hesla uživatelů

Viděli jste film Nebezpečná síť (Hackers)? Mimo celé jeho naivity v něm bylo trocha pravdy. Hlavně v místě, kde padne otázka na nejpopulárnější hesla používaná uživateli počítačů. Odpovědi byly: love, secret, sex a god. A taková je pravda – mnoho lidí bere na lehkou váhu a vybírá to, co je nejdřív napadne. No kdo by mohl zjistit, že jsem vybral heslo medvidek? A každopádně si ho jednoduše zapamatuji. Stejně jednoduše napadne i útočníka. Zadáním jednoduchého hesla mu usnadňujeme život. Nemusí se trápit s hledáním děr v našem systému a analýzou způsobu jak se do něj prolomit. Prostě spustí program a postupně zkouší hesla ze slovníku a jde na čaj. A když se vrátí, náš počítač je napaden. Proto volíme hesla těžce odhadnutelná, ale stále lehce zapamatovatelné. Také stojí zato, abychom požívali různé programy k lámání hesel – abychom zjistili, jak jsou naše hesla náročná na odhalení. Tato pravidla se netýkají jen hesel pro konto na náš počítač, ale i k poště, internetovému portálu nebo k nějaké síťové hře. Pamatujme na to, abychom nikde (zdůrazňuji – nikde!) nepoužívali stejné heslo, jaké je pro přístup ke kontu uživatele root. Co se týká ostatních hesel, je obvykle těžké zabránit dublování – i z pohledu omezení naší paměti. Je třeba k tomu přistupovat s rozvahou. Jaký má význam zadání silného hesla k našemu kontu, pokud stejné heslo použijeme pro několik internetových služeb, kde jsou ukládány jako otevřený text. To je opravdová pozvánka pro útočníky. Samozřejmě, pokud nemáme spuštěný server SSH, FTP nebo Telnet (na ten poslední raději zapomeňte – neinstalujeme ho a ani ho nespouštíme), tak útočník, který se pokouší dostat k nám z Internetu nevyužije naše heslo. Je dobré být prozíravý – možná někdy spustíme server, nebo k sobě pozveme známého. Je třeba mít silná hesla, těžce prolomitelná.

Testování hesel

Ve většině nových distribucí je během zadávání hesla prováděna jeho vstupní kontrola (například se využívá systému PAM), ale někdy se systém spoléhá pouze na odhad, že zadávané heslo nesplňuje danou normu (např. je moc krátké, nebo velmi jednoduché). Tak, nebo tak je to pouze vstupní rozpoznání. Abychom se přesvědčili, že jsou v našem systému opravdu hesla těžce prolomitelná, musíme použít jiné nástroje – lamače hesel. Jedním z takovýchto programů je John the Ripper. Můžeme ho stáhnou ze stránky http://www.openwall.com/john/. Po jeho instalaci (dle pokynů umístěných v souboru doc/INSTALL) vytvoříme kopii souboru /etc/shadow a umístíme ji do nějakého bezpečného adresáře (musíme zajistit, aby se k němu nedostaly nepovolané osoby). Nyní stačí spustit příkaz john shadow (kopie souboru /etc/shadow se musí nacházet ve stejném adresáři). Pokud se programu podaří rozluštit heslo, vypíše ho na obrazovce současně se jménem uživatele. Protože výpočet může trvat velmi dlouho, občas je třeba stisknout libovolnou klávesu pro kontrolu, jestli program stále pracuje – bude vypsán jeho status. V libovolnou chvíli můžeme jeho činnost přerušit stiskem kombinací kláves [Ctrl]+[C], a následně obnovit práci příkazem john -restore. Rozluštěná hesla jsou mimo zobrazení na monitoru také zapsána v souboru john.pot, umístěném v adresáři, kde se nachází program john. Můžeme je zobrazit příkazem john -show shadow (kde shadow ukazuje na naši kopii souboru /etc/shadow). Pokud chceme zvětšit šanci na odhalení slabých hesel, musíme si stáhnout soubory se slovníky. Příkladový soubor se seznamem slov v různých jazycích je ke stažení na domovské stránce John the Ripper a jeho rozšířenou verzi je možné si objednat za odpovídající úplatu. Jiné seznamy hesel můžeme najít na adrese ftp://ftp.ox.ac.uk/pub/wordlists/. Můžeme je později využít zadáním příkazu john -w=words.lst shadow, kde world.lst je stažený soubor se slovníkem. Stojí zato, abychom se seznámili se souborem doc/EXAMPLES, kde jsou prezentovány další zajímavé způsoby volání programu John the Ripper.

Bez hesel v SSH

Pokud máme spuštěný server SSH, ke kterému mají mít přístup pouze vybraní uživatelé, je třeba se dodatečně zabezpečit. Za prvé, musíme správně nakonfigurovat firewall, aby bylo možné logování pouze z určitých počítačů. Ne vždy to je možné (zvláště, když často cestujeme a logujeme se z různých míst). Za druhé, můžeme znemožnit útoky na hesla. Je to možné díky tomu, že SSH umožňuje autentizaci pomocí klíčového páru. Pokud si každý uživatel mající přístup k našemu počítači bude dobře hlídat svůj privátní klíč a veřejné klíče budou umístěné u nás, tak můžeme klidně vypnout používání běžných hesel. Provedeme to přidáním řádku do souboru /etc/ssh/sshd_config s tímto obsahem: PasswordAuthentication no Po restartu serveru SSH uživatel, který se pokouší nalogovat bez odpovídajícího klíče, musí vidět hlášení: Permission denied (publickey,keyboard-interactive). Pak je třeba dávat pozor, abychom si náhodou neodřízli přístup k serveru umístěném na druhém konci světa. Tímto způsobem se můžeme sami spojovat se vzdálenými servery – místo používání hesla (i když je posílané přes SSH), využijeme klíčového páru. Nejprve ho musíme vygenerovat. Začínáme od zadání příkazu:

# ssh-keygen -t rsa

Budeme dotázáni na jméno souboru, ve kterém bude umístěn soukromý klíč a dále na heslo. Ano, heslo. S výhodami a nevýhodami používání hesla se můžeme seznámit v kapitole Klíče s heslem nebo bez? – na tomto základě se rozhodneme, jestli stiskneme klávesu [Enter], nebo zadáme heslo. Ve výsledku bychom měli získat dva soubory. První z nich (implicitně ~/.ssh/id_rsa) je soukromý klíč, který je třeba střežit jako oko v hlavě. Nikdo mimo nás nesmí mít k němu práva čtení a nejlepší když ho budeme uchovávat na zabezpečené disketě. Druhý soubor (implicitně ~/.ssh/id_rsa.pub) je veřejný klíč, který nemusíme nijak hlídat – každý k němu může mít přístup. Nyní je čas překopírovat náš veřejný klíč na náš účet na vzdáleném serveru. Když to uděláme, přihlásíme se na účet. Musíme se ujistit, že tam máme adresář ~/.ssh/. Pokud ne, tak ho vytvoříme příkazy:

# mkdir .ssh/

# chmod 700 .ssh/

Nyní už zbývá pouze přidat veřejný klíč do seznamu klíčů, které mohou být použity pro spojení s tímto kontem:

# cat id_rsa.pub >> .ssh/authorized_keys

# chmod 600 authorized_keys

Ještě je třeba se ujistit, zda je na vzdáleném serveru zapnuta obsluha klíčů, a že je opravdu používán soubor se seznamem klíčů. V souboru /etc/ssh/sshd_config se musí nacházet následující řádky: PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys Nyní již můžeme opustit tento účet (exit) a zkusit se přihlásit znovu. Tentokrát nás musí vítat nápis: Enter passphrase for key se zadanou cestou k soukromému klíči. Po napsání hesla, které jsme použili při vytváření klíče, budeme nalogováni na naše konto. Samozřejmě pokud jsme se rozhodli nechránit náš klíč heslem, budeme nalogováni bez dalších otázek. Když se někdy rozhodneme změnit heslo k našemu soukromému klíči, můžeme to udělat příkazem:

ssh-keygen -c -f .ssh/id_rsa

Klíče s heslem nebo bez?

Během vytváření klíče se musíme rozhodnout, zda náš soukromý klíč bude chráněn heslem, nebo ne. Je třeba se zamyslet nad tím, co tím získáme, zaměněním jednoho hesla (do systému) za druhé (ke klíči). Hned odpovím – velmi mnoho. Především, eventuální útočník by musel získat jak naše heslo, tak i soukromý klíč, což je velmi obtížný úkol. Tím spíše, když heslo chránící klíč není posíláno po síti. Navíc můžeme využít ten stejný klíč pro spojení se s více servery – a stále používáme stejné heslo. A co když se rozhodneme pro vytvoření klíče bez hesla? Můžeme to udělat, ale pak musíme ještě více chránit náš soukromý klíč. Pokud se někomu podaří získat k němu přístup, bude mít možnost bezproblémového spojení všude tam, kde používáme tento klíč. Proto, pokud má k našemu počítači přístup více osob, je vhodné zadat heslo a stále mít na paměti nebezpečí.

Kontrola integrity systému

Přes všechna zabezpečení, jaká můžeme udělat, se může dříve či později někdo dostat do našeho počítače. Musíme si být vědomi toho, že jediná skutečně bezpečná forma ochrany našeho počítače je odpojení od sítě a uložení do trezoru. Pokud, ale chceme mít počítač připojený k Internetu, musíme počítat s eventuálním průlomem. V takovém případě je nejdůležitější, abychom o něm věděli. Protože se útočník obvykle snaží ukrýt svoji přítomnost v systému a následně získat co možná nejvíce informací, dříve nebo později se bude snažit změnit nějaký klíčový systémový soubor. Může to udělat například s cílem vykradení hesel. Jedním z nejlepších způsobů na odhalení podobných činností je kontrola integrity systému. Je založena na tom, že (okamžitě po instalaci systému) vytváříme databázi obsahující informace o jednotlivých souborech v systému. Tato databáze se uchovává v místě nepřístupném pro útočníka (například na CD). Později můžeme porovnat shodnost souborů se stavem zapsaným v databázi. Samozřejmě pokud sami provedeme nějaké změny v souborech (například provedeme aktualizaci programu), pak databázi musíme aktualizovat také. Jedním z programů umožňujících kontrolu integrity systému je Afick (Another File Integrity Checker). Protože obvykle není součástí distribuce GNU/Linuxu, musíme ho stáhnout domovské stránky (http://afick.sourceforge.net/) nebo z disku dodaného s časopisem. Jeho instalace nedělá žádné problémy a v případě instalace balíčku RPM se okamžitě inicializuje i databáze. Na domovské stránce projektu můžeme najít grafické rozhraní, usnadňující práci s programem, a také modul pro Webmin, který plní stejnou funkci. Z těchto dvou možností osobně doporučuji raději modul pro Webmin – po instalaci je přístupný v sekci system pod jménem Another File Integrity Checker.

Konfigurace Aficku

Hlavní konfigurační soubor programu Afick je soubor /etc/afick.conf. Můžeme v něm zadat cesty k databázi, historii a archivu. Mimo to můžeme nastavit jiné konfigurační volby, jako i vyloučit z archivace databáze soubory s určitou příponou (nebo předponou) ve jméně. Tento soubor obsahuje také seznam adresářů, o kterých se zapisují informace do databáze. Ve většině případů by výchozí nastavení mělo stačit, ale můžeme je podle potřeby modifikovat. Konfigurační soubor obsahuje velmi podrobné a čitelné komentáře.

Odhalení změn v souborech

Pro zjištění, zda neproběhly nějaké změny v systémových souborech, spou-štíme příkaz /usr/bin/afick.pl -k (nebo/usr/bin/afick.pl --compare). Způsobí to opakovanou analýzu všech souborů a porovnání informací o nich s informacemi obsaženými v databázi. Eventuální rozdíly budou zobrazeny na obrazovce. Samozřejmě to můžeme také udělat v grafickém prostředí (stisknutím tlačítka compare) nebo pomocí modulu Webminu (v sekci run Afick, označit v políčku action hodnotu compare a stisknout tlačítko Run Afick). V případě odhalení změn v souborech nemusíme hned panikařit. Nejdříve se ujistíme, zda jsme sami neprovedli nějaké změny (mohli jsme zapomenout aktualizovat databázi). Může se také ukázat, že uchováváme v databázi informace o souborech, které se mění velmi často a nedůležitých – v takovém případě je třeba opravit konfiguraci a znova inicializovat databázi příkazem /usr/bin/afick.pl -i(init v případě grafického rozhraní a modulu pro Webmin). Pokud chceme udělat změny v souborovém systému (například aktualizaci programů), musíme se nejdříve ujistit, že soubory nejsou narušeny. Následně můžeme udělat nezbytné změny a později aktualizaci databáze příkazem /usr/bin/afick.pl -u (update v případě grafického rozhraní nebo modulu pro Webmin). Tento příkaz nám zobrazí provedené změny a do databáze umístí informace o nových souborech. Pokud chceme opravdu důkladně zjistit jaké změny proběhly během instalace softwaru, musíme spustit příkaz update jak před, tak i po instalaci.

Několik úvah

Kontrola integrity systému nemá větší význam pokud má útočník přístup ke konfiguraci a databázi dat. Je třeba uchovávat konfigurační soubor a databázi třeba na CD a aktualizaci provádět dle potřeby. Optimálním řešením je spuštění programu Afick ze zvláštního, zabezpečeného operačního systému, například ze speciálně připravené distribuce spouštěné z CD. Díky tomu budeme mít jistotu, že útočník nemohl modifikovat náš program, ani žádnou část systému. Musíme si uvědomit, že Afick a jemu podobné programy nás neuchrání před vloupáním do systému. Jejich úkolem je pouze dát nám vědět, když dojde k průlomu. Nemůžeme spoléhat pouze na integritu systému – je třeba také kontrolovat systémové logy a spuštěné služby. Také stojí zato, abychom pravidelně dělali kopie důležitých dat. Díky tomu je neztratíme ani z důvodu vandalismu, ani v případě jakékoliv případné havárie hardware.

Firewall

Jedním z nejdůležitějších zabezpečení našeho počítače je firewall. Pokud je správně konfigurovaný, bude chránit porty našeho počítače před útočníky a zpřístupňovat je bude pouze vybraným osobám. Samozřejmě, že my budeme moci využívat Internet bez omezení. V případě aktuálních distribucí GNU/Linuxu, se nejčastěji používá pro filtrování paketů program IPTables. Z pravidla nejlepší metoda vytváření firewallu je použití principu, že blokujeme všechny pakety s výjimkou těch, které skutečně chceme propustit. Zásada je to dobrá, ale v některých případech nám může způsobit problémy. Představme si například, že chceme zpřístupnit uživatelům Internetu server SSH, WWW, FTP a navíc budeme sdílet soubory s použitím BitTorrentu. V takové situaci se může ukázat, že daleko méně úsilí nás bude stát vytvoření firewallu, který bude blokovat přístup pouze na vybrané porty (například poštu, nebo Sambu). Je třeba pamatovat na to, že takovýto firewall nebude moci blokovat možnost spojení se s našim serverem, pokud na něm budou nainstalována nějaká zadní vrátka (backdoor). Výběr metody vytvoření firewallu záleží jen na naší ochotě a zručnosti. Během projektování firewallu pamatujme na to, abychom zablokovali možnost spojení se s naším počítačem ze strojů s adresami lokálních sítí prostřednictvím rozhraní, které nás spojuje s Internetem. Tím předejdeme části útoků podvržením adresy (spoofing). Pokud nám nevyhovují ručně psaná pravidla, můžeme využít některé z grafických rozhraní. Jedním ze zajímavých je Firewall Builder, jehož verze 2.0.2 byla nedávno popsána v Linux+. Tento program můžeme stáhnout z domovské stránky projektu (www.fwbuilder.org) nebo z přiloženého disku v časopisu.

Testování firewallu

Po vytvoření síťového firwallu je nejdůležitější jeho otestování. Bohužel IPTables neobsahuje volbu -C, známou z IPChains, umožňující jednoduché otestování pravidel. Takže si musíme poradit spojením s firewallem z různých strojů umístěných v Internetu a lokální síti nebo využít jiného softwaru. Programy, které můžou být dobrým pomocníkem při testování firewallu jsou například Hping a Firewall Tester. O programu HPing bylo možno si přečíst v Linux+, tak se seznamme s druhým programem. Firewall Tester je soubor skriptů napsaných v Perlu, které můžeme využít nejen pro testování kvality síťového firewallu, ale také systémů odhalování průlomů. Pro správnou funkci Firewall Tester potřebujeme tři moduly dostupné v CPAN: Net::RawIP, Net::PcapUtils i NetPacket. Můžeme je nainstalovat příkazem perl -MCPAN -e 'install Net::RawIP' (změníme název modulu). Na počítači kde máme nainstalovaný firewall, je třeba spustit příkaz ./ftestd -i eth0 (kde eth0 je označení síťové karty). Způsobí to spuštění snifferu odposlouchávajícího pakety vysílané klientem. Klienta spustíme na počítači nacházejícím se bezprostředně za firewallem – slouží k tomu příkaz ./ftest -f ftest.conf. Nejprve musíme připravit odpovídající konfigurační soubor, ve kterém určíme jaké se budou provádět testy. Příkladový souborftest.conf je velmi dobře popsán, takže by neměly být problémy s jeho přizpůsobením k vlastním potřebám. Podívejme se na to, že můžeme využívat jak samostatné pakety, například 192.168.0.5:1025:192.168.0.1:21:A:TCP:0, tak i simulovaná spojení: connect= 192.168.0.5:1025:192.168.0.1:22:AP:TCP:0. Každý test musí končit signálem zastavení: stop_signal=192.168.0.5:80:192.168.0.1:1025:S:TCP:0. Důležité je, aby i ten poslední paket skutečně prošel přes firewall. V dalším případě, pokud jsme na dobu testu změnili nastavení TTL, tak v případě přerušení činnosti skriptu před signálem stop, budeme muset změnit nastavení ručně. Po ukončení testu je třeba překopírovat soubor ftest.log z klienta a ftestd.log ze serveru na jedno místo a následně provést příkaz ./freport ftest.log ftestd.log. Získáme výpis paketů, které prošly, nebo byly blokovány firewallem. Během testování firewallu musíme pamatovat na to, abychom ho zkontrolovali velmi důkladně. Pokud v nějakém pravidle máme definovaný rozsah IP adres, pak kontrolujeme chování firewallu jak pro hraniční adresy, tak i pro ty, ležící mimo rozsah. Je třeba si připravit vlastní skripty pro testování firewallu, díky čemuž nemusíme opakovaně psát stále stejné příkazy. Také provedení změn je v tomto případě jednodušší.

Systémy odhalení průlomu

Seznámili jsme se již s programem Afick, ale on má (podobně jako jiné analyzátory integrity systému) určité velké vady – díky němu se dozvídáme o útoku, který už proběhl. Umění je v tom, odhalit útok ještě v době jeho provádění a zablokovat ho. Jedním z nejlepších programů určených k tomuto účelu je program Snort. Program naslouchá na daných síťových rozhraních a analyzuje pakety, které se tam objeví. Analyzované jsou z pohledu určitých informací pro bezpečnost nebo správného fungování sítě. Díky konfiguraci odpovídajících preprocesorů můžeme zadat Snortu vyhledání informací o pokusech skenování portů, útoky spojené s chybnou fragmentací IP paketů, nebo pokusy ukrytí útoků zakódováním adresy HTTP URI. Následně jsou pakety předány do modulu, který je porovnává s pravidly popisujícími různé druhy útoků (tzv. signatury útoků). Sami musíme vybrat signatury, které budeme potřebovat pro náš systém. Samotný Snort nedokáže popsat, zda spojení v naší síti na určitý port je legální, nebo se má vyhodnotit jako pokus o průlom – o tom rozhodneme během konfigurace. Pokud bude odhalen útok, Snort může reagovat několika různými způsoby. Mimo oznámení administrátorovi a zapsání informací o útoku, může použít prostředky k blokování, např. přeruší spojení s počítačem potenciálního útočníka a dokonce může změnit nastavení firewallu. S takovým zabezpečením musíme nakládat opatrně, protože to může vést k tomu, že útočník bude simulovat útok ze sítě, na které nám záleží. Můžeme to samozřejmě obejít odpovídající modifikací našeho skriptu. Snort možná není příliš jednoduchý na konfiguraci, ale pokud si s tím poradíte, pak získáte nástroj srovnatelný s komerčními. Díky němu budeme moci nejen odhalit útoky, ale také se dozvědět o jiných problémech v naší síti, např. spojenými s chybami v softwaru.

Instalace a obsluha Snortu

Program Snort můžeme stáhnout z domovské stránky projektu (www.snort.org), kde jsou přístupné nejen zdroje, ale i binární balíčky (RPM). Můžeme také využít balíčky dostupné v různých adresářích software (např. DAG – http://dag.wieers.com/packages/snort/). Před spuštěním je třeba zkontrolovat, zda Snort bude čekat na spojení na správném rozhraní. Tato informace je umístěna v souboru /etc/sysconfig/snort v řádku INTERFACE="eth0". Pokud toto spojení se sítí provádí jiné rozhraní, je třeba změnit tuto hodnotu. Je třeba také zkontrolovat konfigurační nastavení obsažená v souboru /etc/snort/snort.conf. Pak už můžeme spustit Snort příkazem /etc/rc.d/init.d/snortd start. Pokud se nyní podíváme do souboru /var/log/messages, okamžitě uvidíme značný nárůst počtu hlášení. Mimo to se objeví adresář /var/log/snort/. Vlastnoruční analýza tolika hlášení je bez významu – je lepší použít již hotové nástroje. Dostupné jsou na stránce www.snort.org/dl/contrib současně s jinými nástroji hodícími se ke Snortu.

Zásady používání počítače

Pokud nám opravdu záleží na bezpečném využívání sítě, neměli bychom to omezovat na jednorázovou bezpečnostní činnost. Každý den se objevují zprávy o odhalení dalších chyb v softwaru. Část těchto chyb může mít větší či menší vliv na bezpečnost. Pokud nedbáme na aktualizaci softwaru, celá naše práce může být zbytečná. Někdy naší chybou, zanedbáním nebo nesvědomitostí můžeme otevřít dveře útočníkovi do systému. Z toho důvodu se během každodenního používání počítače musíme držet pevných zásad:

  • Konto superuživatele (root) využíváme pouze ve výjimečných případech. Například v případě instalace programu ze zdrojů, práva administrátora použijeme pro spuštění příkazu make install.
  • Pravidelně aktualizujeme systém instalací opravených verzí softwaru (samozřejmě i jádra). Je to spojeno se sledováním informací, týkajících se bezpečnosti, a také domovských stránek programů nainstalovaných na našem disku. Pokud jsou pro naši distribuci dostupné aktualizované verze serveru, měli bychom je nainstalovat.
  • Nikdy neinstalujeme software, který pochází z neznámých zdrojů. Mám na mysli náhodné známosti na IRC, nebo servery se softwarem, o kterém nevíme nic, nebo jen málo. Neznamená to, že když si stáhneme programy z velmi populárních stránek nebudeme ohroženi – staly se již případy podvržení obsahu takových serverů s využitím trojských koní.
  • Při instalace programů musíme, dle našich možností, kontrolovat podpisy PGP a MD5 sumy stažených souborů. Tím se ujistíme, že jsme obdrželi software v takové podobě, v jaké ji napsal autor.
  • Vždy volíme hesla velmi těžce prolomitelná. Snažíme se vyhýbat posílání hesel nešifrovanými kanály (například v případě pošty je třeba použít šifrování SSL). Pokud nemáme možnost posílat heslo v zašifrované formě, mělo by být alespoň unikátní (nesmíme ho použít nikde jinde). Díky tomu, v případě jeho odchycení útočníkem, bude napadena pouze jedna služba (např. vzdálená pošta) a ne celý systém.
  • Pravidelně prohlížíme systémové logy – samostatně, nebo s pomocí analyzátoru logů, posílajícího upozornění elektronickou poštou.
  • Děláme záložní kopie pro jednotlivá data. Nejlepší je udělat zálohu na CD, ale v případě chybějící vypalovačky musíme umístit zálohu na jiný diskový oddíl, disk nebo počítač.
  • Nenecháváme počítač přístupný osobám, které neznáme, nebo ke kterým nemáme důvěru. Týká se to nejen přístupu přes SSH nebo FTP, ale také fyzického přístupu. Nespouštíme také žádné příkazy, které jsme dostali od nedůvěryhodných osob, pokud si nejsme absolutně jisti, co daný příkaz dělá.

Závěrem

Většina pokusů o průlom do našich počítačů je výsledkem práce takzvaných script kiddies, tedy osob – zpravidla velmi mladých – používajících hotové skripty. Využívají stejné informační zdroje jako my, takže pokud sledujeme aktuální informace, máme celkem velké šance, že se jim nepovede průlom do našeho systému. Dbejme o náš systém, pak budeme moci s klidem surfovat po naší globální síti.

Z obsahu Linux+ Leden 2005

Hlavním tématem lednového čísla je Bezpečnost. Krom novinek ze světa Linuxu a 2DVD zde najdete spoustu srozumitelných a užitečných článků: Bezpečný přístup na internet, Obnova dat - způsoby a přehled nástrojů, Dvd::rip – DVD ripper, KGpg – správce šifrovacích klíčů, Gubed – debugger skriptů v PHP, Cssed – editor CSS stylů, Vuurmuur – konfigurator firewallů, Simutrans – ekonomická hra, Nessus – bezpečnostní skener, Softwarový RAID a LVM, Vlastní síťový komunikátor, Pyro a OpenSSL – bezpečný internetový komunikátor a test YOPY YP3700. Detailnější obsah naleznete na stránkách Linux+.