- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 03-04/2001

Kontrola integrity systému - Tripwire

David Häring, 3. března 2001

Tripwire je software určený pro kontrolu integrity souborů v systému. Jak takový systém funguje? Nejprve si sestaví databázi, která popisuje stav zadaných souborů, adresářů nebo celých adresářových stromů. S touto databází je pak možné kdykoliv srovnat aktuální stav a identifikovat případné změny, které mohou zahrnovat přidané či smazané objekty, změny přístupových práv, modifikace souborů a podobně. Administrátor pak má možnost změny autorizovat a tím změny zanést do databáze, takže příští kontrola vyjde z aktualizované databáze.

Tripwire samozřejmě není zdaleka jediným nástrojem svého druhu, je ovšem jedním z prvních a verze 2.3.0 pro Linux je od nedávna dostupná včetně zdrojových kódů. Pro ostatní systémy je volně dostupná starší verze 1.3.1 formou zdrojových kódů jako ASR (Academic Source Release). Z alternativ za zmínku rozhodně stojí např. AIDE, řadu dalších alternativ čtenáři naleznou např. na serveru Freshmeat.

Společnost Tripwire také nabízí řadu dalších produktů s rozšířenou funkčností oproti základní verzi a to Tripwire Manager (GUI nástroj pro vzdálenou administraci) a Tripwire for Servers (může být spravován dálkově Tripwire Managerem). Posledním produktem je Tripwire for Web Pages, který spolupracuje s web serverem (apache) - funguje tak, že kontroluje odesílané HTML soubory a pokud narazí na stránku, která se změnila (a tato změna nebyla autorizována), tak místo ní odešle stránku s hlášením o dočasné nedostupnosti dané stránky a uvědomí administrátora. V tomto článku se budeme zabývat jen volně dostupnou verzí Tripwire pro Linux.

Co nabízí Tripwire

Jaké atributy tripwire u jednotlivých souborů sleduje? V systémech UN*Xového typu (tedy i Linuxu) jsou dostupné následující atributy, ze kterých je možno zvolit libovolnou kombinaci:

  • přístupová práva
  • číslo i-uzlu
  • počet odkazů na soubor
  • UID (ID uživatele - vlastníka souboru)
  • GID (ID skupiny - vlastníka souboru)
  • typ souboru
  • velikost souboru
  • velikost souboru pouze roste (log soubory apod.)
  • číslo blokového zařízení, na kterém se soubor nalézá
  • čísla zařízení u speciálních souborů
  • počet alokovaných datových bloků souboru
  • čas modifikace souboru
  • čas modifikace i-uzlu
  • čas přístupu

Dále jsou k dispozici 4 typy kontrolních součtů, které slouží ověření neporušenosti obsahu souborů:

  • CRC-32 (nízká bezpečnost, rychlý)
  • MD5 (vyšší bezpečnost)
  • SHA (vyšší bezpečnost)
  • HAVAL (128 bitový klíč, nejvyšší bezpečnost)

Na jeden soubor můžeme aplikovat libovolnou kombinaci kontrolních součtů současně, pouze je třeba vzít v úvahu, že pokud jich použijeme více, čas potřebný pro kontrolu poroste. Při volbě kontrolních součtů tedy volíme kompromis v závislosti na množství dat, které potřebujeme prověřovat, stupni bezpečnosti a času, za jaký musí kontrola proběhnout.

Jednotlivé soubory je možné sdružovat do celků, kterým lze přiřazovat atributy jako je významnost ("severity", při kontrolách pak volíme jak významné změny nás zajímají), dále emailová adresa, na kterou se posílá upozornění v případě zjištění změny, příznak určující jestli se má daný adresář procházet rekurzívně. Můžeme tedy například jednoduše říci, že chceme sledovat všechny soubory a podadresáře v adresářovém stromu /etc, přiřadit souborům v stromu /etc maximální význam a e-mailovou adresu, čímž zajistíme, že v případě jakékoliv změny detekované při kontrole budou administrátoři upozorněni e-mailem.

Instalace

