Integrit: file verification system: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (verificata)
 
(14 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
== Introduzione ==
[http://integrit.sourceforge.net/ Integrit] è un "file verification system": è assimilabile alla famiglia degli [[Intrusion Detection System]] o '''IDS''' e ha la funzione di verificare che determinati file non subiscano modifiche.


=Introduzione=
Questi controlli sull'integrità dei file hanno molti vantaggi:
Il Wiimote e' un controller prodotto dalla Nintendo usato come controller per la console Wii.
* non sono pesanti: infatti vengono eseguiti prevalentemente di notte e richiedono pochi minuti
E' possibile utilizzarlo per controllare numerose applicazioni nell'ambiente Linux, questa guida e una descrizione pratica del suo utilizzo e
* sono utili: un aggressore che vuole nascondere dei file, accessi o servizi potrebbe modificare file come <code>netstat</code>, <code>last</code>, <code>w</code>, <code>ls</code>...
di come sfruttare la libreria [http://abstrakraft.org/cwiid/ Cwiid ] per il suo uso all'interno di una applicazione in C o C++.
* si affiancano a [[Intrusion Detection System|IDS]] di rete e software come [[rkhunter]]


=Installazione=
Ovviamente non si tratta della soluzione di tutti i mali, in quanto potrebbe essere possibile che l'aggressore abbia modificato anche l'eseguibile di <code>integrit</code>, però un controllo in più non fa mai male!
Ci sono varie librerie a disposizione, il sito di riferimento e' sicuramente http://www.wiili.org/, per questa mini-guida si utilizzera'
la libreria Cwiid che e' la piu' completa e testata.


==Configurazione del sistema==
== Installazione ==
Per poter utilizzare il Wiimote sotto Linux e' necessario che sia attivo il modulo del kernel relativo al usbhid, in Ubuntu digitare
L'installazione è molto semplice, con [[privilegi di amministrazione]]:
modprobe usbhid
<pre>
# apt install integrit
</pre>


altrimenti [[Debian Kernel Howto |Ricompilare il kernel]] e attivarne il modulo.
== Configurazione ==
I file di configurazione si trovano in <code>/etc/integrit</code>. Dopo l'installazione sono presenti i seguenti file:
; <code>integrit.conf</code> : un template di file di configurazione (infatti è tutto commentato, e quindi <code>integrit</code> '''non''' effettuerà alcuna azione se non configurato!), lo utilizzeremo in seguito come punto di partenza;
; <code>integrit.debian.conf</code> : il file di configurazione utilizzato dal [[cron]] di Debian.


==Pacchetti necessari==
=== Integrit ===
Installare i seguenti pacchetti con il nostro amato apt-get:
Il file di configurazione di integrit è semplice ed è composto dalle seguenti sezioni (inizialmente commentate):
apt-get install autoconf awk, bison, flex, bluez-utils bluez-hcidump
; root : la directory di partenza (normalmente <code>/</code>)
apt-get install hcitool autotools-dev libbluetooth2-dev libgtk2.0-dev flex bison libcwiid1 libcwiid1-dev
; know : il [[path]] per il database contenente lo stato ''conosciuto'' del sistema (default <code>/var/lib/integrit/known.cdb</code>)
; current : il path del database usato per effettuare il confronto tra lo stato ''conosciuto'' e quello ''attuale'' (default <code>/var/lib/integrit/current.cdb</code>)


Ora lanciamo hcitool scan premendo contemporaneamente i tasti 1 e 2
seguito da un elenco di file da ignorare.
j3no@kropotkin:~$ hcitool  scan
Scanning ...
        00:19:1D:6B:3D:A3      Nintendo RVL-CNT-01


Se l'operazione riesce il sistema e' pronto per essere utilizzato
La sintassi dell'elenco è la seguente:
<pre>
[action]/directory [controlli]
</pre>


=Utilizzo della libreria Cwiid=
dove:
A disposizione avrete dei comandi che vi permetteranno di utilizzare il vostro controller:
; action : è facoltativa, e rappresenta l'azione da eseguire. L'azione di default è di esplorare la directory e tutto il suo contenuto. Le alternative sono:
*wminput: permette di utilizzare il wiimote come un mouse
: <code>!</code> : l'operatore di negazione: <code>!/etc</code> indica di non controllare il contenuto della directory <code>/etc</code>;
*wmgui: e' un'interfaccia grafica per testare tutti gli eventi del controller
: <code>=</code> : indica di non esplorare ricorsivamente il contenuto della directory;
: <code>$</code> : permette di creare una regola che non va ad agire sulle sottodirectory ma solo sulla directory (ed i file contenuti) indicata
; /directory : indica il percorso su cui agire;
; [controlli] : permette di specificare i controlli da eseguire;
: <code>s</code> : [[checksum]];
: <code>i</code> : [[inode]];
: <code>p</code> : [[Filesystem: i permessi sui files|permessi]];
: <code>l</code> : numero di [[link]];
: <code>u</code> : [[UID]];
: <code>g</code> : [[GID]];
: <code>z</code> : la dimensione dei file (risulta essere un controllo ridondante se viene effettuato anche il controllo del checksum);
: <code>a</code> : la data di accesso;
: <code>m</code> : la data di modifica;
: <code>r</code> : reimposta la data di accesso (utilizzare con attenzione)
: le opzioni possono essere scritte in due modi: in minuscolo, il che indica che il controllo deve essere fatto, oppure in maiuscolo, per indicare che il controllo non deve essere effettuato.


==Esempio di implementazione in un programma C ==
È necessario decommentare le opzioni principali del file, personalizzandole se necessario, e aggiungere le altre azioni desiderate, per poter eseguire il comando. '''Non''' c'è infatti un'impostazione di default!
Un esempio lo si trova sul sito di cwiid http://abstrakraft.org/cwiid/browser/trunk/wmdemo/wmdemo.c?rev=179 oppure all'interno della directory con i
sorgenti del programma http://abstrakraft.org/cwiid/downloads/cwiid-0.6.00.tgz nella directory wmdemo.


In linea generale c'e' una struttura dati messa a disposizione dall'API (cwiid_state) che viene passata ad una chiamata (cwiid_get_state) la quale aggiorna la descrizione dello stato dei sensori presenti sul wiimote in quel momento.
=== Debian ===
Prima di far questo ci sara' una fase di connessione (cwiid_open) che chiedera' il BBSID, un codice identificativo che abbiamo precedentemente visto
Il file di configurazione <code>/etc/integrit/integrit.debian.conf</code> viene utilizzato dal cron presente in <code>/etc/cron.daily/integrit</code>.
durante la chiamata del comando "hcitool scan"


--[[Utente:J3no|J3no]] 10:00, 3 giu 2008 (CDT)
Il file di configurazione è composto da quattro variabili:
; <code>CONFIGS</code> : contiene l'elenco dei file di configurazione da far processare ad integrit. Dopo l'installazione è vuoto, quindi dovremo aggiungere quello che abbiamo precedentemente creato: <code>/etc/integrit/integrit.conf</code>;
; <code>EMAIL_RCPT</code> : l'indirizzo del destinatario di posta elettronica a cui inviare la mail di notifica (root va bene se sono stati correttamente modificati gli alias di posta, altrimenti potete tranquillamente inserire il vostro indirizzo);
; <code>EMAIL_SUBJ</code> : l'oggetto della mail che riceverete. Normalmente non è necessario effettuare modifiche;
; <code>ALWAYS_EMAIL</code> : ''true'' se si desidera ricevere una mail di notifica anche quando non vengono riscontrate anomalia, ''false'' altrimenti.
 
Una volta modificato il file di configurazione non ci resta che testare il tutto con un semplice
<pre>
# /etc/cron.daily/integrit
</pre>
magari impostando <code>ALWAYS_EMAIL</code> a ''true'' per effettuare un po' di [[debug]].
 
== Funzionamento ==
Il funzionamento è semplice: ogni volta che viene effettuato un update, viene creato il database '''current''' che raccoglie lo stato attuale del sistema. Ogni volta che viene effettuato un check, invece, viene confrontato il database di tipo '''current''' con il '''known''', in caso di discrepanze (ed in base alle regole definite nel file di configurazione) viene generato il report.
 
Una volta controllate le discrepanze e verificato che siano corrette (in caso di aggiornamento di un pacchetto, ad esempio) è necessario aggiornare il database '''know''' con un semplice:
<pre>
mv /var/lib/integrit/current.cdb /var/lib/integrit/known.cdb
</pre>
 
== Controllo manuale ==
In caso di problemi è possibile effettuare un controllo manuale richiamando lo script cron (<code>/etc/cron.daily/integrit</code>) oppure con un semplice:
<pre>
# integrit -cu -C /etc/integrit/integrit.conf
</pre>
 
== Approfondimenti ==
* Home Page del progetto: http://integrit.sourceforge.net/
* esempi di configurazione contenuti in <code>/usr/share/doc/integrit/examples/</code>
 
{{Autori
|Autore = [[Utente:MaXeR|MaXeR]]
}}
 
[[Categoria:Monitoraggio]]

Versione attuale delle 10:21, 28 set 2019

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Integrit è un "file verification system": è assimilabile alla famiglia degli Intrusion Detection System o IDS e ha la funzione di verificare che determinati file non subiscano modifiche.

Questi controlli sull'integrità dei file hanno molti vantaggi:

  • non sono pesanti: infatti vengono eseguiti prevalentemente di notte e richiedono pochi minuti
  • sono utili: un aggressore che vuole nascondere dei file, accessi o servizi potrebbe modificare file come netstat, last, w, ls...
  • si affiancano a IDS di rete e software come rkhunter

Ovviamente non si tratta della soluzione di tutti i mali, in quanto potrebbe essere possibile che l'aggressore abbia modificato anche l'eseguibile di integrit, però un controllo in più non fa mai male!

Installazione

L'installazione è molto semplice, con privilegi di amministrazione:

# apt install integrit

Configurazione

I file di configurazione si trovano in /etc/integrit. Dopo l'installazione sono presenti i seguenti file:

integrit.conf
un template di file di configurazione (infatti è tutto commentato, e quindi integrit non effettuerà alcuna azione se non configurato!), lo utilizzeremo in seguito come punto di partenza;
integrit.debian.conf
il file di configurazione utilizzato dal cron di Debian.

Integrit

Il file di configurazione di integrit è semplice ed è composto dalle seguenti sezioni (inizialmente commentate):

root
la directory di partenza (normalmente /)
know
il path per il database contenente lo stato conosciuto del sistema (default /var/lib/integrit/known.cdb)
current
il path del database usato per effettuare il confronto tra lo stato conosciuto e quello attuale (default /var/lib/integrit/current.cdb)

seguito da un elenco di file da ignorare.

La sintassi dell'elenco è la seguente:

[action]/directory [controlli]

dove:

action
è facoltativa, e rappresenta l'azione da eseguire. L'azione di default è di esplorare la directory e tutto il suo contenuto. Le alternative sono:
! : l'operatore di negazione: !/etc indica di non controllare il contenuto della directory /etc;
= : indica di non esplorare ricorsivamente il contenuto della directory;
$ : permette di creare una regola che non va ad agire sulle sottodirectory ma solo sulla directory (ed i file contenuti) indicata
/directory
indica il percorso su cui agire;
[controlli]
permette di specificare i controlli da eseguire;
s : checksum;
i : inode;
p : permessi;
l : numero di link;
u : UID;
g : GID;
z : la dimensione dei file (risulta essere un controllo ridondante se viene effettuato anche il controllo del checksum);
a : la data di accesso;
m : la data di modifica;
r : reimposta la data di accesso (utilizzare con attenzione)
le opzioni possono essere scritte in due modi: in minuscolo, il che indica che il controllo deve essere fatto, oppure in maiuscolo, per indicare che il controllo non deve essere effettuato.

È necessario decommentare le opzioni principali del file, personalizzandole se necessario, e aggiungere le altre azioni desiderate, per poter eseguire il comando. Non c'è infatti un'impostazione di default!

Debian

Il file di configurazione /etc/integrit/integrit.debian.conf viene utilizzato dal cron presente in /etc/cron.daily/integrit.

Il file di configurazione è composto da quattro variabili:

CONFIGS
contiene l'elenco dei file di configurazione da far processare ad integrit. Dopo l'installazione è vuoto, quindi dovremo aggiungere quello che abbiamo precedentemente creato: /etc/integrit/integrit.conf;
EMAIL_RCPT
l'indirizzo del destinatario di posta elettronica a cui inviare la mail di notifica (root va bene se sono stati correttamente modificati gli alias di posta, altrimenti potete tranquillamente inserire il vostro indirizzo);
EMAIL_SUBJ
l'oggetto della mail che riceverete. Normalmente non è necessario effettuare modifiche;
ALWAYS_EMAIL
true se si desidera ricevere una mail di notifica anche quando non vengono riscontrate anomalia, false altrimenti.

Una volta modificato il file di configurazione non ci resta che testare il tutto con un semplice

# /etc/cron.daily/integrit

magari impostando ALWAYS_EMAIL a true per effettuare un po' di debug.

Funzionamento

Il funzionamento è semplice: ogni volta che viene effettuato un update, viene creato il database current che raccoglie lo stato attuale del sistema. Ogni volta che viene effettuato un check, invece, viene confrontato il database di tipo current con il known, in caso di discrepanze (ed in base alle regole definite nel file di configurazione) viene generato il report.

Una volta controllate le discrepanze e verificato che siano corrette (in caso di aggiornamento di un pacchetto, ad esempio) è necessario aggiornare il database know con un semplice:

mv /var/lib/integrit/current.cdb /var/lib/integrit/known.cdb

Controllo manuale

In caso di problemi è possibile effettuare un controllo manuale richiamando lo script cron (/etc/cron.daily/integrit) oppure con un semplice:

# integrit -cu -C /etc/integrit/integrit.conf

Approfondimenti




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized