[successivo] [precedente] [inizio] [fine] [indice generale] [licenze] [indice analitico] [tomo] [parte]


Capitolo 238.   AIDE

AIDE (1) è un altro programma per la verifica dell'integrità dei file attraverso il confronto con le informazioni accumulate precedentemente, segnalando le aggiunte, le rimozioni e le alterazioni di file e directory. Si tratta di uno strumento prezioso per scoprire gli utilizzi impropri del sistema comprendendo l'azione di cavalli di Troia e virus.

Il funzionamento di AIDE è controllato da un file di configurazione, che generalmente è bene non lasciare nel file system per motivi di sicurezza, inserendolo solo nel momento del bisogno. Tale file di configurazione verrà identificato qui con il nome aide.conf, senza stabilire una collocazione ben precisa.

Nello stesso modo, anche il file contenente le informazioni accumulate riguardo allo stato del file system va protetto, preferibilmente togliendolo dal file system stesso, in modo da garantire che non possa essere letto e alterato.

AIDE può utilizzare diversi algoritmi crittografici per generare i codici di controllo necessari per le sue verifiche. Per questa ragione, a causa delle norme che impediscono l'esportazione di algoritmi del genere, è improbabile che possa trovarsi all'interno delle distribuzioni di origine USA.

238.1   Configurazione di AIDE: aide.conf

La configurazione di AIDE è simile a quella di Tripwire, con l'aggiunta di direttive nuove. In generale, a parte i commenti che si indicano preceduti dal simbolo # e le righe che non contengono direttive, si distinguono tre gruppi:

In generale, sono indispensabili solo le direttive di selezione che assomigliano molto alle direttive corrispondenti di Tripwire. Le macroistruzioni servono per scandire il file di configurazione in modo differente in base a condizioni determinate, come fa un preprocessore di un linguaggio di programmazione. Anche questa funzionalità è analoga a qualla di Tripwire e qui non viene descritta; eventualmente si può consultare la pagina di manuale aide.conf(5).

Le direttive di configurazione hanno la forma seguente:

nome = valore

In particolare, quando il valore assegnato si riferisce a un file, viene usata una forma particolare descritta nella tabella 238.1. La descrizione delle direttive di configurazione appare invece nella tabella 238.2.

Forma Descrizione
stdout Dati emessi attraverso lo standard output.
stderr Dati emessi attraverso lo standard error.
stdin Dati letti dallo standard input.
file:// fileSi fa riferimento al file indicato.
fd: nSi fa riferimento al descrittore di file  n .

Tabella 238.1. Modalità di indicazione dei file nelle direttive di configurazione.

Nome Predefinito Descrizione
database file://./aide.db File delle informazioni accumulate in precedenza.
database_out file://./aide.db.new File delle informazioni da accumulare.
report_url stdout File usato per emettere le informazioni sull'elaborazione.

Tabella 238.2. Direttive di configurazione principali.

Una direttiva di configurazione che fa riferimento a un nome non conosciuto, serve a definire un gruppo. Ciò può essere utile successivamente nelle direttive di selezione, dove si può fare riferimento a questi gruppi senza dover ripetere sempre la stessa espressione di selezione. Questo verrà mostrato meglio successivamente.

Le direttive di selezione hanno il formato seguente:

{/|!|=}voce   espressione

Il primo carattere definisce il modo in cui va interpretata la direttiva:

Ciò che segue il primo carattere è inteso come un'espressione regolare che descrive uno o più percorsi di file e directory. All'interno di queste espressioni regolari, la barra obliqua normale, /, ha significato letterale.

Il confronto attraverso espressioni regolari avviene se tale gestione è stata inclusa in fase di compilazione, pertanto ciò potrebbe anche mancare, funzionando solo un confronto letterale.

L'espressione che segue rappresenta il tipo di controllo da attuare, attraverso l'indicazione di uno o più gruppi. Questi «gruppi» sono parole chiave che definiscono in breve ciò che deve essere verificato; queste parole chiave possono essere unite assieme inserendo il simbolo +, ma può essere usato anche il simbolo - per sottrarre delle verifiche incluse precedentemente. La tabella 238.3 elenca i gruppi predefiniti e di seguito vengono mostrati alcuni esempi elementari:

# Include la directory / e tutte le directory successive
/ p+i+n+u+g+s+m+c+md5

# Esclude la directory /dev/
!/dev

