06/16,2008
Sha1 per controllare la modifica di porzioni del FS
Se avete una cartella contenente dei documenti che non devono essere modificati e volete verificare se qualcuno o qualcosa li ha compromessi senza troppa fatica come potete fare? Semplice. Per iniziale è necessario avere un programma che calcoli un hash su tutti i files che volete tenere sott'occhio, ad esempio sha1sum e poi uno strumento per sappia verificare se qualcosa è cambiato.
Prima creiamo ricorsivamente per ogni file contenuto nella direcroty voluta una lista (hash_list.txt) contenente il valore di Hash relativo a ciascun file.
Ad esempio supponiamo di avere una directory che si chiama prova e contiene 3 files di testo.
find ./prova -type f -exec sha1sum {} \; > hash_list.txtA questo punto hash_list.txt conterrà un elenco simile a questo:
472cd04734d04e6ab4848c2411b2e9a77e04cdeb ./prova/uno.txt
cc18f320a79d1835f9d6d05d7901775f4bd5bb50 ./prova/due.txt
3aad778da301c2a976a980a710e12b29b4d16081 ./prova/tre.txt
A questo punto possiamo salvarci la lista ed eventualmente usarla successivamente per verificare se qualcosa è cambiato.
Per i più paranoici possaimo anche firmare digitalmente la lista degli hash con GnuPg semplicemente facendo:
gpg -sa hash_list.txt
Per verificare se ci sono stati dei file nella directory prova che sono cambiati è sufficiente ripristinare la lista nela posizione in cui è stato creato ed eseguire il comando di verifica:
sha1sum -c hash_list.txt
Se tutto sarò andato a buon fine vedrete un output del tipo:
./prova/uno.txt: OK
./prova/due.txt: OK
./prova/tre.txt: OK
Se invece qualche file è stato modificato anche solo minimamente avremo un output del tipo:
./prova/uno.txt: FAILED
./prova/due.txt: OK
./prova/tre.txt: OK
sha1sum: WARNING: 1 of 3 computed checksums did NOT match
In questo caso vediamo che il contenuto del file uno.txt è cambiato e quindi l'hash associato a quel file ora ha un altro valore, diverso da quello calcolato originariamente.
Se la lista era stata firmata gon GnuPg è necessario prima estrarla con il comando gpg -d hash_lista.sig





Che articolone!
ahahahahhah