Title: Lab 3 - Auditing the System author: Wale Soyinka contributors: Steven Spencer, Ganna Zhyrnova
Laboratorio 3: Auditing del Sistema¶
Obiettivi¶
Dopo aver completato questo laboratorio, sarete in grado di:
- creare da zero uno strumento di auditing semplice e personalizzato
- utilizzare e comprendere strumenti di verifica della sicurezza come Tripwire
Tempo stimato per completare questo laboratorio: 90 minuti
Un semplice programma di controllo dell'integrità¶
Prima di installare e configurare Tripwire, creiamo uno script di esempio che svolge una funzione simile. Questo script aiuterà a comprendere meglio il funzionamento di Tripwire e di strumenti simili.
Lo script si basa principalmente sul programma md5sum. Il programma md5sum viene utilizzato per calcolare una somma di controllo (o "impronta digitale") a 128 bit per un FILE specificato.
Le funzioni dello script sono riassunte di seguito:
Subito dopo l'installazione del sistema di base, alcuni dei file di configurazione del sistema nella directory /etc verranno sottoposti a backup in una directory denominata etc.bak nella directory home di root.
In particolare, verrà eseguito il backup di tutti i file presenti in /etc con il suffisso "*.conf"
Lo fa quando viene eseguito con l'opzione di inizializzazione ( -- initialization| -i)
Lo script otterrà quindi le checksum md5 dei file idonei noti (file non contaminati).
L'elenco delle somme MD5 sarà memorizzato in un file chiamato "md5_good".
Quando lo script viene eseguito in modalità di verifica, il programma md5sum viene richiamato con l'opzione " - -check" per controllare le somme MD5 correnti rispetto a un elenco dato (il file md5_good).
Lo script stamperà il risultato della verifica nell'output standard e invierà una copia del risultato via e-mail al superutente.
Ogni volta che vengono apportate modifiche (legali o illegali) ai file di configurazione presenti in /etc, lo script può essere richiamato con l'opzione
--rebuild| -r
per approvare le modifiche e ricostruire il pseudo database di base.È possibile eseguire periodicamente lo script manualmente o creare un cron job per eseguirlo automaticamente.
Lo script seguente può essere perfezionato e scalato per fare molto di più di quello che fa. Spetta a voi e alla vostra immaginazione fargli fare quello che volete.
Se volete solo un modo rapido e pratico per svolgere il lavoro, lo script sarà sufficiente, ma per tutto il resto c'è Tripwire.
Esercizio 1¶
- Accedere come root e lanciare l'editor di testo desiderato. Inserisci il testo qui sotto:
#!/bin/sh
# This script checks for changes in the MD5 sums of files named "/etc/*.conf"
case $1 in
-i|--initialize)
# This section will run if the script is run in an initialization mode
# Delete old directory, make directory, backup good files, and change directory to /root/etc.bak
rm -rf /root/etc.bak
mkdir /root/etc.bak
cp /etc/*.conf /root/etc.bak
cd /root/etc.bak
# Create our baseline file containing a list of good MD5 sums
for i in /etc/*.conf; do
md5sum $i >> md5_good
done
echo -e "\nUntainted baseline file (~/etc.bak/md5_good) has been created !!\n"
;;
-v|--verify)
# This section will run if the script is called in a verify mode
cd /root/etc.bak
# Check if there is any file containing output from a previous run
if [ -f md5_diffs ]; then
rm -f md5_diffs # if it exists we delete it
fi
# We re-create the file with a pretty sub-heading and some advice
echo -e "\n **** Possibly tainted File(s) ****\n" > md5_diffs
# Run the md5sum program against a known good list i.e. "md5_good" file
md5sum -c md5_good 2> /dev/null | grep FAILED >> md5_diffs
if [ $? -ge 1 ]; then
echo "Nothing wrong here."
else
# Append some helpful text to the md5_diffs file
echo -e "\nUpdate the baseline file if you approve of the changes to the file(s) above \n" >> md5_diffs
echo -e "Re-run the script with the re-build option (e.g. ./check.sh --rebuild) to approve \n" >> md5_diffs
cat md5_diffs # print the md5_diffs file to the display
if [ -x /usr/bin/mail ]; then
mail -s "Changed Files" root < md5_diffs # also e-mail the md5_diffs file to root
fi
fi
;;
-r|--rebuild)
# This section is for re-building the Baseline file just in case
# the changes to the configuration files are legal and sanctioned
cd /root/etc.bak/
mv md5_good md5_good.bak # make a backup copy of the current untainted baseline file
for j in /etc/*.conf; do
md5sum $j >> md5_good
done
echo -e "\nBaseline file updated with approved changes !!!\n"
;;
*)
echo "This script accepts: only ( -i|--initialize or -v|--verify or -r|--rebuild ) parameters"
;;
esac
Salvate il testo qui sopra in un file di testo e nominatelo "check.sh"
Per utilizzare lo script check.sh¶
Creare una cartella nella home directory di root chiamata "scripts"
Copiate lo script creato in precedenza nella cartella degli script.
Rendete lo script eseguibile.
Eseguire lo script con l'opzione di inizializzazione. Digitare:
[root@localhost scripts]# ./check.sh -i Untainted baseline file (~/etc.bak/md5_good) has been created !!
Usare il comando
ls
per visualizzare il contenuto della home directory di root. Dovrebbe esserci una nuova directory denominataetc.bak
. Usate il comandocat
per visualizzare il file/root/etc.bak/md5_good
.Eseguire lo script utilizzando l'opzione verify. Digitare:
[root@localhost scripts]# ./check.sh -v Nothing wrong here.
Se tutto è a posto, si dovrebbe ottenere l'output di cui sopra.
Si modificheranno deliberatamente i file
/etc/kdump.conf
nella directory/etc
. Digitare:[root@localhost scripts]# echo "# This is just a test" >> /etc/kdump.conf
Ora eseguite nuovamente lo script check.sh in modalità di verifica. Digitare:
[root@localhost scripts]# ./check.sh -v **** /etc/kdump.conf: FAILED Update the baseline file if you approve of the changes to the file(s) above Re-run the script with the re-build option (e.g. ./check.sh --rebuild) to approve
In base all'avviso di cui sopra, dovreste approfondire l'indagine per verificare se il file alterato possa essere approvato. In tal caso, è possibile eseguire lo script con l'opzione
--rebuild
. Per visualizzare solo le differenze tra il file "contaminato" e quello "non contaminato" si può digitare:[root@localhost scripts]# sdiff -s /etc/kdump.conf /root/etc.bak/kdump.conf
Tripwire¶
Una delle prime cose da fare dopo aver creato un nuovo sistema è ottenere un'istantanea dello stato ottimale del sistema prima che questo venga “contaminato” o prima di implementarlo in produzione.
Esistono diversi strumenti per farlo. Uno di questi strumenti è Tripwire. Tripwire è uno strumento avanzato, quindi preparatevi a molte opzioni, sintassi, stranezze e interruttori.
Tripwire può essere considerato una forma di sistema di rilevamento delle intrusioni (IDS) basato su host. Esegue funzioni di rilevamento delle intrusioni scattando un'istantanea di un "sistema sano" e confrontando successivamente questo stato sano con qualsiasi altro stato sospetto. Fornisce un mezzo per conoscere/monitorare se determinati file sensibili sono stati alterati illegalmente. L'amministratore del sistema decide naturalmente quali file devono essere monitorati.
Gli autori di tripwire lo descrivono come un software Open Source per la Sicurezza, il Rilevamento delle Intrusioni, la Valutazione dei Danni e il Ripristino, con Funzionalità Forensi.
Tripwire confronta la nuova firma di un file con quella acquisita al momento della creazione del database.
Le fasi di installazione e configurazione di tripwire sono elencate di seguito:
Installare il software dal sorgente o dal binario
Eseguire lo script di configurazione: (twinstall.sh). Questo script viene utilizzato per: a) Creare la chiave del sito, la chiave locale e le richieste di passphrase per entrambe b) Firmare il file dei criteri e il file di configurazione con la chiave del sito
Inizializzare il database Tripwire
Eseguire il primo controllo di integrità.
Modificare il file di configurazione (twcfg.txt)
Modificare il file dei criteri (twpol.txt)
Tripwire accetta le seguenti opzioni dalla riga di comando:
Modalità di Inizializzazione del database:
-m i --init
-v --verbose
-s --silent, --quiet
-c cfgfile --cfgfile cfgfile
-p polfile --polfile polfile
-d database --dbfile database
-S sitekey --site-keyfile sitekey
-L localkey --local-keyfile localkey
-P passphrase --local-passphrase passphrase
-e --no-encryption
Modalità di Controllo dell'Integrità:
-m c --check
-I --interactive
-v --verbose
-s --silent, --quiet
-c cfgfile --cfgfile cfgfile
-p polfile --polfile polfile
-d database --dbfile database
-r report --twrfile report
-S sitekey --site-keyfile sitekey
-L localkey --local-keyfile localkey
-P passphrase --local-passphrase passphrase
-n --no-tty-output
-V editor --visual editor
-E --signed-report
-i list --ignore list
-l { level | name } --severity { level | name }
-R rule --rule-name rule
-x section --section section
-M --email-report
-t { 0|1|2|3|4 } --email-report-level { 0|1|2|3|4 }
-h --hexadecimal
[ object1 [ object2... ]]
Modalità di Aggiornamento del Database:
-m u --update
-v --verbose
-s --silent, --quiet
-c cfgfile --cfgfile cfgfile
-p polfile --polfile polfile
-d database --dbfile database
-r report --twrfile report
-S sitekey --site-keyfile sitekey
-L localkey --local-keyfile localkey
-P passphrase --local-passphrase passphrase
-V editor --visual editor
-a --accept-all
-Z { low | high } --secure-mode { low | high }
Modalità di Aggiornamento dei Criteri:
-m p --update-policy
-v --verbose
-s --silent, --quiet
-c cfgfile --cfgfile cfgfile
-p polfile --polfile polfile
-d database --dbfile database
-S sitekey --site-keyfile sitekey
-L localkey --local-keyfile localkey
-P passphrase --local-passphrase passphrase
-Q passphrase --site-passphrase passphrase
-Z { low | high } --secure-mode { low | high }
policyfile.txt
Riepilogo delle opzioni per il comando tripwire
:
SYNOPSIS
Database Initialization: tripwire { -m i | --init } [ options... ]
Integrity Checking: tripwire { -m c | --check } [ options... ]
[ object1 [ object2... ]]
Database Update: tripwire { -m u | --update } [ options... ]
Policy update: tripwire { -m p | --update-policy } [ options... ]
policyfile.txt
Test: tripwire { -m t | --test } [ options... ]
twadmin
¶
L'utilità twadmin
esegue le funzioni amministrative relative ai file e alle opzioni di configurazione di Tripwire. In particolare, twadmin
consente di codificare, decodificare, firmare e verificare i file Tripwire e fornisce un mezzo per generare e modificare le chiavi locali e del sito.
Create Configuration File: twadmin [-m F|--create-cfgfile][options] cfgfile.txt
Print Configuration File: twadmin [-m f|--print-cfgfile] [options]
Create Policy File: twadmin [-m P|--create-polfile] [options] polfile.txt
Print Policy File: twadmin [-m p|--print-polfile] [options]
Remove Encryption: twadmin [-m R|--remove-encryption] [options] [file1...]
Encryption: twadmin [-m E|--encrypt] [options] [file1...]
Examine Encryption: twadmin [-m e|--examine] [options] [file1...]
Generate Keys: twadmin [-m G|--generate-keys] [options]
twprint
¶
Stampa i file del database e dei rapporti di Tripwire in formato testo semplice.
Modalità di stampa del report:
-m r --print-report
-v --verbose
-s --silent, --quiet
-c cfgfile --cfgfile cfgfile
-r report --twrfile report
-L localkey --local-keyfile localkey
-t { 0|1|2|3|4 } --report-level { 0|1|2|3|4 }
Modalità di stampa del Database:
-m d --print-dbfile
-v --verbose
-s --silent, --quiet
-c cfgfile --cfgfile cfgfile
-d database --dbfile database
-L localkey --local-keyfile localkey
[object1 [object2 ...]
siggen
¶
siggen
è una routine di raccolta delle firme per Tripwire. È un'utilità che visualizza i valori della funzione hash per i file specificati.
OPTIONS
‐t, --terse
Terse mode. Prints requested hashes for a given file on one line, delimited by spaces, with no extraneous information.
‐h, --hexadecimal
Display results in hexadecimal rather than base64 notation.
‐a, --all
Display all hash function values (default).
‐C, --CRC32
Display CRC-32, POSIX 1003.2 compliant 32-bit Cyclic Redundancy Check.
‐M, --MD5
Display MD5, the RSA Data Security, Inc. Message Digest Algorithm.
‐S, --SHA
Display SHA, Tripwire's implementation of the NIST Secure Hash Standard, SHS (NIST FIPS 180).
‐H, --HAVAL
Display Haval value, a 128-bit hash code.
file1 [ file2... ]
List of filesystem objects for which to display values.
Esercizio 2¶
Per installare Tripwire¶
Verificare se Tripwire è già installato sul sistema. Digitare:
[root@localhost root]# rpm -q tripwire tripwire-*
Se si ottiene un risultato simile a quello riportato sopra, il programma è già installato. Saltare il passaggio successivo.
Se non è installato, procuratevi il binario di Tripwire e installatelo. Digitare:
[root@localhost root]# dnf -y install tripwire
Configurare Tripwire¶
La configurazione di Tripwire comporta (se necessario) la personalizzazione del file di configurazione di Tripwire, del file dei criteri e l'esecuzione dello script di configurazione. Lo script richiede una passphrase che verrà utilizzata per firmare/proteggere il file di configurazione, il file dei criteri e il file del database.
Cambiare la pwd con la directory di lavoro di Tripwire: Digitare:
[root@localhost root]# cd /etc/tripwire/
Elencare il contenuto della directory.
Per visualizzare/studiare i file presenti nella directory, utilizzare un qualsiasi paginatore o editor di testo.
Accetteremo le impostazioni della configurazione predefinita. (twcfg.txt) e il file dei criteri predefiniti (twpol.txt).
Eseguire l'utilità di configurazione di Tripwire come root. Verrà richiesta (due volte) la passphrase della chiave del sito. Selezionate una passphrase che NON dimenticherete (la chiave del sito è destinata al file twcfg.txt e al file twpol.txt):
[root@localhost tripwire]# tripwire-setup-keyfiles ..... Enter the site keyfile passphrase: Verify the site keyfile passphrase: ...... Generating key (this may take several minutes)...Key generation complete.
Successivamente verrà richiesta una chiave locale. Di nuovo, scegliete un'altra password che NON dimenticherete. (La chiave locale firma i file del database tripwire e i file dei report)
Enter the local keyfile passphrase: Verify the local keyfile passphrase: .... Generating key (this may take several minutes)...Key generation complete.
Dopo aver scelto le passphrase, il programma
tripwire-setup-keyfiles
procederà alla creazione/firma delle versioni criptate dei file originali in testo normale (ad esempio, verranno creati rispettivamente tw.cfg e tw.pol). Verranno nuovamente richieste le passphrase scelte in precedenza. A questo punto, seguite le istruzioni finché lo script non termina.---------------------------------------------- Signing configuration file... Please enter your site passphrase: ******** ---------------------------------------------- Signing policy file... Please enter your site passphrase: ******** ...... Wrote policy file: /etc/tripwire/tw.pol
Compito di laboratorio:
Elencare il nuovo contenuto della cartella /etc/tripwire.
In base all'avviso ricevuto durante l'esecuzione dell'utilità
tripwire-setup-keyfiles
, ora si sposteranno le versioni in testo semplice del file di configurazione e dei file delle policy lontano dal sistema locale. Potreste memorizzarli su un supporto di rimozione esterno o crittografarli in loco (utilizzando uno strumento come GPG, ad esempio) OPPURE eliminarli completamente se vi sentite particolarmente audaci. Digitare: Digitare:[root@localhost tripwire]# mkdir /root/tripwire_stuff && mv twcfg.txt twpol.txt /root/tripwire_stuff
Nota
Può essere utile conservare le versioni in chiaro in un luogo sicuro, nel caso in cui si dimentichino le passphrase. È sempre possibile rieseguire "tripwire-setup-keyfiles" in base alle configurazioni e ai criteri perfezionati nel tempo.
Per inizializzare il database¶
L'inizializzazione del database è la terminologia di Tripwire per indicare l'acquisizione di un'istantanea iniziale "non contaminata" dei file che si è deciso di monitorare (in base al file di criterio). Questo genera il database e lo firma con la chiave locale. Il database serve come base per tutti i futuri controlli di integrità.
Mentre si è ancora connessi come root digitare:
[root@localhost tripwire]# tripwire --init Please enter your local passphrase: Parsing policy file: /etc/tripwire/tw.pol Generating the database... *** Processing Unix File System ***
Quando viene richiesto, inserire la passphrase locale. La creazione del database verrà portata a termine e si dovrebbe ottenere un output simile a quello riportato di seguito:
The database was successfully generated.
Utilizzare il comando
ls
per verificare che il database sia stato creato nella posizione indicata. Digitare:[root@localhost tripwire]# ls -lh /var/lib/tripwire/$(hostname).twd -rw-r--r--. 1 root root 3.3M Sep 27 18:35 /var/lib/tripwire/localhost.twd
Esercizio 3¶
Controllo dell'integrità e visualizzazione dei rapporti¶
In questa esercitazione imparerete a eseguire un controllo di integrità del sistema e a visualizzare i rapporti generati da Tripwire.
Per eseguire un controllo di integrità¶
L'esecuzione di tripwire in questa modalità (modalità di controllo dell'integrità) confronta gli oggetti del file system corrente con le loro proprietà nel database di tripwire. Le discrepanze tra il database e gli oggetti del file system corrente vengono stampate sullo standard output durante l'esecuzione di Tripwire in questa modalità. Al termine del controllo Tripwire genera anche un file di report nella directory specificata nel file twcfg.txt (/var/lib/tripwire/report/).
Eseguire un controllo di integrità. Digitare:
[root@localhost tripwire]# tripwire --check
Durante questo controllo si vedranno scorrere alcuni avvisi [previsti].
Controllare la cartella
/var/lib/tripwire/report
per vedere se è stato creato un rapporto anche lì.Compito di laboratorio:
Scrivere il nome del file di report creato.
FILE_NAME =
Eseguire nuovamente il controllo di integrità, ma specificare manualmente il nome del file di report. Digitare:
[root@localhost tripwire]# tripwire -m c -r /root/tripwire_report.twr
Assicurarsi che sia stato creato un nuovo file nella home directory di root. Digitare:
[root@localhost tripwire]# ls -l /root/tripwire_report.twr
Per esaminare il rapporto¶
I file di report di Tripwire sono una raccolta di violazioni delle regole rilevate durante un controllo di integrità.
Esistono diversi modi per visualizzare un file di report di Tripwire:
- durante il controllo di integrità
- sotto forma di un'e-mail inviata automaticamente all'utente
- utilizzando il comando
twprint
fornito con il pacchetto Tripwire
Nota
Probabilmente avrete notato dall'esercizio precedente che Tripwire utilizza una combinazione del nome FQDN del sistema, della data e dell'ora per assegnare un nome predefinito ai file di report.
Per prima cosa, passare alla directory del report predefinito e visualizzare il report predefinito creato al punto 1 (FILE_NAME). Digitare:
[root@localhost report]# cd /var/lib/tripwire/report && twprint --print-report -r <FILE_NAME>
Sostituire
con il valore indicato in precedenza. Per utilizzare la forma abbreviata del comando precedente, digitare:
[root@localhost report]# twprint -m r -r <FILE_NAME> | less
L'output viene inviato al comando less perché il report scorre rapidamente.
Ora visualizzate l'altro report creato manualmente, nella directory home di root. Digitare:
[root@localhost root]# cd && twprint --print-report -r /root/tripwire_report.twr | less
Tenetevi forte e studiate attentamente l'output del file di report.
Dovreste aver notato di nuovo che Tripwire ha creato forme binarie/dati dei file di report. Creare una versione solo testo del file di report nella directory home di root. Digitare:
[root@localhost root]# twprint --print-report -r /root/tripwire_report.twr > tripwire_report.txt
Per visualizzare i rapporti via e-mail¶
Here you will test the e-mail functionality of Tripwire. Il sistema di notifica via e-mail di Tripwire utilizza l'impostazione specificata nel file di configurazione di Tripwire. (twcfg.txt).
Per prima cosa visualizzate il file di configurazione e notate le variabili che controllano il sistema di notifica via e-mail di Tripwire. Per visualizzare il tipo di file di configurazione:
[root@localhost report]# twadmin -m f | less
Compito di laboratorio:
Scrivere le variabili rilevanti.
Quindi, assicurarsi che il sistema di posta locale sia attivo e funzionante controllando lo stato di postfix. Digitare:
[root@localhost report]# systemctl -n 0 status postfix ....... Active: active (running) since Thu 2023-08-31 16:21:26 UTC; 3 weeks 6 days ago .......
L'output dovrebbe essere simile a quello sopra riportato. Se il sistema di posta elettronica non è in funzione, prima di continuare, cercate di risolvere il problema e di renderlo operativo.
Inviare un messaggio di prova a root. Digitare:
[root@localhost report]# tripwire --test --email root
Utilizzare il programma di posta per controllare la posta di root. Digitare:
[root@localhost report]# mail
Il superutente dovrebbe ricevere un messaggio con oggetto "Test email message from Tripwire"
Dopo aver confermato il funzionamento della funzionalità e-mail, si può provare a inviare manualmente una copia di uno dei report a se stessi.
Domanda
Qual era il comando per farlo?
Messa a punto di Tripwire¶
Dopo l'installazione di Tripwire, l'acquisizione di un'istantanea del sistema e l'esecuzione del primo controllo di integrità, è molto probabile che sia necessario mettere a punto Tripwire per soddisfare le esigenze del vostro ambiente specifico. Ciò è dovuto principalmente al fatto che il file di configurazione e di criterio predefinito fornito con Tripwire potrebbe non essere esattamente adatto alle vostre esigenze o riflettere gli oggetti effettivi presenti nel vostro file system.
È necessario verificare se le violazioni del file system segnalate nel file di report durante il controllo di integrità sono violazioni effettive o modifiche legittime/autorizzate agli oggetti del file system. Anche in questo caso Tripwire offre diversi modi per farlo.
Aggiornamento del file dei criteri¶
Con questo metodo è possibile modificare o regolare con precisione ciò che Tripwire considera violazioni agli oggetti del file system, modificando le regole nel file dei criteri. Il database può quindi essere aggiornato senza una nuova inizializzazione completa. In questo modo si risparmia tempo e si preserva la sicurezza, mantenendo il file dei criteri sincronizzato con il database utilizzato.
Utilizzerete il file di report creato in precedenza ( /root/tripwire_report.txt ) per perfezionare il vostro file di criterio, impedendo innanzitutto a Tripwire di segnalare l'assenza di file che non sono mai stati presenti sul filesystem.
In questo modo si riduce notevolmente la lunghezza del file di report da gestire.
Per mettere a punto Tripwire¶
Usare il comando grep per filtrare tutte le righe del file di report che si riferiscono a file mancanti (ad es. Linee contenenti la parola "Filename"). Linee contenenti la parola "Filename"). Reindirizzare l'output in un altro file, tripwire_diffs.txt. Digitare:
[root@localhost root]# grep Filename /root/tripwire_report.txt > tripwire_diffs.txt
Visualizzare il contenuto del file creato in precedenza. Digitare:
[root@localhost root]# less tripwire_diffs.txt 207: Filename: /proc/scsi 210: Filename: /root/.esd_auth 213: Filename: /root/.gnome_private 216: Filename: /sbin/fsck.minix 219: Filename: /sbin/mkfs.bfs ..................................
Ora è necessario modificare il file dei criteri di Tripwire e commentare o eliminare le voci del file che non dovrebbero essere presenti. Ad esempio, alcuni file non sono presenti sul sistema e non lo saranno mai. Uno dei file, ad esempio, che il file di criterio cerca di monitorare è il file /proc/scsi. Se il sistema non dispone di dispositivi SCSI, non ha senso monitorare questo file.
Un altro esempio discutibile di cosa monitorare o meno è rappresentato dai vari file di blocco sotto la directory
/var/lock/subsys/
. La scelta di monitorare questi file deve essere una decisione personale.Creare nuovamente una versione di testo del file di criterio, nel caso in cui sia stato rimosso (come consigliato) dal sistema locale. Digitare:
[root@localhost root]# twadmin --print-polfile > twpol.txt
Modificare il file di testo creato in precedenza utilizzando un qualsiasi editor di testo. Eliminare i riferimenti agli oggetti che non si desidera monitorare. Si può usare il file tripwire_diffs.txt creato in precedenza come linea guida. Digitare:
[root@localhost root]# vi twpol.txt
Salvare le modifiche al file e chiuderlo.
Eseguire
tripwire
in modalità di aggiornamento dei file di criterio. Digitare:[root@localhost root]# tripwire --update-policy /root/twpol.txt
Quando viene richiesto, inserire le passphrase locale e del sito.
Verrà creato un nuovo file di criterio firmato e crittografato nella directory
/etc/tripwire/
.Eliminare o rimuovere la versione di testo del file di criterio dal sistema locale.
L'esecuzione del comando al punto 5 crea un file di report nella directory
/var/lib/tripwire/report
.Compito di laboratorio:
Scrivere il nome dell'ultimo file di report.
Eseguire nuovamente un controllo di integrità del sistema fino a quando non si è certi di avere una buona base del sistema, con la quale prendere decisioni future.
Domanda
Qual è il comando per farlo?
Aggiornamento del database¶
L'esecuzione di tripwire
in modalità di aggiornamento del database dopo un controllo di integrità offre un modo rapido e approssimativo per mettere a punto Tripwire. Questo perché la modalità di aggiornamento del database consente di riconciliare le differenze tra il database e il sistema corrente. In questo modo si eviterà che le violazioni vengano visualizzate nei rapporti futuri.
Questo processo di aggiornamento permette di risparmiare tempo, consentendo di aggiornare il database senza doverlo reinizializzare.
Per aggiornare il database¶
Cambiate la pwd nella posizione in cui Tripwire memorizza i file di report sul vostro sistema. Digitare:
[root@localhost root]# cd /var/lib/tripwire/report/
Per prima cosa si utilizzerà la modalità di aggiornamento del database in modo interattivo. Digitare:
[root@localhost report]# tripwire --update -Z low -r <LATEST_REPORT>
Sostituire
con il nome del file di report annotato in precedenza. Il comando di cui sopra lancerà anche il vostro editor di testo predefinito (ad esempio,
vi
), che vi presenterà le cosiddette "caselle di aggiornamento". Potrebbe essere necessario scorrere il file.Le voci contrassegnate con una "[x]" implicano che il database deve essere aggiornato con quel particolare oggetto.
Rimuovere la "x" dal riquadro "[ ]" per impedire l'aggiornamento del database con i nuovi valori per la voce.
Per salvare e uscire dall'editor di testo, utilizzare i tasti abituali.
Provate quindi a utilizzare la modalità di aggiornamento del database in modo non interattivo. cioè si accettano tutte le voci del file di report senza che venga richiesto. Digitare:
[root@localhost report]# tripwire --update -Z low -a -r <LATEST_REPORT>
File di configurazione di Tripwire¶
Inizierete questi esercizi mettendo a punto il vostro file di configurazione. In un esercizio precedente è stato consigliato di rimuovere o eliminare dal sistema tutte le versioni in chiaro del file di Tripwire. È possibile creare un'installazione di Tripwire leggermente più sicura modificando alcune variabili del file di configurazione di Tripwire. Si specificherà che Tripwire deve sempre cercare le versioni binarie dei file di policy e di configurazione su supporti rimovibili come dischetti o CDROM.
Cambiate la vostra pwd nella directory /etc/tripwire.
Genera una versione in chiaro del file di configurazione. Digitare:
[root@localhost tripwire]# twadmin --print-cfgfile > twcfg.txt
Aprire il file di configurazione creato in precedenza nell'editor di testo. Digitare:
[root@localhost tripwire]# vi twcfg.txt
Modificare il file in modo che assomigli al file di esempio qui sotto:
(NOTA: le nuove variabili aggiunte e modificate sono state evidenziate)
1 ROOT =/usr/sbin 2 POLFILE =/mnt/usbdrive/tw.pol 3 DBFILE =/var/lib/tripwire/$(HOSTNAME).twd 4 REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr 5 SITEKEYFILE =/mnt/usbdrive/site.key 6 LOCALKEYFILE =/mnt/usbdrive/$(HOSTNAME)-local.key 7 EDITOR =/bin/vi 8 LATEPROMPTING =false 9 LOOSEDIRECTORYCHECKING =true 10 GLOBALEMAIL =root@localhost 11 MAILNOVIOLATIONS =true 12 EMAILREPORTLEVEL =3 13 REPORTLEVEL =3 14 MAILMETHOD =SENDMAIL 15 SYSLOGREPORTING =true 16 MAILPROGRAM =/usr/sbin/sendmail -oi -t
Compito di laboratorio:
Consultate la pagina man di "twconfig" per scoprire a cosa servono le seguenti variabili:
```txt LOOSEDIRECTORYCHECKING GLOBALEMAIL SYSLOGREPORTING ```
Montate un supporto rimovibile nella directory /mnt/usbdrive. Digitare:
[root@localhost tripwire]# mount /dev/usbdrive /mnt/usbdrive
Nota
Se si sceglie di memorizzare i file in una posizione diversa (ad esempio un supporto Cdrom), apportare le modifiche necessarie ai comandi.
Trasferire la chiave del sito, la chiave locale e i file binari nella posizione specificata nel nuovo file di configurazione. Digitare:
[root@localhost tripwire]# mv site.key tw.pol localhost.localdomain-local.key /mnt/usbdrive
Creare una versione binaria del file di configurazione in chiaro. Digitare:
[root@localhost tripwire]# twadmin --create-cfgfile -S /mnt/usbdrive/site.key twcfg.txt*
Il file
/etc/tripwire/tw.cfg
verrà creato per voi.Testare la nuova configurazione. Smontare l'unità USB ed espellerla.
Provare a eseguire uno dei comandi di
tripwire
che richiede i file memorizzati nell'unità floppy. Digitare:[root@localhost tripwire]# twadmin --print-polfile ### Error: File could not be opened. ### Filename: /mnt/usbdrive/tw.pol ### No such file or directory ### ### Unable to print policy file. ### Exiting...
Si dovrebbe ottenere un errore simile a quello riportato sopra.
Montare il supporto in cui sono memorizzati i file di tripwire e ripetere il comando precedente.
Domanda
Il comando è stato eseguito correttamente questa volta?
Cercare ed eliminare dal sistema tutte le versioni in testo semplice dei file di configurazione di Tripwire creati finora.
Dover montare e smontare un supporto rimovibile ogni volta che si desidera amministrare un aspetto di Tripwire potrebbe risultare una seccatura, ma il vantaggio potrebbe essere rappresentato dalla maggiore sicurezza. È assolutamente necessario considerare l'archiviazione di una versione incontaminata del database di tripwire su un supporto di sola lettura come un DVD.
ESERCIZI SUPPLEMENTARI¶
Configurate l'installazione di Tripwire per eseguire un controllo di integrità ogni giorno alle 2 del mattino e inviare un rapporto del controllo di integrità via e-mail al superutente del sistema.
Suggerimento
Potrebbe essere necessario utilizzare un cron job.