La sicurezza del sistema è un compito obbligatorio per qualsiasi amministratore. Poiché è quasi impossibile garantire che il sistema non venga compromesso, è molto importante eseguire controlli regolarmente (ad esempio usando cron) per assicurarsi che sia – il sistema – ancora sotto il proprio controllo. Ed è qui che entra in gioco AIDE, l’Advanced Intrusion Detection Environment.

Perché usare AIDE

Un semplice controllo in grado di rilevare modifiche indesiderate può essere fatto tramite RPM. Il gestore di pacchetti ha una funzione di verifica integrata che controlla tutti i file gestiti nel sistema per vedere se sono state effettuate delle modifiche. Per verificare i file eseguire il comando rpm -Va. Tuttavia, questo comando mostrerà anche le modifiche nei file di configurazione e sarà necessario creare alcuni filtri per rilevare importanti cambiamenti.

Un ulteriore problema riguardo all’usare RPM per tale scopo è che un utente malintenzionato intelligente sarà in grado di modificare l’rpm in modo da nascondere eventuali modifiche che potrebbero essere state apportate da un rootkit. Un rootkit è un programma che consente a un utente malintenzionato di mascherare la sua intrusione e ottenere privilegi da root. Per risolvere questo problema è necessario implementare un controllo secondario che può anche essere eseguito in modo completamente indipendente dal sistema installato.

Installazione AIDE

AIDE non è installato di default su SUSE Linux Enterprise Server. Per installare AIDE utilizzare il software di installazione Yast o eseguire il seguente commando da root:

# zypper install aide

Esempi di configurazione AIDE

Per comunicare a AIDE (Advanced Intrusion Detection Environment) quali attributi di quali file devono essere controllati, utilizzare il file di configurazione /etc/aide.conf. Questo file deve in alcuni casi venire modificato per rispondere ai requisiti della configurazione in uso. La prima sezione gestisce i parametri generali come la posizione del database di AIDE. Le configurazioni locali più rilevanti sono le regole personalizzate e le sezioni Directory e File.

Quello che segue è un esempio di una tipica regola:

Binlib	= p+i+n+u+g+s+b+m+c+md5+sha1

Dopo aver definito la variabile Binlib, le rispettive caselle di controllo vengono utilizzate nella sezione file.

Lista delle opzioni più importanti:

Opzione Descrizione
p Controlla i permessi di file o cartelle selezionate.
i Fa un controllo del numero inode. Ogni file ha un unico numero inode che non dovrebbe cambiare.
n Controlla quanti links puntano a un file.
u Controlla se il proprietario di un file è cambiato.
g Controlla se il gruppo di un file è cambiato.
s Controlla se le dimensioni di un file sono cambiate.
b Controlla se il “block count” usato dal file è cambiato.
m Controlla se la data di modifica (mtime) di un file è cambiata.
c Controlla se la data di accesso (atime) di un file è cambiata.

Quello che segue è un esempio di configurazione in cui AIDE controlla ogni file nella cartella /sbin con le opzioni definite in Binlib omettendo pero dal controllo la cartella /sbin/conf.d/.

/sbin	Binlib
!/sbin/conf.d 

Creare un database AIDE

1. Editare il file di configurazione di AIDE (/etc/aide.conf) e apportare delle modifiche se necessario. Per ulteriori informazioni e una lista completa di opzioni dare un occhiata al manuale AIDE: /usr/share/doc/packages/aide/manual.html.
2. Controllare se le modifiche apportate al file di configurazione di AIDE sono corrette con il seguente comando:

# aide --config-check

Se ci sono degli errori di sintassi o altro nel file di configurazione si riceverà un messaggio di errore del genere:

aide --config-check 35:syntax error:!
35:Error while reading configuration:! Configuration error

3. Inizializzare il database di AIDE con il seguente comando:

# aide -i

4. Copiare il database (/var/lib/aide/aide.db.new) in un posto sicuro come un CD/DVD, un Server remoto o un USB stick. Importante: Questo passo è importante per assicurarsi che il database AIDE non venga compromesso. È consigliato di salvare una copia del database su un CD/DVD – in modo che può venire scritto solo una volta e non più venire modificato – per evitare che il database di AIDE venga modificato. Non lasciare il database sul computer che si vuole monitorare.

Effettuare un controllo locale con AIDE

1. Rinominare il database di AIDE con il seguente comando:

# mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Dopo ogni cambiamento di configurazione bisogna inizializzare nuovamente il database e rinominarlo come sopra. È consigliato di fare un backup del database.
2. Avviare un controllo del sistema con il seguente comando:

# aide --check
#

Se il comando viene eseguito senza dare un output vuole dire che è tutto a posto. Se invece AIDE rileva dei cambiamenti mostra un sommario vedi esempio sottostante:

# aide --check
AIDE found differences between database and filesystem!!

Summary:
  Total number of files:        1992
  Added files:                  0
  Removed files:                0
  Changed files:                1
#

Per ottenere più informazioni aggiungere -V.

# aide --check -V
AIDE found differences between database and filesystem!!
Start timestamp: 2018-02-18 15:14:10

Summary:
  Total number of files:        1992
  Added files:                  0
  Removed files:                0
  Changed files:                1


---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /etc/passwd

--------------------------------------------------
Detailed information about changes:
---------------------------------------------------


File: /etc/passwd
  Mtime    : 2018-02-18 15:11:02              , 2018-02-18 15:11:47
  Ctime    : 2018-02-18 15:11:02              , 2018-02-18 15:11:47
#

Fonte: Security Guide – SUSE Linux Enterprise Server 12 SP3