Linuxové noviny | 01-02/2001 | ||
| |||
Scanlogd je dalším z nástrojů určených pro detekci scanování portů, podobně jako např. Portsentry, se kterým jsme se seznámili v minulém čísle Linuxových novin. Na tento článek nyní volně navazujeme a zde se již nebudeme zabývat definicemi "portscanu" či běžnými metodami scanování portů; stručný úvod do problematiky čtenář nalezne v předchozím článku. Scanlogd umožňuje monitorovat buď lokální systém (zpravidla přes "raw socket"), anebo i provoz celé lokální sítě (k čemuž využívá knihovny libpcap, libnet a libnids). Domovskou stránku projektu nalezneme na serveru Openwall.
Instalace a konfiguraceInstalace scanlogd je velmi jednoduchá. Pokud scanlogd instalujeme za účelem monitorování lokálního systému, kompilaci provedeme příkazem make linux. V tomto případě bude scanlogd používat pouze "raw socket". Pokud chceme monitorovat provoz v lokální síti, použijeme pro sestavení příkaz make libnids, v tomto případě bude scanlogd používat knihovny libpcap a libnids (které musíme předtím instalovat a nastavit příslušné cesty v Makefile). Není vhodné používat pouze libpcap bez libnids (příkaz make libpcap), protože pak scanlogd nebude moci pracovat s fragmentovanými pakety.Scanlogd nepoužívá konfigurační soubory, konfigurace se provádí před kompilací ruční editací hlavičkového souboru params.h, kde lze nastavit zejména následující položky:
Závažnost scanu je dána počtem scanovaných privilegovaných portů vynásobených jejich váhou (PORT_WEIGHT_PRIV) plus počet scanovaných neprivilegovaných portů vynásobených jejich váhou (PORT_WEIGHT_HIGH). Scan je považován za významný (a je zaznamenán) tehdy, je-li závažnost rovná anebo větší než hodnota SCAN_MIN_COUNT vynásobená PORT_WEIGHT_PRIV.
PoužitíPři kompilaci máme možnost zvolit uživatele, pod kterým scanlogd poběží. Založíme tedy zvolený uživatelský účet (na účet není třeba se přihlašovat, můžeme tedy přihlášení zakázat). Pokud chceme, aby byl scanlogd spuštěn automaticky po startu systému, můžeme jej přidat do startovacích skriptů, např. rc.local).Záznam scanu vypadá přibližně následovně:
Dec 10 14:24:19 server scanlogd: 11.22.33.44:45048 to 11.22.33.45 ports 16, 18, ..., FsrPaUxy, TOS 00, TTL 59 @14:24:19 V logu je uváděn čas, zdrojová a cílová IP adresa, seznam scanovaných portů, použité nastavení příznaků paketů a hodnoty TOS a TTL. V uvedeném příkladu byl proveden "Xmas" scan (používá pakety s nastavenými příznaky FIN, PUSH a URG; proto jsou v logu příznaky F, P a U vyznačeny velkými písmeny) na porty 19-21. Scanlogd má limitovanou velikost záznamu, který se do logu zapíše, pokud nám nestačí, tak tato položka je opět při kompilaci nastavitelná v souboru params.h (pamatujme ale na možnost případného zaplnění logu).
Srovnání s PortsentryScanlogd na rozdíl od Portsentry scany pouze detekuje a loguje, neumožňuje na scany reagovat modifikací pravidel firewallu či tcp_wrappers nebo spouštěním definovaných akcí. Dále scanlogd analyzuje pouze protokol TCP, zatímco portsentry umí detekovat i UDP scany. Na druhou stranu se portsentry nechrání proti zaplnění systémového logu a je určen pouze pro monitorování jednotlivých systémů, neumožňuje monitorovat provoz lokální sítě.
ZávěremScanlogd je jednoduchý nástroj pro monitorování TCP port scanů lokálního počítače nebo i okolní sítě, která je plně dostačující pokud nám jde pouze o zaznamenání scanů.![]() |