K dispozici je buď původní verze Tripwire 2.2.1 Tripwire 2.2.1 ve formě tar.gz archívu s instalačním skriptem, nebo verze 2.3 ve formě RPM balíčku, případně si zájemci mohou stáhnout aktuální zdrojový kód verze 2.3.1 a binárky sestavit sami. Rozdíly mezi uvedenými verzemi jsou minimální, verze 2.3 obsahuje drobnou opravu při manipulaci s dočasnými pracovními soubory, konfigurační soubory tripwire jsou pak na rozdíl od dřívějších verzí standardně ukládány v adresáři /etc/tripwire. Ve verzi 2.3.1 přibyla navíc podpora platformy FreeBSD. Instalační skript původní verze 2.2.1 automaticky nerozpoznává novější linuxové distribuce (což ale nijak nevadí, protože to nijak neovlivní funkčnost instalace).

V průběhu instalace se generují klíče, ke kterým je třeba zadat globální ("site passphrase") a lokální heslo ("local passphrase"). Obě hesla jsou důležitá; globální heslo je později vyžadováno při úpravách bezpečnostní politiky, lokální heslo je vyžadováno při aktualizaci databáze.

Konfigurace, inicializace databáze

Konfigurační soubor tw.cfg obsahuje základní údaje o instalaci, t.j. cestu k instalaci tripwire, cestu k souboru s definicí bezpečnostní politiky, cesty ke klíčům, nastavení implicitního editoru, nastavení způsobu odesílání pošty apod. Pokud chceme konfiguraci prohlížet nebo ji měnit, musíme ji utilitou twadmin převést do textové podoby (twadmin -m f) a po ukončení editace opět utilitou twadmin zašifrovat (twadmin -m F).

Soubor tw.pol obsahuje definici vlastní bezpečnostní politiky, t.j. soubor pravidel udávajících co a jakým způsobem se má kontrolovat. Po instalaci tripwire je k dispozici implicitní soubor pravidel, který je potřeba upravit podle vlastních potřeb. Stejně jako konfigurační soubor tw.cfg i soubor s politikou je ukládán v zašifrované podobě a před editací je třeba je převést do textové podoby utilitou twadmin (twadmin -p) a po editaci zašifrovat (twadmin -P). Součástí instalace je soubor policyguide.txt, kde je na řadě příkladů a tipů v praxi vysvětlena syntaxe konfiguračního souboru bezpečnostní politiky.

Jakmile máme konfiguraci hotovu, můžeme vytvořit databázi spuštěním příkazu tripwire --init.

Kontrola systému, prohlížení zpráv

Funkčnost instalace ověříme spuštěním kontroly systému. Máme na výběr ze dvou možností, a to buď interaktivní anebo "offline" režim. V interaktivním režimu (tripwire -m c -I) tripwire po skončení spustí editor (implicitně vi), do kterého natáhne detailní výslednou zprávu. Ve zprávě pak můžeme odsouhlasit některé nebo i všechny změny a po ukončení práce s editorem tripwire provede aktualizaci databáze podle odsouhlasených změn. Výsledná zpráva je rovněž uložena do příslušného adresáře (implicitně /var/lib/tripwire/report) a také může být zaslána elektronickou poštou, je-li to odpovídajícím způsobem uvedeno v bezpečnostní politice (direktiva emailto). Vygenerované zprávy lze kdykoliv prohlížet pomocí utility twprint (viz Ukázka výsledné zprávy tripwire).

Tripwire(R) 2.2.1 Integrity Check Report

Report generated by: root Report created on: Sat Mar 3 16:07:38 2001 Database last updated on: Fri Mar 2 13:46:35 2001

=============================================================================== Report Summary: ===============================================================================

Host name: server.domena.cz Host IP address: 11.22.33.44 Host ID: b2df4h54 Policy file used: /usr/tripwire/policy/tw.pol Configuration file used: /usr/tripwire/bin/tw.cfg Database file used: /usr/tripwire/db/server.twd Command line used: bin/tripwire -m c -I

=============================================================================== Rule Summary: ===============================================================================

--------------------------- Section: Unix File System ---------------------------

