linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] Tripwire - automazione

Luca Coianiz luca a coianiz.it
Dom 22 Feb 2015 16:52:17 UTC
     Salve a tutti,

  sto tentando di automatizzare Tripwire in modo tale che, settimanalmente, mi faccia una scansione del sistema, mi dia (nel caso) un report in mail dei "delta" trovati, e poi aggiorni il suo DB in modo tale da non inviarmi, la settimana successiva, le stesse segnalazioni unite a quelle nuove.
  Ho fatto un tot di ricerche, in rete, e mi pare d'aver capito che un intervento manuale sia comunque "quasi richiesto", nel senso: sia nel caso di aggiornamento globale (init) del DB delle firme (che preferirei evitare, per abbassare lo stress inutile dei dischi), sia nel caso di update del DB (preferibile), Tripwire comunque richiede l'inserimento di una password (quella che root ha definito come local key).
  Questo ovviamente rende le cose non automatizzabili (ed ho letto il commento di un gestore di grossi sistemi, che non era molto contento della cosa).

  Il mio stato attuale:

- ho un cronjob settimanale che esegue la scansione del sistema, domenica notte, e nel caso di positivi manda una mail a root
- sempre nel caso di positivi (quindi non tutte le volte) viene anche lasciato un Report in /var/lib/tripwire/report/<hostname>-yyyymmdd-hhmmss.twr
- per tenere aggiornato il sistema almeno sugli aspetti critici (poi forse estenderò la cosa a tutto quanto), uso unattended-upgrades, quindi è facile che, in seguito ad updates di sicurezza, Tripwire mi trovi dei positivi: per verificare se sono voluti mi basta controllare il log di upgrades

  Per dire, uso anche RootKitHunter (rkhunter) ma questo almeno ha la funzione di aggiornamento del DB senza la richiesta della password: in questo modo posso avere il delta giornaliero senza che sia "ad accumulo finchè non ci metto le mani".

  Su Tripwire ho visto come posso scoprire se la scansione ha trovato positivi: i seguenti comandi possono esser dati da console, a mo di demo, ma anche, ovviamente, inseriti in uno script eseguito da cron

export RPATH=/var/lib/tripwire/report/
export RNAME=$RPATH$(ls -1 $RPATH | tail -n 1)
[ $(date --date='yesterday' '+%Y%m%d') = $(date --date="$(stat -t -c %y $RNAME)" '+%Y%m%d') ] && echo true

  Quindi posso sapere SE richiedere un update del DB, martedì mattina (anche se l'update DB non è un job pesante lo faccio girare verso le 7AM comunque ma, ad ogni modo, il check lo posso anche fare direttamente di lunedì con "today" e poi aggiornare)

tripwire -m u -s -r $RNAME -a -Z low

  Rimane il problema della password: alle 7/8 di mattina preferirei dormire e/o fare altro che non essere lì a dar la password a Tripwire. :D

  Un modo, che mi pare "sporco", consiste nel memorizzare la password (in chiaro!!!) in un file tipo /root/.tripwire/mypsw (nota che è la password di Tripwire, non quella di root) e poi, credo

tripwire -m u -s -r $RNAME -a -Z low -P $(cat /root/.tripwire/mypsw)

  Prima di scegliere la strada sporca, quindi, torno alla domanda: qualcuno ha trovato un sistema più pulito per effettuare l'update senza dover lasciare in giro password in chiaro?

  Grazie per l'attenzione,

     LC


Maggiori informazioni sulla lista Lug