Hlavní navigace

LIDS - Linuxový systém odhalení průniku

Ivan Daler 5. 8. 2003

Jak se včas dovědět o zahájení útoku crackera a jak můžete operační systém zabezpečit před někým, kdo získal práva administrátora? Odpovědí je - použijte LIDS - Linux Intrusion Detection System, kterému je věnován náš nový seriál.

Úvod

logo LIDS V dnešní době se při návštěvě firem běžně setkáváme s případem, kdy nějaký počítač je opatřen Linuxem, plní funkci routeru a firewallu a jsou na něm, ačkoliv to odporuje všem zásadám bezpečnosti, eventuálně provozovány různé další služby. Tyto služby jsou realizovány pomocí poštovních SMTP serverů, DNS, DHCP, WWW serverů apod. Firewall se vytvoří napsáním iptables pravidel (IP stavové filtry), někdy v kombinaci s webovou proxy squid, obecným zabezpečením operačního systému a provozovaných služeb. Zaprášený firewallový počítač pak běží non-stop někde v koutě a správce většinou kontroluje, co se na něm nebo přes něj děje, pouze namátkově.

Co se ale stane, pokud hacker, nebo ještě hůře cracker, začne sledovat (scan) porty firewallu a získá například prostřednictvím nedokonalosti nějakého programu pravomoce v systému všemocného administrátora (root)? To je samozřejmě možné mnoha způsoby. Viz např. nedávno odhalená a dlouhodobě existující bezpečnostní díra v nejrozšířenějším poštovním serveru sendmail. Podrobnosti můžete nalézt na rhn.redhat.com a cve.mitre.org. Jak se tedy o zahájení útoku crackera včas dovědět a jak můžeme operační systém zabezpečit před někým, kdo získal práva administrátora? Odpovědí je – použijte LIDS (Linux Intrusion Detection System). Domovská stránka projektu LIDS.

Hlavní rysy LIDS

LIDS je softwarová záplata linuxového jádra spadající pod licenci GPL, která umožňuje významně zvýšit bezpečnost Linuxu, a její hlavní vlastnosti jsou:

  • Ochrana souborů a adresářů. Nikdo včetně administrátora nemůže modifikovat soubory chráněné pomocí LIDS. Soubory a adresáře mohou být i neviditelné.
  • Ochrana procesů. Nikdo včetně administrátora nemůže ukončit pomocí signálu kill chráněné procesy. Procesy mohou být i neviditelné.
  • Access Control Lists (ACLs) pro přístupová práva k souborům, adresářům (File ACLs) a ACLs, která omezují schopnosti a systémové možnosti procesů (Capability ACLs).
  • Rozšířená schopnost kontrolovat celý systém.
  • Bezpečnostní avíza od jádra operačního systému. SMTP klient se volitelně může stát součástí jádra.
  • IDS – systém detekce průniku.

V názvu projektu je sice uveden systém odhalení průniku (IDS), ale největším přínosem softwarové záplaty LIDS je bezesporu jedinečná schopnost LIDS vynutit silná přístupová omezení pomocí ACLs. Samotné IDS by bylo možné uskutečnit pomocí mnohem jednodušších nástrojů jako např. scanlogd nebo portsentry.

Záplatování linuxového jádra

Nyní je již zřejmé, že implementace LIDS vyžaduje tvorbu nového jádra, a i když se tato část překoná, i samotné nasazení a nastavení LIDS není určeno pro linuxové začátečníky a bázlivé (timid) uživatele. Záplata by se měla použít na linuxové jádro z www.kernel.org. Jádra distribucí RedHat, SuSe atd. již obsahují řadu záplat, a nejsou tudíž pro LIDS vhodná. Osobně jsem stáhnul vanilla jádro linux-2.4.21.tar.gz a z www.lids.org archivní soubor (tarball) lids-1.1.2–2.4.21.tar.gz a vše testoval na Red Hat Linux 8.0. Podrobný popis tvorby nového záplatovaného jádra není předmětem této série článků. Odkazuji na Kernel-HOWTO. Předpokládejme pro začátek, že z Internetu stažené soubory (viz výše) jsou umístěny v adresáři /tmp. Dále provedeme

# cd /usr/src
# tar xzvf /tmp/linux-2.4.21.tar.gz
# tar xzvf /tmp/lids-1.1.2-2.4.21.tar.gz
# cd /usr/src/linux-2.4.21
# patch -p1 < /usr/src/lids-1.1.2-2.4.21/lids-1.1.2-2.4.21.patch
V Makefile nastavit proměnnou EXTRAVERSION na EXTRAVERSION =.lids
# make menuconfig (xconfig)
# make dep clean bzImage modules modules_install

Zkopírujte nové jádro a příslušné soubory do odpovídajících adresářů. Opravte konfigurační soubor zavaděče (loader) (nejčastěji LILO, GRUB, dále však budeme předpokládat LILO) tak, aby se při startu operačního systému (OS) automaticky použilo nové jádro (linux.lids). Doporučuji zatím původní jádro nemazat. Může se nám hodit pro nouzový přístup k systému.