Rule Name Severity Level Added Removed Modified --- ------ --- --- ---- Invariant Directories 66 0 0 0 Tripwire Data Files 100 0 0 0 Temporary directories 33 0 0 0 Critical devices 100 0 0 0 Tripwire Binaries 100 0 0 0 User binaries 66 0 0 0 setuid/setgid 100 0 0 0 Diskless executables/libraries 100 0 0 0 Diskless config files 100 0 0 0 Libraries 66 0 0 0 OS executables and libraries 100 0 0 0 Shell Binaries 66 0 0 0 * Critical configuration files 100 0 0 1 Security Control 66 0 0 0 Boot Scripts 66 0 0 0 Login Scripts 66 0 0 0 System boot changes 100 0 0 0 Critical system boot files 100 0 0 0 Root config files 100 0 0 0

Total objects scanned: 27070 Total violations found: 1

=============================================================================== Object Detail: ===============================================================================

--------------------------- Section: Unix File System ---------------------------

--------------------------- Rule Name: Critical configuration files (/etc/hosts.allow) Severity Level: 100 --------------------------- -------------- Modified Objects: 1 --------------

Modified object name: /etc/hosts.allow

Property: Expected Observed ----- ----- ----- * Size 1047 1065 * Modify Time Sun Feb 4 11:12:32 2001 Sat Mar 1 15:09:53 2001 * Change Time Sun Feb 4 11:12:32 2001 Sat Mar 1 15:09:53 2001 * CRC32 Cx9OxW BNKusC * MD5 Codzk4vzD9QR2gXx7QSwRU CaHexEYPYLqcqMqz2Fj2ky

=============================================================================== Error Report: ===============================================================================

--------------------------- Section: Unix File System ---------------------------

No Errors --------------------------- *** End of report ***

Copyright (C) 1998-2000 Tripwire(R) Security Systems, Inc. Tripwire(R) is a registered trademark of the Purdue Research Foundation and is licensed exclusively to Tripwire(R) Security Systems, Inc.

Výpis č. 2: Ukázka výsledné zprávy tripwire

Aktualizace bezpečnostní politiky

Pokud provádíme změny bezpečnostní politiky, neměli bychom tak činit prostým nahrazením starého souboru s bezpečnostní politikou novým a opětovnou inicializací databáze, ale použít režimu tripwire pro aktualizaci politiky (tripwire -m p). Tripwire pak zkontroluje systém podle staré i nové bezpečnostní politiky a teprve v případě že je systém v pořádku podle obou verzí bezpečnostní politiky provede aktualizaci databáze a souboru s bezpečnostní politikou.

Zásady práce s tripwire

Samozřejmě, pouhé instalování tripwire (nebo jakéhokoliv jiného systému kontroly integrity) bez pečlivé konfigurace a dodržování rozumných zásad úroveň zabezpečení systému nezvýší, pouze povede k falešnému pocitu "bezpečí". Jaké zásady by tedy měl administrátor při nasazení takového systému pro kontrolu integrity dodržovat? Minimálně alespoň databázové soubory je potřeba uchovávat odděleně na důvěryhodném médiu, nejlépe digitálně podepsané. Optimální je mít na odděleném médiu i binárky tripwire (třeba jako doplňek k "záchranné" sadě bootovacích disket) a kontrolu provádět po nabootování z důvěryhodného média. Tripwire lze samozřejmě spouštět i pravidelně třeba z cronu, ale i pak je potřeba provádět občasné kontroly manuálně z důvěryhodných médií. Také je potřeba provádět aktualizace databáze v návaznosti na prováděné zásahy do systému. Rozhodně např. nemá smysl aktualizovat databázi koncem týdne a přitom přemýšlet, které změny provedl v průběhu týdne který z pěti administrátorů.

Závěrem

Tripwire je kvalitním nástrojem pro kontrolu integrity souborů a pokud je dobře nakonfigurován, výrazně může pomoci nejen při detekci neautorizovaných zásahů do systému, ale i při odstraňování následků bezpečnostního incidentu. Pokud ještě žádný takový systém nepoužíváte, rozhodně Tripwire (anebo některou z jeho alternativ) vyzkoušejte. *


- předchozí článek - následující článek - obsah - úvodní stránka -