Integrit - strážca filesystému
S kontrolou integrity filesystému sa stretávame denne pri administrácii počas priebežnej kontroly systémov. Či už používame Tripwire, ktorý je súčasťou mnohých dnešných rozsiahlych distribúcií, alebo sa spoliehame na iné prostriedky, úloha je rovnaká. Zistiť včas nezrovnalosti vo filesystéme pre odhalenie zmien, či už v dôsledku chyby, alebo nebadaného prieniku.
K dispozícii je množstvo prostriedkov realizujúcich túto úlohu, avšak jednoduchosťou, prehľadnosťou a vysokou efektívnosťou vyniká integrit, ktorý je vhodný pre jednoduchú integráciu hlavne na čistejších distribúciách ako napríklad Truxtix pre sledovanie zmien na serveri. Predpokladom jednoduchej a rýchlej implementácie je znalosť o lokáciách jednotlivých súborov a ich funkcii, čo napomôže rýchlejšej tvorbe konfiguračného súboru. Pozrime sa teda na nástroj bližšie.
1. Inštalácia
Domovskú stránku projektu integrit nájdete na http://integrit.sourcveforge.net, kde je v súčasnosti k dispozícii aktuálna verzia s označením 2.03.02. Cieľom projektu je zabezpečiť rýchlu a efektívnu kontrolu filesystému s použitím bezpečných techník bez používania externých nástrojov. Pristúpime teda k dekomprimácii a inicializujeme predkompilačnú konfiguráciu
tar xzvf integrit-2.03.02.tar.gz
cd integrit-2.03
./configure
V prípade hostov poskytujúcich menší pamäťový priestor je možné pri konfigurovaní uskutočniť obmedzenia, nakoľko však priestor predstavuje hranicu 10MB, úprava potrebná pravdepodobne nebude. Nasleduje samotná kompilácia a distribúcia bináriek.
make
make install
Výsledný produkt s názvom integrit je implicitne umiestnený do adresára /usr/local/sbin. Pre lepšie zabezpečenie voči modifikácii je vhodné binárku umiestniť na readonly médium, čím sa anuluje možnosť modifikácie.
2. Používané metódy
Pri kontrole filesystému integrit berie do úvahy viaceré parametre. V prvom rade je to kontrola kontrolného súčtu vytvoreného kryptografickým algoritmom SHA-1, ktorého výsledkom je 160bit checksum. Aj keď je to jediný ponúkaný algoritmus, podľa známych informácií je zatiaľ bezpečný a nehrozí v dohľadnom čase žiadne riziko prelomenia.
Ďalším parametrom je inode súboru a jeho veľkosť. V prípade používania kontroly chcecksumu je potreba kontroly veľkosti súboru zanedbateľná, nakoľko je už v prvej kontrole obsiahnutá, takže pre úsporu diskového priestoru zabratého databázou a urýchlenie procesu je možné kontrolu vypnúť.
Ďalej sú kontrolované GID, UID a prístupové práva k súboru. Nepovšimnuté nezostanú ani počet linkov k súboru, čas posledného prístupu, modifikácie a ctime. Spomenuté pravidlá sú v konfiguračnom súbore prezentované nasledujúcimi akronymami:
s- kontrolný súčet
i - inode
z - veľkosť súboru
u - UID
g - GID
p - prístupové práva
l - počet linkov
a - čas posledného prístupu
m- čas poslednej modifikácie
c- ctime
3. Konfigurácia
Prostredníctvom integritu je možné sledovať zmeny ako v celom filesystéme, tak v jeho častiach. Pre zabezpečenie tejto možnosti je prvým parametrom konfigurácie určenie začiatku prehľadávania stromu. Pre bežnú kontrolu serverov prehliadame filesystém celý, takže nasleduje definícia:
root=/
Pre ukladanie údajov o súboroch slúžia databázové súbory. Určíme umiestnenie databázového súboru obsahujúceho posledný známy odsúhlasený stav a umiestnenie súboru s aktuálnym stavom.
known=/mnt/cdrom/securedb.mojhost.cdb
current=/root/securedb.mojhost.cdb.new
Na rade je určenie implicitnej politiky kontroly. Významy jednotlivých kontrolných mechanizmov aj s ich označeniami sme si priblížili v 2 kapitole. V prípade že je príznak uvedený malým písmenom, znamená že sa vykonáva, v prípade špecifikácie veľkým písmenom je kontrola neaktívna. Implicitne je kontrola vykonávaná s nasledujúcim flagom
siplugZAm
V prípade, že implicitné nastavenie nevyhovuje vašim požiadavkám, zmeníme ho prvým pravidlom, ktoré určí základnú kontrolu, pre demonštráciu vypneme kontrolu kontrolných súčtov:
/ SiplugZAm
Doteraz vyhotovený konfiguračný súbor vyzerá nasledovne
root=/
known=/mnt/cdrom/securedb.mojhost.cdb
current=/root/securedb.mojhost.cdb.new
/ SiplugZAm
Pri súčasnom nastavení by sme kontrolovali príznaky iplugm pri všetkých súboroch filesystému, čo je však nežiadúce, nakoľko v celej štruktúre existujú súbory, ktoré môžu meniť obsah a jednotlivé parametre, navyše súčasťou filesystému sú aj záznamy v adresári /proc atd. Explicitné vyňatie adresárovej podštruktúry z celkovej kontroly realizujeme predradením znaku !, čiže
#vynechat z kontroly /proc
! /proc
nekontrolujeme ani mountované filesystémy a podobne
#rovnako mountovane remote adresare
!/mnt/cdrom
!/mnt/floppy
!/mnt/nfs
Pri niektorých súboroch je zmena niektorých parametrov povolená, čo indikujeme uvedením zmenených príkazov pre danú adresárovú podštruktúru v konfiguračnom súbore
# pre /dev/ nekontroluj checksum
/dev S
# pre nasledovne nekontroluj checksum, inode, last modif ani ctime
/root/.bash_history SIMC
/root/.Xauthority SIMC
/root/.ssh/random_seed SIMC
...
Pre urýchlenie času kontroly je možné nezachádzať nižšie do podradenej adresárovej štruktúry, čo indikujeme príznakom =. Zaujímavé to môže byť hlavne v nasledovných štruktúrach
=/usr/src
=/usr/local/src
=/usr/doc
=/usr/info
=/home
=/var/spool
=/proc L
=/tmp SILMC
V prípade, že sa má použité obmedzenie aplikovať iba na daný adresár bez postúpenia jeho vnoreným adresárom, bol v posledných verziách pridaný príznak $.
Predpripravený konfiguračný súbor s názvom root.conf nájdete v adresári examples/, ktorý bol vyhotovený pre distribúciu RedHat. Pred jeho použitím je však potrebné vykonať úpravu v závislosti na požiadavkách svojho systému. Rovnako ako binárku integrit aj konfiguračný súbor je vhodné uložiť na readonly médium.
4. Inicializácia
Po úspešnom nakonfigurovaní je potrebné vytvoriť si východziu databázu. V tomto kroku by mal byť systém zauditovaný pretože s aktuálnym stavom budeme porovnávať ďalšie kontroly. Optimálne je inicializáciu vykonávať na novonainštalovanom systéme. Inicializáciu vykonáme nasledovne:
/mnt/cdrom/integrit -C /mnt/cdrom/mojhost.conf -u
kde parameter -C špecifikuje konfiguračný súbor a parameter -u, indikuje žiadosť o update databázy. Výsledkom je hlásenie o uskutočnení kontroly
integrit: ---- integrit, version 2.03 -----------------
integrit: output : human-readable
integrit: conf file : /mnt/cdrom/mojhost.conf
integrit: known db : /mnt/cdrom/integrit-mojhost.cdb
integrit: current db : /root/integrit-mojhost.cdb.new
integrit: root : /
integrit: do check : no
integrit: do update : yes
integrit: current-state db md5sum --------------
integrit: 4c6c1ed5c604cefbd /root/integrit-mojhost.cdb.new
a výsledná databáza, v našom prípade /root/integrit-mojhost.cdb.new. Vytvorenú počiatočnú databázu umiestnime na readonly médium s názvom špecifikovaným pre known db, v našom prípade opäť na CDROM pod názvom integrit-mojhost.cdb.
5. Kontroly systému a update databázy.
Pravidelné kontroly je vhodné vykonávať denne a to pomocou
/mnt/cdrom/integrit -C /mnt/cdrom/mojhost.conf -c
kde parameter -c určuje žiadosť o porovnanie aktuálneho stavu s databázou zauditovaného stavu. Štandardný výstup je prehľadne spracovaný v nasledovnom formáte:
integrit: ---- integrit, version 2.03 -----------------
integrit: output : human-readable
integrit: conf file : /mnt/cdrom/mojhost.conf
integrit: known db : /mnt/cdrom/integrit-mojhost.cdb
integrit: current db : /root/integrit-mojhost.cdb.new
integrit: root : /
integrit: do check : yes
integrit: do update : no
changed: /etc/lilo.conf m(20020521-192145:20020526-191243) \
c(20020521-192145:20020526-191243)
changed: /bin m(20020507-193828:20020526-191304) \
c(20020507-193828:20020526-191304)
changed: /bin/sh m(20020425-205922:20020526-191304) \
c(20020425-205922:20020526-191304)
new: /bin/rootkit p(644) u(0) g(0) z(0) m(20020526-191200)
...
takže je možné nechať si ho rovno zasielať na administrátorský email. Ideálna je implementácia priamo do cronu, prostredníctvom
02 4 * * * root /mnt/cdrom/integrit -C /mnt/cdrom/mojhost.conf -c | \
mail admin@mojadomena.sk
V prípade, že požadujeme výstup vo formáte xml, pridáme parameter -x. V prípade zistenia zmeny je možné aktualizovať databázu pridaním parametra -u, ktorý zabezpečí zápis do databázy, v našom prípade /root/integrit-mojhost.cdb.new. Nezabudnite hneď aktualizovať databázu na readonly médiu, samozrejme so správnym názvom, v našom prípade /root/integrit-mojhost.cdb, rovnako ako sme učinili pri inicializácii.
6. Záver
Kontrola integrity filesystému je jednou zo základných a najdôležitejších úloh pri administrácii. Open source projekty ponúkajú v globále rovnaké možnosti s rôznym dôrazom na kryptovanie a efektivitu, komerčné produkty môžu pomôcť pri obnove do pôvodného stavu. Nasadenie prostriedkov tohto druhu by sme nemali podceňovať. Neraz sú hardwarovým alebo softwarovým problémom spôsobené nežiadané zápisy do súborov a ich modifikácia, ktoré môžu byť jednoducho takouto kontrolou odhalené. V prípade zistenia nežiadanej zmeny jednoducho uskutočníme opravu či už zo zálohy, alebo z rpm balíkov distribúcie.
Prevzato z
LINUXZONE
« Zpět na seznam