# Analizza esclusivamente la directory /tmp/ senza il suo contenuto
=/tmp
Simbolo Descrizione
p Verifica dei bit dei permessi.
i Verifica del numero di inode.
n Numero di collegamenti fisici.
u Utente proprietario.
g Gruppo proprietario.
s Dimensione.
b Conteggio dei blocchi.
m Data di modifica.
a Data di accesso.
c Data di modifica dell'inode.
S Incremento di dimensione.
md5 Firma MD5.
sha1 Firma SHA1.
rmd160 Firma RMD160.
tiger Firma Tiger.
crc32 Firma CRC-32 (se incluso in fase di compilazione).
haval Firma Haval (se incluso in fase di compilazione).
gost Firma Gost (se incluso in fase di compilazione).
R Equivalente a p+i+n+u+g+s+m+c+md5.
L Equivalente a p+i+n+u+g.
E Gruppo vuoto.
> File delle registrazioni p+i+n+u+g+S.

Tabella 238.3. Elenco dei gruppi predefiniti.

In precedenza è stata descritta la possibilità di definire dei gruppi aggiuntivi nell'ambito delle direttive di configurazione. La sintassi di questa direttiva particolare è la seguente:

nome_gruppo  =  gruppo_esistente[{+|-}gruppo_esistente]...

In pratica, il segno + aggiunge il controllo del gruppo che precede, mentre il segno - sottrae il controllo del gruppo che precede. A titolo di esempio, viene mostrata la definizione di un gruppo personalizzato, in cui si utilizza il gruppo predefinito R senza la verifica della firma MD5:

Personale = R-md5

Successivamente si può utilizzare esattamente come i gruppi predefiniti:

/usr Personale

È da osservare che i nomi usati nelle direttive di configurazione sono sensibili alla differenza tra maiuscole e minuscole.

Esempi
/etc p+i+n+u+g+s+m+c+md5

Verifica la directory /etc/ e tutto il suo contenuto in modo ricorsivo, verificando: i bit dei permessi, i numeri di inode, i riferimenti agli inode, i numeri UID e GID, le date di modifica, le date di creazione degli inode e la firma MD5.

/etc R

Esattamente come nell'esempio precedente, dal momento che il gruppo riassuntivo R rappresenta le stesse cose.

/etc R+sha1

Come nell'esempio precedente, aggiungendo il controllo della firma SHA1.

!/home/pippo

Esclude qualunque verifica a partire dal percorso /home/pippo/.

=/tmp R

Verifica esclusivamente la directory /tmp/, senza analizzarne il contenuto.

238.2   Utilizzo

aide è l'eseguibile che svolge il compito di scansione e verifica dell'integrità dei file e delle directory specificati nel file di configurazione. Si distinguono tre situazioni: la creazione del file contenente le informazioni sulla situazione attuale di ciò che si vuole tenere sotto controllo; l'aggiornamento di queste informazioni in presenza di modifiche volontarie da parte dell'amministratore; la verifica di integrità, cioè il confronto di queste informazioni con la situazione attuale.

aide [opzioni]

A seconda di come viene compilato il programma, si stabilisce la collocazione predefinita e il nome del file di configurazione e del file di registrazione delle informazioni. In generale, conviene utilizzare le opzioni necessarie a specificare tali file, quando queste sono disponibili.

È da osservare che AIDE distingue nettamente tra il file contenente le informazioni accumulate in precedenza e quello che viene generato dall'elaborazione. In generale si fa riferimento a aide.db per le informazioni originali e aide.db.new per quelle che vengono generate nuovamente. Una volta generato un file nuovo, è compito dell'amministratore cambiargli nome o spostarlo opportunamente. Naturalmente, questa considerazione vale anche quando si usa l'opzione --update per aggiornare un elenco vecchio, nel qual caso AIDE usa entrambi i file: uno in lettura e l'altro in scrittura.

Alcune opzioni
--init

Genera il file delle informazioni da conservare, in base alle specifiche della configurazione.

--update

Aggiorna il file delle informazioni (legge quello vecchio e ne genera uno nuovo).

--check

Verifica l'integrità dei file secondo le informazioni accumulate in precedenza, informando l'utente di conseguenza.

--config= file_di_configurazione

Consente di indicare esplicitamente il file di configurazione da utilizzare.

Esempi

aide --init --config=/root/aide.conf

Genera il file di raccolta delle informazioni, utilizzando un nome predefinito in base alla compilazione dei sorgenti, oppure in base alla configurazione, che in questo caso viene indicato espressamente come /root/aide.conf.

aide --update --config=/root/aide.conf

Genera un nuovo file di raccolta delle informazioni aggiornato. Il file di configurazione utilizzato è /root/aide.conf.

aide --check --config=/root/aide.conf

Esegue una verifica di integrità, utilizzando il file di configurazione /root/aide.conf.

Appunti di informatica libera 2001.01.30 --- Copyright © 2000-2001 Daniele Giacomini --  daniele @ swlibero.org

1) AIDE   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome aide.html

[successivo] [precedente] [inizio] [fine] [indice generale] [licenze] [indice analitico] [tomo] [parte]