doc:guides:tripwire

Tripwire: Detecció d'instrusos i integritat de fitxers

This article is obsoleted, deprecated and/or outdated, is kept here for historical reason

Tripwire és una excel·lent eina IDS (Intrusion Detection System) que realitza comprovacions d'integritat de fitxers de sistema per detectar possibles manipulacions. Per fer-ho es construeix una base de dades (signada/encriptada) amb les característiques i signatures dels fitxers a comprovar.

Donat que la configuració i funcionament és una mica complex explico aquí a gran trets el seu ús més comú

La configuració bàsica de tripwire (funcionament global) es fa través de l'arxiu /etc/tripwire/twcfg.txt, Aquest fitxer no té massa complicació i segurament hauràs de tocar poques coses. És bastant autoexplicatiu, pel que no m'hi entretinc més.

Aquest és el fitxer més important (i complex) de tripwire. En ell definim quins fitxers volem monitoritzar i quina informació de cadascun volem assegurar-ne la integritat. S'organitza en seccions començades pel simbol @@, bàsicament només n'hi ha dues: GLOBAL que redefineix alguns paràmetres de configuració i FS que específica les polítiques sobre el sistema de fitxers.

Regles

El format bàsic d'una regla és el següent:

objecte    ->  politica (opció=valor, opció=valor, ...) ;
  

La majoria de vegades voldrem agrupar opcions per diverses regles, aleshores podem usar el següent format:

(
    opció = valor,
    opció = valor,
    ...
)
{
    objecte    -> politica ;
}           
  

Igualment podem indicar opcions específiques a una regla.

Propietats a verificar

La màscara de propietats ens indica quines propietats del fitxer volem verificar-ne la integritat. Hi ha diverses propietats i es poden activar/desactivar precedint-les de +/- respectivament. Generalment el més recomanable és fer com la configuració per defecte i definir-se unes macros amb les propietats més usuals. Aquí tenim una taula de les possibles propietats:

Simbol Propietat
- Ignore the following properties
+ Record and check the following properties
a Access timestamp
b Number of blocks allocated
c Inode timestamp (create/modify)
d ID of device on which inode resides
g File owner's group ID
i Inode number
l File is increasing in size (a “growing file”)
m Modification timestamp
n Number of links (inode reference count)
p Permissions and file mode bits
r ID of device pointed to by inode (valid only for device objects)
s File size
t File type
u File owner's user ID
C CRC-32 hash value
H Haval hash value
M MD5 hash value
S SHA hash value

Com hem dit podem fer-nos macros amb les que utilitzarem més sovint (així només hem de pensar una vegada). Fixa't que les cadenes tenen la mateixa longitud, ja que sempre especifico primer qué vull verificar (+) i despŕes que no vull verificar (-). D'aquesta forma m'asseguro la configuració correcte pel que vull i que no hem deixo cap paràmetre. Això no és necessari. També et pot interessar no usar totes les signatures, SHA és prou bona com per qué ningú aconseguixi trencar-la, i si n'uses menys el procés sempre serà més ràpid (menys hashos a calcular), de tota manera et recomano que com a mínim n'usis 2 de diferents.

SEC_FIXED     = +bcdgimnprstuCHMS-al ;
SEC_BIN       = +bcdgimprstuCHMS-aln ;
SEC_CONFIG    = +dgiprtuCHMS-abclmns ;

Opcions

Opció Descripció
rulename Nom indicatiu de la regla/grup de polítiques
severity Nivell d'alerta que suposa una infracció de la política
emailto Mail on notificar les alertes
recurse Nivell de recursivitat de directoris
(
  rulename = "Critical system boot files",
  severity = $(SIG_HI)
)
{
  /boot                   -> $(SEC_CRIT) ;
  /lib/modules            -> $(SEC_CRIT) ;
}

Per tal d'assegurar la integritat de la BD que generarà tripwire, aquest necessita un parell de claus: la local-key i la site key. Per generar-les cal usar la comanda twadmin. Cal tenir en compte que els fitxers on guardem les dues claus siguin els especificats en el fitxer de configuració /etc/tripwire/twcfg.txt:

# twadmin --generate-keys --site-keyfile /etc/tripwire/site.ke
# twadmin --generate-keys --local-keyfile /etc/tripwire/`hostname`-local.key
  

Evidentment convindria guardar-se bé els dos passwords i les dues claus en un lloc ben segur.

Fet això ja podem generar les versions segures (compilades i encriptades) dels fitxers de configuració i polítiques de tripwire. Aquests fitxers s'encripten amb la clau de site.

# twadmin --create-cfgfile --cfgfile tw.cfg --site-keyfile site.key twcfg.txt
# twadmin --create-polfile --cfgfile tw.cfg --polfile tw.pol --site-keyfile site.key  twpol.txt

Fixar-se de nou que cal usar els mateixos noms de fitxer que hem posat en el fitxer de configuració. Seria convenient usar un script que els recuperi automàticament d'aquí.

Finalment podem inicialitzar la base de dades d'integritat. Aquest s'encripta amb la clau local (d'aquesta manera distingeix la integritat de diferents hosts). Ara ja no cal especificar tants paràmetres, ja que donada la versió compilada del fitxer de configuració ja sap quin és el fitxer de polítiques i la resta d'informació.

# tripwire --init --cfgfile tw.cfg

Pot ser que alerti d'algun fitxer inexistent (que hem posat en la BD però no existeix en sistema de fitxers). No és crític. La primera vegada pot caldre refrescar una vegada la BD, ja que si monitoritzem els fitxers de la BD d'integritat aquests són regenerats cada vegada i el tripwire trobaria canvis a la primera execució.

Verificar periodicament la integritat dels fitxers no és massa complex i convindria fer-ho habitualment i de forma automàtica. Els informes de tripwire són molt complets i explicatius

# tripwire --check

És recomanable mirar-se la documentació ja que la verificació té opcions molt útils. Per exemple si la BD és molt gran (i per tant el procés dura molt) podem especificar que només verifiqui les regles amb un nivell d'alerta determinat, també li podem dir que envii un informe per mail enlloc de mostrar-lo per pantalla, o actualitzar la BD interactivament.

Si fem canvis en la política caldrà actualitzar la versió compilada i encriptada de la política i tornar a revisar el sistema de fitxers. Per fer-ho:

# tripwire --update-policy --cfgfile tw.cfg --polfile tw.pol twpol.txt

Si hi hagut canvis i hem verificat manualment que són correctes, cal actualitzar la BD d'integritat per qué el tripwire no ens torni a avisar de violacions de polítiques i registri el nou estat del sistema de fitxers. Per això hi ha dos maneres: interactivament (per cada violació ens demana si actualitzar la BD) o automàticament (actualitzar la BD amb l'estat actual del sistema de fitxers).

  • doc/guides/tripwire.txt
  • Last modified: 2021/06/10 21:44
  • by 127.0.0.1