Dnes si uděláme malou odbočku od internetového bankovnictví, protože to nemá s nezabezpečeným počitačem smysl ...
27.4.2004 08:00 | Ondřej Čečák | přečteno 18985×
Bezpečnost je tak důležitá, jak jsou pro vás důležitá vaše data a vše, co souvisí s počítačem, se kterým pracujete. Pokud je váš počítač připojen k internetu, máte velice dobrý důvod se o bezpečnost zajímat, protože rizika jsou opravdu podstatná.
Ačkoli původní Unix nebyl přímo navržen s ohledem na bezpečnost, lze dnes unixové systémy včetně Linuxu zabezpečit poměrně dobře. Díky otevřenosti zdrojových kódu jádra a programů lze poměrně snadno prozkoumávat výhody a slabiny programů na té nejnižší úrovni a díky licenci GNU GPL tyto slabiny opravit nebo možnost jejich výskytu omezit. Nicméně, používání bezpečných programů je jen část úkolu – neméně důležité je služby také správně nakonfigurovat.
Linux je víceuživatelský systém, jednotlivé uživatele lze navíc sdružovat do skupin. Obvyklé je, že určitá skupina má nějaké oprávnění (přístup k adresáři s důvěrnými dokumenty, možnost pracovat se zvukovou kartou atp.).
Od obyčejných uživatelů se trochu liší superuživatelský účet root, který obvykle má téměř absolutní vládu nad systémem (obvykle proto, že dnes již existují možnosti, jak moc roota omezit nebo rozdělit). Proto je velice důležité, aby byl tento účet používán pouze na věci, na které je nezbytné ho používat. Pokud existuje činnost, kterou může vykonávat obyčejný (nebo k tomu určený) uživatel a přesto ji dělá root, jde o čistou ignoraci bezpečnostních pravidel (extrémem může být např. spouštění KDE jako root). Všechny programy můžou obsahovat chyby (nebo úmyslné skryté funkce), které v případě spuštění uživatelem může ohrozit pouze data, ke kterým má právo zápisu, ale v případě spuštění rootem celý systém.
Práva k souborům a adresářům umožňují určit, kdo bude mít k datům přístup a to na několik úrovních – čtení, zápis a spouštění a to pro různé uživatele nebo skupiny. Další možností jak omezovat možnosti práci se soubory jsou atributy (pouze na určitých filesystémech) nebo ACL (Advanced Control List, více článek na root.cz), které umožňují jemnější a komplexnější nastavení oproti klasickým unixovým právům (také to vyžaduje podporu filesystému, kterou ale většina moderních filesystémů už má).
Rozhodně není dobrý nápad myslet si, že jestli je moje internetové připojení pomalé, tak mi nehrozí žádné nebezpečí. Právě naopak, díky vašemu špatnému přístupu je nebezpečí naopak velké – existují automatické nástroje, které testují celý rozsah veřejných IP a zkouší bezpečnost – nejčastěji jednu určitou díru, přes kterou se pak zlý uživatel pohodlně a rychle dostane.
A k čemu mu takový systém bude? I když by ho teoreticky mohli zajímat vaše data, spíš se váš desktop stane satelitní základnou pro další útoky. Když už váš počítač nebude scanovat síť, může být použit k útoku tak, že případné stopy budou vést k vám. A nebo může dělat cokoli co ho napadne – pokud by vás bavilo sledovat, co by takový člověk dělal, nainstalujte si honeypot nebo něco podobného (honeypot je jeden nebo více virtuálních strojů, které mají za úkol nalákat potencionální crackery na nějakou bezpečnostní slabinu a následně toho nějak využít).
V této kapitole se pokouším vysvětlit alespoň pár dobrých (bezpečnostních) návyků.
Několik věcí je opravdu zcela základních (a přitom zásadních), třeba heslo. Heslo by mělo být zvoleno optimálně – ani moc krátké (heslo tak chvíli odolá útoku, při kterém se zkoušejí všechny možnosti), ani moc jednoduché (další z možných útoků funguje tak, že zlý útočník vezme nějaký slovník a hesla jako křestní jména, existující slova apod. jsou rychle prolomena), ale také by nemělo být moc složité, protože pak není jednoduché si takové heslo zapamatovat – a pokud si ho napíšete na papírek, který následně umístíte na monitor nejlépe spolu s jménem a názvem služby, nemůžete pro někoho se zlými úmysly pohybující se fyzicky poblíž vašeho počítače udělat víc. Přesto se ale vyplatí dát do hesla sem tam nějaké to číslo nebo speciální znak, pokud je třeba jeden uprostřed hesla, není zas takový problém se zapamatováním. Také není špatný nápad heslo měnit v intervalu podle důležitosti služby.
Jak tedy volit heslo:
Další věcí je, jak se správně s nějakým heslem chovat. První důležitou věcí je zvolit si různá hesla pro různé služby (nebo alespoň rozdělit služby do skupin podle toho, jak je daná věc důležitá, nebo podle toho, kdo bude heslo znát, protože v případe získání hesla u jedné stejně důležité služby by admin nebo cracker získal přístup k další stejně důležité službě). Pokud budete používat jedno heslo pro různé služby, útočníkovi stačí získat přístup k jediné službě a rázem má kontrolu téměř nad vším a vaše snaha vytvářet a pamatovat si bezpečná hesla je rázem zcela zbytečná.
Ke správné práci s heslem patří i správné zadávání hesla. Je dost nerozumné přihlašovat se na důležitou službu z internetové kavárny, kde se hodně lidí baví tím, že si zaznamenávají všechny stisknuté klávesy včetně vašich autentizačních údajů. To samé ale platí také pro všechny ostatní počítače, vždy byste měli přemýšlet, jestli počítač "známého" není pastí ...
Pokud už heslo zadávám do klávesnice, měl bych se také ujistit jestli mi zvědavý kolega (nebo vtipně umístěná kamera) nekouká přes rameno, případně jestli je bezdrátová klávesnice opravdu připojena ke správnému počítači :o).
Před každým zadáním hesla se opravdu vyplatí myslet. Vždy se vyplatí zvážit možná rizika odposlechu hesla (komunikace může být nešifrovaná nebo přes nedůvěryhodné počítače, ...) nebo jiné způsoby podvodu. A už vůbec by se vám nemělo stát, že se vám při zadávání hesla stane, že místo hesla pro relativně nedůležité služby zadáte to nejtajnější ...
Obecně není zadávání hesla moc bezpečné, protože obvykle vždy existují nějaká rizika odhalení. Existují také jiném možnosti autentizace, např. přihlašování pomocí certifikátů, jednorázových hesel, USB tokenů apod. Pokud se přihlašujete především díky certifikátům, také není špatný nápad zvolit si dlouhá a složitá hesla, která budou pro případ nutnosti uložena na rychle dostupném a bezpečném místě (v ideálním případě napsaná jinak než s použitím počítače a také uložena na místě, kam se použitím počítače nelze dostat).
Hesla také můžete ukládat v nějakém programu, který je bude všechny šifrovat a k přístupu ke všem heslům bude třeba hesla jednoho. Samozřejmě je jasné, že takový program musí běžet na co nejlépe zabezpečeném počítači a heslo, které slouží pro přístup k ostatním musí být logicky co nejbezpečnější – pokud tedy rovnou nebudete používat klíč, který budete nosit s sebou na nějakém médiu (nezapomínejte také na možnost ztráty apod.).
Hesla, která jsou uložené v konfiguračních souborech také nejsou dobrý nápad, pokuste se zkonfigurovat služby tak, aby takovéto soubory neexistovaly. Pokud to není dost dobře možné, nastavte práva tak, aby právo pro čtení pro soubor náleželo pouze vám (pozor, to že je váš home dostupný pouze pro vás nemusí znamenat bezpečí, protože může existovat program, který není bezpečný a útočníkovi umožní restriktivní práva na domovském adresáři obejít).
Obvykle (existují nepatrné výjimky) je v každém větším programu spousta chyb. Nebudu rozebírat jak vznikají nebo jakých jsou typů – prostě jsou. A jejich nejjednodušší dělení je na objevené a neobjevené.
Pokud používáte programy, ve kterých jsou známé bezpečnostní chyby, tak je rozumné chybu nějakým způsobem odstranit – upgradovat na verzi programu, kde chyba už není nebo použít záplatu (patch), který chybu opraví. Každá "větší" linuxová distribuce má webové stránky (příp. emailové konference) o bezpečnosti a obvykle se zde oznamují nalezené chyby a jejich opravy. Vyplatí se tyto konference sledovat nebo systém pravidelně upgradovat tak, aby byl pokud možno bezpečný.
To, že jsou v programech chyby, které ještě nikdo neobjevil, není zas takové neštěstí, ale přesto je rozumné vhodně se bránit. Protože od doby, kdy je odhalena trochu důležitější bezpečností slabina do doby opravy je váš počítač potencionálně zranitelný. Proto se vyplatí stanovit nějakou bezpečnostní politiku, která podobným věcem zabrání (wrappery, firewall apod., těmto věcem se budu věnovat později).
Proč se vůbec zabývat bezpečností? Jak jsem zmínil úplně v úvodu, bezpečnost je stejně důležitá jako vaše data a jako služby, na které se spoléháte. Kromě vlastního zabezpeční aplikací ale také musíte věnovat pozornost dalším věcem – (pokud je to nutné) zálohování zdroje el. energie, konektivity k síti (internetu). Zkuste si představit, co by se stalo v případě výpadku nebo selhání určité komponenty, zamyslete se nad tím a pokud to bude nutné, udělejte patřičná opatření.
Vaše chování by mělo být promyšlené, protože v bezpečnosti obvykle platí, že bezpečnost celku je stejně velká jako bezpečnost nejslabšího místa. A těchto slabých míst je několik, ať už slabá hesla, nebo děravý software.
Proto byste měli dodržovat několik následujících doporučení:
Zabezpečení domácího počítače je poměrně jednoduché, zakažte všechny služby, které standardně běží a které nepotřebujete (třeba zakomentováním v /etc/inetd.conf a podobně), ty které potřebujete lokálně spusťte tak, aby nebyly dostupné po síti a u těch služeb, u kterých je potřeba, aby po síti běžely, omezte přístup (použijte iptables a/nebo tcpwrappers).
Firewall je přímo v linuxovém jádře a definuje, jak se jádro bude chovat k provozu přes síťová zařízení (filtruje pakety a rozhoduje, jestli je nechá projít, jestli je odmítne a nebo zahodí). Podrobný popis firewallu je ale mimo rámec tohoto článku. O firewallu si můžete přečíst v článku na tomto serveru nebo ve zdařilém seriálu na root.cz.
Tcpwrapper umožňuje rozhodnout, jestli bude služba s protějškem komunikovat. V Linuxu ho může mít nějaká služba buď vlastní a nebo používat standardní, který se konfiguruje editací souborů /etc/hosts.allow a /etc/hosts.deny.
Další informace o firewallech a tcpwrappers najdete třeba v security quickstart howto.
Jak už jsem poznamenal výše, vyplatí se pravidelně záplatovat software a používat silná hesla.
Ačkoli v porovnání s ostatním může být zálohování trošku nudnou záležitostí, v okamžiku, kdy o nějaká data nějak přijdete (selhání lidského faktoru, software, hardware; počítačový útok), si uvědomíte, jak důležité zálohování je. Ne nadarmo se říká, že data se dělí na dvě skupiny: data, která pravidelně zálohujeme a data, o která jsme ještě nepřišli.
Než se vrhnu na popis způsobů zálohování, další možnost je zajistit určitou redundanci dat na disku a do určité míry předejít potřebě odstavení systému a obnovování dat ze zálohy. Protože mluvím o discích, linuxové jádro umí tzv. RAID – jednotlivé disky můžou být zrcadleny, takže v případě selhání jednoho může systém běžet dál nebo alespoň nepřijdete o data apod. Více informací najdete v článku na root.cz.
Poměrně dost možností máte ve výběru, jak a kam zálohovat:
Pár doporučení:
Kromě klasických programů, jakými jsou dump/restore a tar existuje řada sofistikovanějších nástrojů (počínaje např. amandou a konče Tivoli). Existují také věci, které je lepší zálohovat jinak, než prostým zkopírováním souborů například dump databáze a podobně. Seznam programů můžete najít v adresáři Utility – zálohování.
To je prozatím vše, v druhé (a současně závěrečné) části se podíváme na možnosti útoku a to jak lokální, tak vzdálené.
Za konzultace bych chtěl poděkovat Honzovi Houšťkovi.