Tripwire è un tipo di Intrusion Detection System, il suo lavoro è quello di verificare lo stato di determinati file rispetto ad uno stato di partenza (baseline). Una modifica non prevista di questo stato può essere indice della compromissione del sistema e della manipolazione non autorizzata di comandi, log o file di configurazione.
Esistono due versioni di Tripwire, una commerciale ed una Open Source.
Come punto di partenza Tripwire crea un database con all'interno una "fotografia" dei file del sistema in uno stato che iniziale che viene considerato sicuro. D'ora in poi Tripwire sarà in grado di controllare se ci sono state modifiche (nel contenuto, nella data di modifica, nei permessi, negli attributi...) o cancellazioni dei file presi in considerazione informando l'amministratore di sistema attraverso un rapporto.
Se le modifiche sono legittime, perchè dovute a normale attività del sistema, l'amministratore può aggiornare la baseline del database di Tripwire inglobando il nuovo status, altrimenti se le modifiche non vengono ritenute valide l'amministratore può immediatamente verificare quali componenti sono stati alterati.
Tripwire permette inoltre di criptare i suoi file di configurazione rendedoli modificabili solo attraverso l'inserimento di password creata in fase di installazione.
Sono richieste due password:
- la site password, di carattere generale, utilizzata per il file di configurazione e policies; può essere utlizzata per altre macchine esportando il file site.key
- la local password per il file database e i report
INSTALLAZIONE
Installazione di Tripwire tramite rpm:
[root@giove root]# rpm -ivh tripwire-2.3.1-14.i386.rpm
Preparing... ########################################### [100%]
1:tripwire ########################################### [100%]
Directory create:
/var/lib/tripwire ---> directory in cui verranno memorizzati i rapporti e il database di sistema
/etc/tripwire ---> si trovano i file di configurazione e le key di codifica
Post-Install
Per completare l'installazione è necessario eseguire lo script twinstall.sh
(nella dir /etc/tripwire/) il quale crea le password dei file di configurazione e produce le key di codifica
[root@giove tripwire]# ./twinstall.sh
----------------------------------------------
The Tripwire site and local passphrases are used to
sign a variety of files, such as the configuration,
policy, and database files.
Passphrases should be at least 8 characters in length
and contain both letters and numbers.
See the Tripwire manual for more information.
----------------------------------------------
Creating key files...
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)
# Richiede l'inserimento della site password
Enter the site keyfile passphrase:
......
# Richiede l'inserimento della local password
Enter the local keyfile passphrase:
Verify the local keyfile passphrase:
FILE di CONFIGURAZIONE
I file di configurazione sono:
tw.cfg
(criptato) vengono memorizzati i dati riguardanti la locazione dei file di configurazione e i paramentri per l'invio di email (twcfg.txt file di esempio non criptato).
tw.pol
(criptato) file in cui viene specificata la modalità di funzionamento di Tripwire e le policy di controllo. Sono elencati i file da monitorare e il livello di "criticità" a loro assegnato (twpol.txt è un esempio non criptato).
INIZIALIZZAZIONE del SISTEMA
I file di configurazione e dati di Tripwire sono per sicurezza criptati, la loro modifica è possibile attraverso comandi che creano un file di testo relativo al file da modificare.
- Modifica del file tw.cfg:
[root@GIOVE tripwire]# twadmin --print-cfgfile > conf.txt
Per validare le modifiche effettuate sul file è necessario creare il nuovo file di configurazione specificando la "site key":
[root@GIOVE tripwire]# twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key conf.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg
Le modifiche al file di configurazione sono ora attive.
- Creare il file tw.pol (file delle policies):
Prima di modificare le policy di tripwire bisogna creare il file da editare utlizzando il file tw.pol standard:
[root@GIOVE tripwire]# twadmin --print-polfile tw.pol > polfile.txt
Ora è possibile editare il file polfile.txt secondo le proprie necessità. Per rigeneraere il tw.pol definitivo si usa il comando:
[root@GIOVE tripwire]# tripwire --create-polfile polfile.txt
- Creare il database di sistema
Nel database di sistema verranno introdotti tutte le voci riguardanti i file da controllare secondo il file di configurazione tw.pol
[root@GIOVE tripwire]# tripwire --init
Please enter your local passphrase:
Incorrect local passphrase. # Ops!
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Performing integrity check...
Nel caso alcuni file specificati in tw.pol non esistono il comando visualiza messaggi di errori
### Warning: File system error.
### Filename: /var/lock/subsys/portmap
### No such file or directory
### Continuing...
### Warning: File system error.
### Filename: /var/lock/subsys/httpd
### No such file or directory
.....
# la locazione del file database è definita nel file di configurazione tw.cfg
Wrote database file: /var/lib/tripwire/GIOVE.twd
The database was successfully generated.
Tripwire è ora configurato, inizializzato e pronto per essere eseguito ed eventualmente schedulato per eseguire dei report sulle modifiche dei file del sistema:
[root@GIOVE tripwire]# tripwire --check
Tripwire-check è lo script inserito, durante l'installazione tramite RPM su distribuzioni Linux basate su RedHat, nel cron per effettuare ogni giorno un controllo Tripwire del sistema.
#!/bin/sh
HOST_NAME=`uname -n`
if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ] ; then
echo "**** Error: Tripwire database for ${HOST_NAME} not found. ****"
echo "**** Run "/etc/tripwire/twinstall.sh" and/or "tripwire --init". ****"
else
#verifica del file di configurazione ed esecuzione del check con invio del report via email tramite l'opzione --email-tripwire
test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check --email-report
fi
L'indirizzo e-mail del destinatario deve essere specificato nel file tw.pol
che contiene anche tutte le regole per il controllo dei file locali.
tw.cfg è il file di configurazione criptato di Tripwire.
twadmin -m f > twcfg.txt
è il comando per creare una copia del file in formato testo. Dopo la sua modifica è possibile ricreare il file tw.cfg
con twadmin -m F -S /etc/tripwire/site.key twcfg.txt
[root@GIOVE tripwire]# cat twcfg.txt
# Dichiarazione della locazione degli eseguibili e dei file di configurazione
ROOT = /usr/sbin
POLFILE = /etc/tripwire/tw.pol
DBFILE = /var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE = /var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE = /etc/tripwire/site.key
LOCALKEYFILE = /etc/tripwire/$(HOSTNAME)-local.key
# Percorso dell'editor utilizzato per interagire con tripwire
EDITOR = /bin/vi
# Se vera lascerà la password in memoria il minor tempo possibile
LATEPROMPTING = false
# Impostazione per evitare il ripetersi di entry all'interno del report
LOOSEDIRECTORYCHECKING = false
# Non invia mail nel caso non siano state trovate violazioni nel check
MAILNOVIOLATIONS = true
# Livello di dettagli nell'email; max 4
EMAILREPORTLEVEL = 4
# Livello di dettagli nel file report; max 4
REPORTLEVEL = 4
# Metodo di invio mail: connessione a un SMTP remoto o SENDMAIL locale
MAILMETHOD = SMTP
# Opzioni in caso si scelga SMTP come metodo
SMTPHOST = mail.dominio.it
SMTPPORT = 25
# Caso metodo SENDMAIL: comando da eseguire per inviare email
#MAILPROGRAM = /usr/sbin/sendmail -oi -t
# Inserisce nel syslog tutti i messaggi di tripwire
SYSLOGREPORTING = false
tw.pol è il file delle regole di Tripwire criptato.
Con il seguente comando si crea una copia del file in formato testo:
[root@GIOVE tripwire]# twadmin -m p > twpol.txt
Una volta modificato twpol.txt ad hoc ecco i comandi per implementare le modifiche:
- nel caso in cui si voglia ricreare il file (opzione che necessita la rinizializzazione del database):
[root@GIOVE tripwire]# twadmin -m P twpol.txt
Please enter your site passphrase:
Wrote policy file: /etc/tripwire/tw.pol
- nel caso in cui si voglia aggiornare il file:
[root@GIOVE tripwire]# tripwire -m p twpol.txt
Parsing policy file: /etc/tripwire/twpol.txt
Please enter your local passphrase:
Please enter your site passphrase:
======== Policy Update: Processing section Unix File System.
======== Step 1: Gathering information for the new policy.
[...]
======== Step 2: Updating the database with new objects.
======== Step 3: Pruning unneeded objects from the database.
Wrote policy file: /etc/tripwire/tw.pol
Wrote database file: /var/lib/tripwire/GIOVE.twd