}w !"#$%&'()+,-./012345
Masarykova univerzita Fakulta informatiky
Bakalářská práce
Systém pro reakci na útoky po síti
Vypracoval Marcel Kolaja
Vedoucí Mgr. Jan Kasprzak
Brno, červen 2002
Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Poděkování Děkuji vedoucímu práce, Mgr. Janu Kasprzakovi, a Mgr. Martinu Povolnému za půjčení knihy Programování v jazyce Perl.
1
Shrnutí V práci jsou popsány metody detekce útoků po síti, metody reakce na tyto útoky a některé konkrétní implementace IDS.
Klíčová slova bezpečnost, intrusion detection system, reakce na útok, útok
2
Zadání Seznamte se s metodami pro detekci útoků po síti, s metodami okamžitých reakcí na tyto útoky a s konkrétními implementacemi těchto metod v OS Linux. Na základě získaných znalostí implementujte systém pro reakci na útoky po síti.
3
Obsah 1 Úvod 1.1 Co je IDS . . . . . . . . . . . . . . 1.2 Co nám IDS nabízí . . . . . . . . . 1.3 Struktura IDS podle CIDF . . . . 1.4 Principy a techniky detekce . . . . 1.4.1 Dělení podle přístupu . . . 1.4.2 Dělení podle implementace 1.5 Reakce na útoky . . . . . . . . . . 1.5.1 Aktivní reakce . . . . . . . 1.5.2 Pasivní reakce . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
6 6 6 7 8 8 9 9 9 10
2 Implementace IDS 2.1 BENIDS . . . . . . . . . . . . . . . . . . 2.2 Linux Intrusion Detection System . . . . 2.3 Snort . . . . . . . . . . . . . . . . . . . . 2.4 Firestorm NIDS . . . . . . . . . . . . . . 2.5 Prelude . . . . . . . . . . . . . . . . . . 2.6 Tamandua Network Intrusion Detection
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
11 11 11 12 12 13 13
3 Systém iblockd 3.1 Co je iblockd . . . . . 3.2 Jak iblockd funguje . . 3.3 Části iblockd . . . . . 3.4 Konfigurace . . . . . . 3.5 Vzorky útoků . . . . . 3.6 Reakce na útok . . . . 3.7 Bílá listina . . . . . . 3.8 Implementační detaily
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
14 14 14 15 15 17 17 18 19
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . .
. . . . . . . .
4 Závěr
20
A Obsah CD
23
4
Seznam obrázků 1.1
Schéma struktury IDS podle CIDF . . . . . . . . . . . . . . .
7
3.1
Schéma iblockd . . . . . . . . . . . . . . . . . . . . . . . . . .
15
5
Kapitola 1
Intrusion Detection System Při provozu jakéhokoli systému, jenž poskytuje služby, které jsou dostupné vzdáleně ze sítě, se musí administrátor vždy starat o bezpečnost.1 Touto sítí bývá u většiny systémů Internet. A právě Internet je sítí, z níž můžeme očekávat různé útoky, neboť do ní má přístup kdokoli. Intrusion Detection System (neboli systém pro detekci průniku, často též nazývaný IDS) představuje jeden ze způsobů, jak lépe zabezpečit systém.
1.1
Co je IDS
Jedna z vlastností dobře zabezpečeného systému je detekce útoku. A tuto vlastnost nám poskytuje právě IDS. Většinou však detekce sama o sobě není dostatečnou obranou a požadujeme po takovém systému také vhodnou reakci. Reakce na útok komplikuje útočníkovi cestu do systému. Nejjednodušší a také nejčastěji používaná reakce na útok je kontaktování administrátora, ale může být také mnohem sofistikovanější.
1.2
Co nám IDS nabízí
Útok z Internetu může zasáhnout kdykoli. Jedním z důvodů je, že Internet je sítí celosvětovou a útočník se tedy nemusí nutně vyskytovat ve stejném časovém pásmu jako systém, který se snaží napadnout. Dalším důvodem je skutečnost, že nemalé procento útoků tvoří tzv. Internetoví červi, jenž procházejí Internet a napadají cizí systémy sami, aniž by potřebovali jakoukoli interakci s útočníkem. Systémový administrátor by tedy měl být stále připraven čelit útoku. Avšak v noci, když administrátor spí, nemůže útočníkovi bránit v jeho aktivitách a systém se musí ubránit sám. Dokonce je pro administrátora těžké se bránit útoku i ve chvíli, kdy je v systému přihlášen, a to z toho jednoduchého důvodu, že o útoku neví. 1
Respektive o bezpečnost se musí starat v každém případě. Pokud je však systém dostupný ze sítě, musí být na bezpečnost kladen mnohem větší důraz.
6
O útoku ho může informovat IDS. Administrátor pak může rychle zakročit. Čím chytřejší IDS je, tím méně má administrátor práce, neboť dostatečně sofistikovaný IDS mu může poskytnout podrobné informace o útoku. Některé IDS dokáží zjistit, např. o jaký typ útoku se jedná.
1.3
Struktura IDS podle CIDF
Common Intrusion Detection Framework (CIDF) je návrh struktury IDS. IDS splňující podmínky CIDF se skládá ze čtyř komponent: • komponenta pro analýzu (analysis box, označovaná jako A-box) • komponenta protiopatření (countermeasure box, označovaná jako C-box2 ) • komponenta pro ukládání informací (data box, označovaná jako D-box) • komponenta událostí (event box, označovaná jako E-box)
Obrázek 1.1: Schéma struktury IDS podle CIDF E-box shromažďuje informace relevantní pro detekci, jako jsou například záznamy systému (system log) nebo síťová komunikace. Tato data jsou převáděna do určitého formátu a posílána komponentě A-box, případně mohou být posílána i komponentě D-box pro pozdější detailní rozbor. V komponentě A-box jsou pak tato data podrobena vlastní analýze. Pokud je detekován útok, jsou komponentě C-box poslány patřičné informace o útoku. Navíc je výsledek analýzy předán komponentě D-box, která zajistí jeho uložení. Komponenta C-box je odpovědná za reakci na útok podle předem stanovené bezpečnostní politiky. 2
Komponenta protiopatření se někdy označuje též R-box neboli response box.
7
1.4
Principy a techniky detekce
IDS mohou být rozděleny do několika kategorií. Můžeme je dělit podle přístupu k detekci útoku a podle způsobu, jakým jsou implementovány.
1.4.1
Dělení podle přístupu
Anomaly Detection Intrusion Detection System (AD-IDS) se v průběhu své činnosti učí, jak vypadá běžný provoz systému. Současně porovnává tento model běžného provozu s aktuálním stavem systému. Jakákoli anomálie v chování systému je považována za útok. Tento přístup je velice zajímavý a nabízí nám spoustu možností. Bohužel je těžké takový systém naimplementovat, protože je velmi obtížné rozeznat bežný provoz systému, a tak tento přístup s sebou přináší i některá úskalí, na která si při tvorbě obrany systému musíme dát pozor. U velkých komplexních systémů se může jejich provoz zdát natolik náhodný, že nebude možné rozeznat útok. Útočník se dokonce může pokusit postupně generovat v systému provoz, jenž bude mít za následek vytvoření modelu běžného provozu, podle kterého nebude útok rozeznán. Bude-li naopak AD-IDS příliš striktní, bude generovat velké množství falešných poplachů3 , na které si administrátor zvykne a bude je ignorovat4 . Misuse Detection Intrusion Detection System (MD-IDS) obsahuje signatury (vzorky), z nichž každá představuje nějaký útok. Při své činnosti vyhledá tyto vzorky, a pokud některý z nich najde, ví, že se jedná o útok. U MD-IDS se jen velmi zřídka může stát, že vyvolá falešný poplach, protože ví, co znamenají jednotlivé signatury. Dokonce je schopen administrátorovi prozradit, o jaký útok se jedná, a sofistikovaný MD-IDS může též sám zjistit potřebné informace o útoku. Na základě těchto informací se pak může (automaticky nebo ručně) vykonat určité protiopatření. MD-IDS se však narozdíl od AD-IDS neumí sám zlepšovat. Pozná jenom útoky, ke kterým má signatury. Proto musí být tyto signatury aktualizovány, avšak ani tím nelze dosáhnout úplného bezpečí. Žádný MD-IDS nemůže poznat útok, který ještě nikdo neviděl. IDS může přistupovat k detekci útoku také jako poplašné zařízení: Pokud je v budově nainstalován bezpečnostní systém, poslední zaměstnanec odcházející z práce jej aktivuje. Po jeho aktivaci vstoupí v platnost předem nadefinovaná bezpečnostní politika (například nikdo by neměl otevírat dveře, stejně tak jako manipulovat s okny, rozbíjet sklo nebo se pohybovat v kancelářích). Analogicky může pracovat IDS. Bude sledovat provoz, a pokud zjistí, že nastala situace, která je zakázána nastavenou bezpečnostní politikou, infor3 Těmto falešným poplachům se říká false positives. Pokud naopak systém útok přehlédne, hovoří se o false negative. 4 Tento jev je též nazýván crying „wolf !ÿ.
8
muje administrátora o útoku. Tento typ IDS je vlastně speciálním MD-IDS, který musí vědět, co je v systému zakázáno a co je povoleno.
1.4.2
Dělení podle implementace
V dnešní době se hojně používají dva způsoby implementace IDS. Jeden se nazývá host-based a druhý network-based. Dále existuje alternativa nesoucí název autonomous agent-based. Host-based IDS (H-IDS) pozoruje chování systému, na němž je nainstalován, a podle získaných informací rozhoduje, zda není systém vystaven útoku. Toto rozhodování však může zkonzumovat tolik strojového času, že již nebude prováděno v reálném čase. Network-based IDS (N-IDS) sleduje síťový provoz a vyhledává v něm známky útoku. Tento způsob přináší jednu velkou výhodu. Mnoho útoků napadá síť jako celek. Takový typ útoku host-based IDS nezaznamená. Monitorování sítě nám však může pomoci. Autonomous agent-based IDS (AA-IDS) je jistým způsobem distribuovaný systém. Na systému, jenž sledujeme, je spuštěn agent. Tento agent monitoruje provoz nebo dokonce detekuje útoky. Informace z agentů jsou posílány na další součásti IDS, kde jsou dále zpracovávány. Jedním z AA-IDS je Autonomous Agents For Intrusion Detection (AAFID). AAFID má hierarchickou strukturu. Agenti jsou na nejnižší úrovni. Každý z nich vykonává jiný úkol a může jich být spuštěno několik na jednom stroji. Každý agent posílá své informace přijímači/vysílači (transceiver) umístěném na stejném stroji. Přijímač/vysílač monitoruje a kontroluje agenty, může je spouštět, vypínat a konfigurovat. Přijímač/vysílač je též odpovědný za filtrování irelevantních dat. Výsledky své práce pak posílá monitoru. Ten tvoří další úroveň hierarchické struktury. Monitory pak mohou být také mezi sebou hierarchicky uspořádány. Jejich práce spočívá ve sběru a kontrole dat z přijímačů/vysílačů. Schopnost monitorů sbírat data z různých strojů dovoluje systému rozeznat útoky zaměřené na více strojů. Struktura AAFID je jednoduše škálovatelná. Přidáme-li další stroj do sítě, stačí na něj nainstalovat příslušné komponenty AAFID a ty pak posílají svoje informace nadřazenému monitoru.
1.5
Reakce na útoky
Reakce na útok může být různá a zpravidla se dělí do dvou kategorií: aktivní a pasivní.
1.5.1
Aktivní reakce
Příkladem aktivní reakce může být získání podrobnějších informací o útoku, jako je identifikace spojení protokolem ident, zjištění přihlášených uživatelů 9
na útočícím systému či testování přístupnosti portů (port scanning) nebo identifikace operačního systému (tzv. OS fingerprinting) útočícího stroje. Aktivní reakce je nutno používat s velkou rozvahou a to hlavně poslední dvě jmenované. Nejen, že tímto dáváme útočníkovi najevo, že se na našem systému něco děje, ale je nutné si uvědomit, že útočník může podvrhnout zdrojovou IP adresu. Potom by se mohlo lehce stát, že budeme obtěžovat jiný naprosto nevinný stroj a náš systém se náhle změní v nežádaného útočníka. Proto drtivá většina IDS aktivními reakcemi nedisponuje a používání těchto reakcí se velmi nedoporučuje.
1.5.2
Pasivní reakce
Mezi pasivní reakce patří odesílání e-mailu či zprávy SMS, přehrání zvukového signálu, otevření dialogového okna, zvýšení úrovně výpisu ladících informací IDS, vypnutí kritických služeb, upravení pravidel paketového filtru atd. Tento typ reakce sice nedává útočníkovi žádné informace, nicméně může být též zneužit a to útokem typu Denial Of Service (DoS) neboli odepření služby. Pokud útočník podvrhne svoji IP adresu, může IDS například zablokovat přístup do systému z nevinné IP adresy. Tomu je možno částečně zamezit vhodným nastavením paketového filtru, jenž bude snižovat šance na podvržení IP adresy. Další způsob, jak zamezit odepření služby, je tzv. whitelist neboli bílá listina. Whitelist je přesný opak černé listiny, tedy seznam IP adres, proti kterým nikdy nepoužijeme příslušná protiopatření při útoku. Dalším rizikem mohou být rychle se opakující útoky. Je-li režie při vykonávání reakce příliš vysoká, může při vysoké frekvenci útoků dojít k zahlcení systému. Tomu lze předcházet nevykonáním reakcí u opakujících se útoků nebo při vysoké zátěži systému. Rozeznání opakujícího se útoku je však obtížné, jedná-li se o distribuovaný DoS (DDoS) útok.
10
Kapitola 2
Implementace IDS Pro GNU/Linux existuje jistě celá řada komerčních implementací IDS. My se však budeme zabývat pouze volně šiřitelnými implementacemi. Všechny níže uvedené implementace IDS lze používat a šířit v souladu s licencí GNU General Public Licence (GNU GPL).
2.1
BENIDS
BENIDS je jednoduchý N-IDS založený na knihovně libpcap a používající vlastní formát pravidel založený na XML. Je v raném stádiu vývoje, je nestabilní, špatně dokumentovaný a neoptimalizovaný.
2.2
Linux Intrusion Detection System
Linux Intrusion Detection System (LIDS) je záplata do jádra (kernel patch) a administrátorský nástroj pro zvýšení bezpečnosti OS Linux. LIDS však není jen IDS a má mnoho dalších možností. Mezi jeho hlavní vlastnosti patří: • ochrana souborů (nikdo, včetně superuživatele, nemůže modifikovat soubory chráněné sytémem LIDS; soubor může být skrytý) • ochrana procesů (nikdo, včetně superuživatele, nemůže zaslat signál SIGKILL procesům chráněným systémem LIDS; proces může být skrytý) • jemná kontrola přístupu (access control) pomocí seznamu přístupových práv (access control list neboli ACL) • rozšířená schopnost kontroly celého systému • bezpečnostní poplach vyvolaný jádrem
11
• detektor testování přístupnosti portů v jádře Autory systému LIDS jsou Huagang Xie a Philippe Biondi.
2.3
Snort
Snort je typický N-MD-IDS umožňující v reálném čase analyzovat síťový provoz a zaznamenávat pakety na sítích typu IP. Dokáže analyzovat protokoly, vyhledávat vzorky v síťové komunikaci a může být použit pro detekci mnoha útoků, jako jsou například přetečení zásobníku, skryté (stealth) testování přístupnosti portů, útoky na CGI skripty, průzkum SMB, identifikace operačního systému atd. Snort používá flexibilní jazyk pravidel pro popsání komunikace, která má být považována za útok, a jeho architektura detekce útoku podporuje zásuvné moduly. Snort dokáže v případě útoku vyvolat poplach, jenž může být oznámen pomocí mechanismů pro syslog, přímo do souboru, přes UNIX socket nebo za použití programu smbclient1 zprávou WinPopup přímo klientům MS Windows. Snort má tři primární způsoby použití. Může být použit pro přímé odposlouchávání síťové komunikace, pro zaznamenávání paketů (užitečné při ladění síťového provozu) nebo jako N-IDS. Snort je možno provozovat na všech systémech, na nichž funguje libpcap. Jeho provozuschopnost je potvrzena na mnoha platformách včetně architektur i386, Sparc, M68k, PPC a dalších. Hlavním vývojářem systému Snort je Martin Roesch.
2.4
Firestorm NIDS
Firestorm NIDS je N-IDS fungující na jádře OS Linux verze 2.2, stejně tak jako 2.4. Mezi hlavní vlastnosti systému Firestorm NIDS patří: • podpora pravidel systému Snort • možnost spuštění v omezeném prostředí chroot se sníženými právy • oznámení detekce útoku do souborů ve formě ASCII nebo tcpdump • možnost výběru různého formátu oznámení detekce útoku v závislosti na typu poplachu Nedostatkem systému Firestorm NIDS je absence jakékoli rozumné dokumentace. Autorem systému Firestorm NIDS je Gianni Tedesco. 1
smbclient je součástí softwaru Samba.
12
2.5
Prelude
Vývoj systému Prelude začal v roce 1998. Původně byl vyvíjen jako modulární N-IDS. Nedávno se však jeho zaměření rozšířilo a v současné době není jen N-IDS, ale stal se současně H-IDS. Prelude je schopen používat pravidla systému Snort. Hlavním vývojářem systému Prelude je Yoann Vandoorselaere.
2.6
Tamandua Network Intrusion Detection
Tamandua Network Intrusion Detection je N-IDS, který je stále ve fázi vývoje. Bohužel se zdá, že vývoj skončil zhruba před rokem a jedinou dostupnou dokumentací je zdrojový kód.
13
Kapitola 3
Systém iblockd Většina IDS nám nabízí pouze detekci útoku. Pokud nám toto nevyhovuje, musíme hledat IDS, který dokáže na útoky reagovat. Na tomto IDS se nám ale zase nemusí líbit jeho způsob detekce útoku. Tento problém může elegantně vyřešit iblockd.
3.1
Co je iblockd
iblockd je démon, jehož primárním cílem je zamezit útočníkům přístup k systému. Obecně však může být použit na vyvolání jakékoli reakce na útok. Samotná detekce útoku však není úkolem iblockd, ale je ponechána systémům na tuto činnost specializovaným. V současné době iblockd úspěšně spolupracuje se systémem Snort. Rozšíření iblockd o spolupráci s jiným IDS spočívá pouze ve správném nastavení konfigurace a není potřeba tuto vlastnost doprogramovat do démona samotného. Obdobně jednoduché je změnit reakci na útok. Implicitní reakcí je okamžité zablokování útočníkovy IP adresy a její opětné odblokování za dvě hodiny. Pokud nám tato reakce nevyhovuje, můžeme si napsat libovolný program, který bude při zaznamenání útoku zavolán a iblockd se postará vše ostatní (předání IP adresy, zaslání výsledku reakce administrátorovi).
3.2
Jak iblockd funguje
iblockd průběžně zpracovává obsah souboru, který mu nadefinujeme, a vyhledává v něm pomocí regulárního výrazu řetězce, jejichž přítomnost znamená pokus o útok. Do stejného souboru přinutíme nějaký IDS ohlašovat úspěšnou detekci útoku. Pokud iblockd najde řetězec indikující detekci útoku, spustí program, který provede příslušnou reakci na útok. Tomuto programu předá jako parametr IP adresu stroje, jenž se pokusil o útok. Standardní výstup tohoto programu pak spolu s podrobnými informacemi o útoku, které získal od IDS, pošle administrátorovi. 14
Obrázek 3.1: Schéma iblockd
3.3
Části iblockd
Hlavní část iblockd (samotný démon iblockd.pl) je naprogramována v jazyce Perl a je umístěna v adresáři /usr/sbin/. Dále patří k iblockd tyto konfigurační soubory: • iblockd.conf • patterns • reaction.pl • whitelist Soubor iblockd.conf obsahuje obecné konfigurační volby. V souboru patterns jsou popsány řetězce indikující detekci útoku. Soubor reaction.pl je program, který se spustí při zaznamenání útoku. Jak již název souboru whitelist napovídá, jedná se o bílou listinu. V tomto souboru tedy najdeme výčet IP adres, proti kterým se nebude vykonávat patřičné protiopatření. Všechny tyto konfigurační soubory jsou umístěny v adresáři /etc/iblockd/. Nezbytnou součástí každého démona je též startovací skript. V případě iblockd tomu není jinak, a proto k iblockd patří též soubor /etc/init.d/iblockd. Poslední část iblockd tvoří dokumentace. Tu najdeme v adresářích /usr/share/doc/iblockd/ a /usr/share/man/man8/. Umístění všech souborů vyhovuje standardu FHS (Filesystem Hierarchy Standard).
3.4
Konfigurace
Jak jsme se již dozvěděli, obecná konfigurace iblockd se provádí v souboru /etc/iblockd/iblockd.conf. Ten obsahuje direktivy, které mění chování iblockd. Patřičná pravidla se zapisují ve tvaru direktiva = hodnota. Ve 15
chvíli, kdy iblockd startuje, vyhledává v souboru iblockd.conf následující direktivy: • delete chain Direktiva delete chain určuje, jaký příkaz provede smazání řetězce. Za tuto hodnotu se ještě přidá iblockd. • delete rule Direktivou delete rule se definuje příkaz pro smazání pravidla. Za tuto hodnotu se ještě přidá -j iblockd. • flush chain Direktiva flush chain určuje příkaz pro odstranění všech pravidel v řetězci. Za tuto hodnotu se ještě přidá iblockd. • input log Direktivou input log nadefinujeme jméno souboru, z kterého bude iblockd číst záznamy IDS. • insert rule Direktiva insert rule slouží k určení příkazu pro přidání pravidla do řetězce. Za tuto hodnotu se ještě přidá -j iblockd. • new chain Direktiva new chain definuje příkaz pro vytvoření řetězce. Za tuto hodnotu se ještě přidá iblockd. • report rcpt Direktiva report rcpt určuje e-mailovou adresu, na kterou se má zpráva o provedení reakce doručit. Pokud se některá z direktiv nenadefinuje, použije se její implicitní hodnota. Implicitní hodnoty jednotlivých direktiv jsou: delete_chain = iptables -X delete_rule = iptables -D INPUT -i eth0 flush_chain = iptables -F input_log = /var/log/auth.log insert_rule = iptables -I INPUT -i eth0 new_chain = iptables -N report_rcpt = root
16
3.5
Vzorky útoků
V souboru /etc/iblockd/patterns lze nadefinovat regulární výrazy popisující útoky. Jelikož je iblockd.pl implementován v jazyce Perl, dochází před jeho spuštěním ke kompilaci. Při této kompilaci dojde ke vložení souboru patterns do iblockd.pl pomocí volání require. V souboru patterns se definuje pole @PATTS, které je pak programem iblockd.pl využíváno. Pole @PATTS obsahuje právě regulární výrazy pospisující útoky. Pokud libovolný z regulárních výrazů odpovídá nějakému záznamu z IDS, považuje iblockd tento záznam za oznámení útoku. Implicitně má soubor patterns následující obsah: @PATTS = (\ ’\w{3} {1,2}\d{1,2} \d{2}:\d{2}:\d{2} [a-zA-Z0-9-]* (snort):\ spp_portscan: (PORTSCAN) DETECTED from\ (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})()()() \((.*)\)’,\ \ ’\w{3} {1,2}\d{1,2} \d{2}:\d{2}:\d{2} [a-zA-Z0-9-]* (snort):\ IDS212 - MISC - (DNS Zone Transfer):\ (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5}) ->\ (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})()’\ ); Oba regulární výrazy popisují záznam, jímž Snort ohlašuje útok. První výraz odpovídá testování přístupnosti portů, ten druhý pak značí DNS dotaz na přenos zóny (DNS AXFR). Chceme-li tedy rozeznávat i jiné útoky, popř. rozeznávané jiným IDS, modifikujeme pole @PATTS. Za povšimnutí stojí závorky v regulárních výrazech. V každém regulárním výrazu se vyskytuje celkem šest párů závorek. Podvýraz v prvních závorkách značí jméno IDS, který útok detekoval. Podvýraz v druhých závorkách označuje typ útoku, jenž byl detekován. Podvýrazy v následujících čtyřech párech závorek postupně označují zdrojovou IP adresu, zdrojový port, cílovou IP adresu a cílový port útoku. Podvýraz v posledních (sedmých) závorkách obsahuje dodatečné informace o útoku. S těmito podvýrazy pak iblockd dále pracuje.
3.6
Reakce na útok
Jakmile iblockd zaznamená útok, spustí program reaction.pl, který se nachází v adresáři /etc/iblockd/. Tento program dostane jako parametr zdrojovou IP adresu útoku, na jejímž základě provede patřičnou reakci. Implicitně nejdříve zkontroluje, zda IP adresa, která mu byla předána, vyhovuje nějakému záznamu v bílé listině. Pokud ano, neprovádí žádnou reakci. V opačném případě zamezí přístup ze zdrojové IP adresy a spustí příkaz
17
at s parametry, které zajistí odblokování dané IP adresy za dvě hodiny. Blokování a odblokování se realizuje pomocí příkazu iptables. Poté jsou administrátorovi poslány podrobné informace o útoku spolu se standardním výstupem programu reaction.pl. E-mail, který administrátor obdrží, může vypadat například takto1 : From: root
To: [email protected] Subject: DNS Zone Transfer detected snort has detected an attack from 147.251.48.1:2841 (aisa.fi.muni.cz) to 147.251.50.200:53 (aurora.fi.muni.cz) additional information: none reaction: blocking 147.251.48.1 for next 2 hours: executing ipchains -D iblockd -s 147.251.48.1 -j DENY ... ipchains: bad rule (does a matching rule exist in that chain?) executing ipchains -I iblockd -s 147.251.48.1 -j DENY ... queueing at job to unblock 147.251.48.1 in 2 hours ... warning: commands will be executed using /bin/sh job 215 at 2002-05-03 06:02
-this message was generated by iblockd
3.7
Bílá listina
V souboru /etc/iblockd/whitelist můžeme definovat pomocí regulárních výrazů výčet IP adres, proti nimž se nemá použít patřičné protiopatření. Je nutné si ale uvědomit, že kontrolu zdrojové IP adresy útoku vůči tomuto souboru provádí až program reaction.pl. To znamená mimo jiné, že administrátor bude informován, že došlo k útoku, ale že nedošlo k použití patřičných protiopatření. E-mail, jenž administrátor obdrží pak může vypadat například takto: From: root To: [email protected] Subject: PORTSCAN detected snort has detected an attack 1
V tomto případě byl použit program ipchains místo iptables.
18
from 147.251.48.3:unknown (anxur.fi.muni.cz) to unknown:unknown (NXDOMAIN) additional information: STEALTH reaction: none (the source IP address matches ^147\.251\.48\.3$\ in the\ whitelist file /etc/iblockd/whitelist)
-this message was generated by iblockd
3.8
Implementační detaily
Při blokování IP adres pomocí příkazu iptables využívá iblockd vlastní řetězec. Ten je nutno předem začlenit do již existujících pravidel paketového filtru. Ve chvíli, kdy iblockd startuje, vytvoří řetězec iblockd a skok do tohoto řetězce z řetězce input. Při ukončení démona dojde k odstranění všech pravidel v řetězci iblockd, zrušení skoku z řetězce input a taktéž k odstranění řetězce iblockd. Pokud je iblockd zavolán s parametrem -d, generuje přes syslog ladící informace. Tento parametr je implicitně zapnut ve startovacím skriptu /etc/init.d/iblockd. K iblockd jsou též vytvořeny balíčky deb, které umožní snadnější instalaci na sytému Debian GNU/Linux. Instalace iblockd pomocí balíčků nám umožní využít výhody balíčkovacího systému, jako například pohodlnější instalaci nové verze iblockd. Na iblockd se vztahuje licence GNU GPL a může být používán a šířen pouze v souladu s touto licencí.
19
Kapitola 4
Závěr IDS nám nabízejí způsob, jak detekovat útoky. Tím získáváme větší přehled o událostech bezprostředně se týkajících našeho systému. Drtivá většina IDS nám však nenabízí možnost automatické reakce na události, které nepovažujeme podle naší bezpečnostní politiky za legální. Některé implementace IDS jsou v dnešní době poměrně vyzrálé a poskytují nám kvalitní služby v oblasti detekce útoků. Kvalita detekce se ještě může zvýšit použitím vhodné kombinace různých IDS. Značnou výhodu nám při použití několika IDS může nabídnout iblockd, neboť poskytuje jednotné rozhraní pro konfiguraci reakce na útok, stejnou reakci na útok a stejný způsob informováni o útoku bez ohledu na to, kterému IDS se podaří útok detekovat. Z tohoto pohledu je iblockd poněkud jedinečným systémem. Přesto lze iblockd ještě dále vylepšit1 . Jedna z částí iblockd, která bude v nejbližší době vylepšena, je implicitní skript reaction.pl, obzvláště jeho část týkající se automatického odblokování IP adres. Spolu se systémem Snort byl iblockd při svém implicitním nastavení bez jakýchkoli problémů používán několik měsíců na routeru a firewallu, který odděloval od Internetu privátní síť. Rychlost připojení k Internetu byla 128 kib · s−1 . Podle hrubých odhadů by bylo možno s tímto nastavením provozovat iblockd na sítích do rychlosti 100 Mib·s−1 . Při vyšších rychlostech by se stal slabým článkem systém Snort. Ovšem za použití jiného IDS by mělo být možné iblockd používat i na rychlejších linkách. Tato hypotéza však není potvrzena a pokus o nasazení iblockd na sítích s větší šířkou pásma snad bude předmětem dalšího vývoje.
1
Koneckonců stejně jako jakýkoli jiný systém. Software, který se již dále nevyvíjí je mrtvý.
20
Literatura [1] Wall, L., Christiansen, T., Schwartz, R. L.: Programování v jazyce Perl. Praha, Computer Press 1997. [2] Debar, H., Mé, L., Wu, S. F.: Recent Advances In Intrusion Detection: Third International Workshop, RAID 2000. Heidelberg, Springer-Verlag 2000. [3] Common Intrusion Detection Framework http://www.isi.edu/gost/cidf/ [4] BENIDS http://www.marlboro.edu/~ttoomey/benids/ [5] AAFID: Autonomous Agents For Intrusion Detection http://www.cerias.purdue.edu/homes/aafid/ [6] Lucidian: About Intrusion Detection http://www.lucidian.com/ [7] Virtual Burglar Alarm: Intrusion Detection Systems http://www.suse.com/us/support/howto/ids/ [8] Intrusion Detection: Challenges and Myths http://secinf.net/info/ids/ids mythe.html [9] Tamandua Laboratories http://tamandua.axur.org/ [10] GNU General Public License: Projekt GNU http://www.gnu.org/licenses/gpl.cs.html [11] LIDS Project: Secure Linux System http://www.lids.org/ [12] Prelude Hybrid IDS http://www.prelude-ids.org/ [13] Snort: The Open Source Network IDS http://www.snort.org/ 21
[14] Firestorm NIDS http://www.scaramanga.co.uk/firestorm/
22
Dodatek A
Obsah CD Adresář /iblockd/orig/ obsahuje samotný systém iblockd. V adresáři /iblockd/debian/ nalezneme zdrojové a binární balíčky deb obsahující iblockd. V obou adresářích se nachází iblockd ve verzích 0.0.1 a 0.0.2. V adresáři /snort/ najdeme Snort od verze 1.7 do verze 1.8.5. Stejný adresář také obsahuje oficiální dokumentaci k systému Snort. V adresáři /doc/ se nachází písemná část balkalářské práce.
23