Una volta che il sistema è installato e configurato, a meno di aggiornamenti di sicurezza, la maggior parte dei file e directory rimangono statici, dati a parte. È allora interessante fare in modo che i file realmente non possano cambiare: ogni variazione inattesa dovrebbe perciò catturare la nostra attenzione. Questa sezione presenta alcuni strumenti che permettono di monitorare i file e di avvisare l'amministratore quando si verificano cambiamenti non previsti (o semplicemente di elencarli).
14.3.3.1. Controllo dei pacchetti: debsums
e i suoi limiti
debsums
è uno strumento interessante perché permette di rilevare quali file installati sono stati modificati (potenzialmente da un autore di un attacco), anche se questo dev'essere preso con le pinze. Primo, perché non tutti i pacchetti Debian forniscono le impronte digitali richieste da questo programma (quando esistono si trovano in
/var/lib/dpkg/info/pacchetto
.md5sums
).
Promemoria: l'impronta digitale è un valore, spesso numerico (anche se in notazione esadecimale), che contiene una specie di firma del contenuto di un file. Questa firma è calcolata con un algoritmo (MD5 oppure SHA1 sono gli esempi più diffusi) che garantisce con buona probabilità che anche il più piccolo cambiamento nel contenuto del file porti ad una variazione nell'impronta digitale; è conosciuto come «effetto valanga». Ciò permette di usare un'impronta numerica semplice per verificare se il contenuto di un file è stato alterato. Questi algoritmi non sono reversibili; in altre parole, per la maggior parte di questi, conoscere un'impronta digitale non permette di ricavarne il contenuto corrispondente. Recenti progressi matematici sembra abbiano però indebolito la sicurezza di questi principi, ma il loro uso finora non è stato messo in discussione, dal momento che sembra ancora piuttosto difficile creare contenuti differenti con la stessa impronta digitale.
Oltretutto, i file md5sums
vengono memorizzati nei dischi fissi; un autore minuzioso di un attacco perciò aggiornerà questi file in modo che contengano le nuove impronte per i file modificati.
Il primo inconveniente può essere evitato chiedendo a debsums
di basare i suoi controlli su un pacchetto .deb
invece di affidarsi al file md5sums
. Ma questo richiede di scaricare preventivamente i corrispondenti file .deb
:
#
apt-get --reinstall -d install `debsums -l`
[ ... ]
#
debsums -p /var/cache/apt/archives -g
È anche interessante notare che, nella configurazione predefinita, debsums
genera automaticamente i file md5sums
mancanti quando un pacchetto viene installato tramite APT.
Il secondo problema può essere evitato in maniera analoga: il controllo viene semplicemente basato su un file .deb
vergine. Poiché ciò implica di avere tutti i file .deb
dei pacchetti installati, ed essere sicuri della loro integrità, la soluzione più semplice è di appoggiarsi ad un mirror Debian. Questa operazione talvolta può essere lenta e noiosa, e non dovrebbe essere una tecnica proattiva da utilizzare sempre e in modo automatico.
#
apt-get --reinstall -d install `grep-status -e 'Status: install ok installed' -n -s Package`
[ ... ]
#
debsums -p /var/cache/apt/archives --generate=all
Da notare che questo esempio utilizza il comando grep-status
del pacchetto dctrl-tools, che non è installato in modo predefinito.
14.3.3.2. Monitorare i file: AIDE
Lo strumento AIDE (Advanced Intrusion Detection Environment) permette di verificare l'integrità dei file e rileva tutti i cambiamenti rispetto ad una immagine valida archiviata del sistema. Questa immagine viene memorizzata in un database (/var/lib/aide/aide.db
) contenente le informazioni significative di tutti i file del sistema (impronte digitali, permessi, data e ora e così via). Questo database viene generato inizialmente con aideinit
; esso viene poi utilizzato su base giornaliera (dallo script /etc/cron.daily/aide
) per verificare che non sia cambiato nulla di significativo. Quando viene rilevata una modifica, AIDE la elenca nei file di log (/var/log/aide/*.log
) e invia i risultati via email all'amministratore.
Sono presenti molte opzioni in /etc/default/aide
per modificare il comportamento del pacchetto aide. La configurazione vera e propria di AIDE viene memorizzata in /etc/aide/aide.conf
e /etc/aide/aide.conf.d/
(in realtà, questi file vengono utilizzati da update-aide.conf
per generare /var/lib/aide/aide.conf.autogenerated
). La configurazione indica quali proprietà di quali file devono essere controllate. Per esempio, il contenuto dei file di log cambia regolarmente, e tali cambiamenti possono essere ignorati fino a quando i permessi di questi file rimangono invariati, ma sia il contenuto che i permessi dei programmi eseguibili devono rimanere costanti. Anche se non molto complessa, la sintassi della configurazione non è del tutto intuitiva, ed è quindi consigliato leggere la pagina di manuale aide.conf(5).
Una nuova versione del database è generata giornalmente in /var/lib/aide/aide.db.new
; se tutte le variazioni raccolte sono legittime, viene usato per sostituire il database di riferimento.