Samozřejmě, že při nastavování parametrů jádra přihlédnéme k hardwarové specifikaci našeho počítače a budeme optimalizovat dle očekávaných provozních potřeb. Po použití záplaty lids-1.1.2–2.4.21.patch se v nabídce parametrů jádra (v prostředí příkazu make menuconfig) objeví položkaLinux Intrusion Detection System. Pro LIDS jsou výchozí (default) nastavení parametrů v jádře v podstatě vyhovující. Snad je jen pro první experimenty s LIDS dobré zatrhnout položku Send Security alerts through network.

Co se týče obecné roviny, připomínám, že pokud hodláte pracovat s modulárním jádrem a SCSI modulem a/nebo modulem pro podporu ext3 souborového systému, je potřeba vytvořit initrd obraz (Initial RAM Disk).

Instalace nástrojů LIDS

# cd /usr/src/lids-1.1.2-2.4.21
# tar xzvf lidstools-0.4.3.tar.gz
# cd lidstools
# ./configure KERNEL_DIR=/usr/src/linux-2.4.21
# make
# make install

Zde na závěr je už automaticky spouštěn příkaz /sbin/lidsconf -P, který umožňuje zadat heslo člověka spravujícího LIDS. Heslo se kryptuje pomocí RipeMD-160 a je uloženo do souboru /etc/lids/lid­s.pw. Tento člověk může být identický s administrátorem systému, ale měl by pochopitelně zadat heslo jiné, než má uživatel root.

# reboot

Prvotní seznamování s LIDS

Při promptu LILO boot: vyberte jádro linux.lids a můžete sledovat, co se děje na obrazovce monitoru. Uvidíte, jak si OS a různé služby budou stěžovat, že nemohou provést určité akce. Např.

LIDS: init (dev 3:3 inode 2080828) pid 1 ppid 0 uid/gid (0/0) on (null tty) : Attempt to unlink
/etc/initrunlvl
LIDS: init (dev 3:3 inode 2080828) pid 1 ppid 0 uid/gid (0/0) on (null tty) : Attempt to unlink
/var/log/initrunlvl - logging disabled for (60)s

To je však v této fázi instalace v pořádku a svědčí to o tom, že LIDS je zapnutý a chrání váš systém. Potíž je pouze v tom, že se zatím využívá výchozích LIDS konfiguračních souborů, které bude potřeba později přizpůsobit, a že OS nepočítá s některými omezeními uvalenými na něj ze strany LIDS. Zkuste další kontrolu – vypište si obsah adresáře /etc/lids, který je dle výchozího nastavení LIDS neviditelný (DENY). Důvod je prostý – obsahuje základní a současně veškeré konfigurační soubory pro LIDS.

# ls -al /etc/lids

Pokud však provedete

# lidsadm -S -- -LIDS

a potom teprve

# ls /etc/lids

dostanete výpis

lids.cap      lids.conf      lids.net      lids.pw

První příkaz zde po vás bude vyžadovat heslo, jež jste zadali pro LIDS dříve, a vytvoří se tzv. LIDS Free Session (LFS), ve které jste imunní vůči LIDS restrikcím. LFS lze sputit vždy jen na jednom terminálu.

Obejít LIDS lze i jinak. Můžete startovat nové jádro (linux.lids) s LIDS vypnutým tak, že při výzvě LILO boot: napíšete

LILO boot: linux.lids lids=0

Zmínil jsem se, že LIDS lze obejít tím, že zadáme lids=0. To je sice pravda, ale z hlediska bezpečnosti to vyžaduje fyzický přístup k počítači a navíc lze i tuto možnost v konfiguraci zavaděče LILO zajistit heslem .

Tímto způsobem alespoň rozlišíte, jaké chybové hlášky nebo varování pocházejí přímo od nového jádra OS, jež nemusí mít nastaveny veškeré požadované parametry správně, a jaké jsou způsobeny zapnutým LIDS a jeho nastavením.

V tomto místě bych první článek ukončil. V příštím pokračování se budu věnovat zejména LIDS konfiguracím a způsobům, jak odstranit některé z chybových hlášek, které se objevují v log souborech.

Našli jste v článku chybu?

19. 8. 2003 12:01

dejf (neregistrovaný)

Ne, problem M$ je ze admin muze vic nez na unixu, akorat ze jen z tech destruktivnich legracek.
Faktem je ze zadny z opravdu bezpecnych unixu (Trusted solaris aj) zadneho roota nema. Vyhody jsou zrejme, neexistuje account pomoci nejz by slo systemu vyrazneji ublizit. Nevyhodou nutnost pamatovat si kolem desitky hesel.
Smysl to ma pochopitelne jen nekde, nicmene je dobre ze na linech je ekvivalent trustedBSD - zpusobu jak to obrnit trikrat dokola, aby s tim byl vetsi problem (u admina i hackra)…

11. 8. 2003 14:03

Mike (neregistrovaný)

Konecne clanek kterej odpovida nazvu serveru a ma hlavu a patu! No to je po letech preqapko :)

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel