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

5. 8. 2003
Doba čtení: 5 minut

Sdílet

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 .

bitcoin_skoleni

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.