Cifrare una Directory con EncFS

Cifrare il contenuto di una Directory da occhi indiscreti non e’ mai stato cosi’ facile come con EncFS.

EncFS è uno speciale filsystem in userspace che consente di cifrare tutto il contenuto di una directory senza dover ricorrere all’uso di un dispositivo apposito. Pertanto il contenuto potrà essere memorizzato direttamente in un’altra directory, senza la necessità di dover creare un filesystem su un dispositivo cifrato. I primo passo è installare il programma con tutte le sue dipendenze con:

sudo apt-get install encfs

Una volta installato il programma la creazione di una directory cifrata è molto semplice, sarà sufficiente usare lo stesso specificando come primo argomento la directory che conterrà i contenuti cifrati e come secondo argomento quella in cui compariranno i contenuti in chiaro quindi creiamo in un PATH a nostro piacere due directory assegnate al nostro utente e con  permessi 700, dopodiche’ il comando da usare sara’ molto semplice cioè qualcosa del tipo:

mkdir ~/.protetta ~/protetta
chmod 700 ~/.protetta ~/protetta
encfs ~/.protetta ~/protetta
Creazione nuovo volume cifrato.
Scegliere tra una delle seguenti opzioni:
 digitare "x" per la modalità di configurazione per esperti,
 digitare "p" per la modalità paranoica preconfigurata.
 qualsiasi altra cosa o una riga vuota selezionerà la modalità standard.

la scelta della modalità standard è sufficiente per tutti gli usi normali, per cui una volta premuto invio verrà richiesta due volte l’immissione della password di cifratura dei dati, e montato automaticamente nella directory di destinazione. I file eventualmente già presenti nella directory cifrata non verranno toccati, ma verranno creati al suo interno file e directory cifrati il cui contenuto in chiaro apparirà soltanto nella directory cifrata.

Una volta completate le operazioni, per inibire l’accesso alla directory con i contenuti in chiaro sarà sufficiente smontarla con fusemount, con un comando del tipo:

fusermount -u ~/protetta

In seguito si potrà riaccedere al contenuto in chiaro riutilizzando encfs, esattamente con lo stesso comando visto in precedenza. In questo caso però non verranno fatte le domande relative alla creazione ma verrà semplicemente richiesta la password di decifrazione.

Su encfs è possibile anche indicare un tempo di inattività, decorso il quale la directory verrà automaticamente smontata, ad esempio con:

encfs -i 5 ~/.protetta_enfs ~/protetta

Smonterà la directory dopo 5 minuti di inattività se non risultano files aperti.

Infine è possibile cambiare la password per l’accesso alla directory con:

encfsctl passwd ~/.protetta_encfs

Ripristinare file cancellati

Tutti gli strumenti visti nei precedenti articoli vengono utilizzati principalmente per recuperare files da dischi rovinati o prossimi alla rottura. Non sempre la causa dei nostri mal di testa e’ imputabile ad un guasto hardware ma spesso siamo noi stessi causa del nostro male. Un utente goffo, distratto o alle prime armi puo’ causarsi da solo la perdita di dati; che cosa fare in questi casi ?? Bisogna prima di tutto capire che quando viene cancellato un file  esso non viene eliminato fisicamente, piuttosto il filesystem lo “marca” come cancellato rendendo cosi’ disponibile alla scrittura di altri file la porzione di disco che questo occupava. Questo vuol dire che finche’ un’applicazione non usera’ quella porzione di disco il file sara’ comunque presente e’ recuperabile, per questo come gia’ accennato in un precedente articolo, se vi accorgete di aver cancellato qualcosa e’ importante ridurre al minimo possibile l’utilizzo del sistema fino a che non si sara’ tentato il recupero dei dati cancellati. Probabilmente , ad oggi, il tool OpenSource piu’ completo per questo genere di attivita’ e’ senz’altro PhotoRec , questo tool e’ in grado di andare a caccia dei formati di file immagine piu’ comuni ed inoltre e’ in grado di ripristinare file in molti altri formati quali : odf, pdf, 7zip, zip, tar, rpm, deb… ed anche dischi virtuali. Questa utility e’ in grado di funzionare su ogni tipologia di disco, inclusi hard disk, chiavette usb ed anche schede sdd. PhotoRec e’ anche in grado di recuperare file da partizioni che sono state formattate. Aggiungo che per quanto sia un tool da riga di comando PhotoRec  suddivide le operazioni di salvataggio in piccoli passi, proprio come farebbe un wizard grafico. Per avviare PhotoRec bastera’ il semplice comando :

  • sudo photorec

Appena avviato photorec  vi chiedera’, nel seguente ordine, queste informazioni :

  • selezionare il disco e la partizione che ospita i file cancellati # [No partition] per indicarle tutte
  • selezionare il tipo di filesystem
  • selezionare “Search” per recuperare tutti i file oppure “Opt” per selezionare le tipologie
  • selezionare i formati dei file che c’interessa recuperare dall’elenco proposto
  • selezionare la Directory in cui salvare i file recuperati

Il tempo impiegato dipendera’ ovviamente dalla grandezza della partizione selezionata e dalla quantita’ di file da recuperare. Una volta ultima l’operazione troverete nella cartella indicata in fase di avvio una quantita’ di file con nomi strani, questo perche’ PhotoRec nomina i file a suo modo man mano che li trova e lascia all’utente il compito di riordinarli.

** Leggi anche ( ” estraiamo i nostri dati ” )

Estraiamo i nostri dati

Ora siamo i felici possessori di una o piu’ immagini su cui abbiamo salvato i nostri preziosi files ma cosa fare adesso per  poterli riutilizzare ???

La prima cosa da fare e’ quella di montare l’immagine su di un’altro PC Linux oppure tramite l’uso della LiveCD rimanere sul PC da cui abbiamo generato il tutto e montare l’immagine su di un supporto esterno (disco, chiavetta ecc..) su cui spostare man mano i dati recuperati. Quest’operazione si puo’ facilmente effettuare tramite il comando :

sudo mount -o loop /media/drive-di-backup/sdd1.image /media/recovery

Ora possiamo dare un’occhiata dentro /media/recovery dentro cui dovreste poter vedere tutti i dati precedentemente salvati ed esportarli/copiarli su di un nuovo supporto o PC. Se invece il comando precedente non dovesse aver dato i suoi frutti bisognera’ passare alle maniere piu’ forti chiamando in causa dei tool piu’ specifici come Foremost Scalpel. Entrambi sono delle utility che, e’ il caso di dire, “vanno a caccia dei files” utilizzando vari formati di header e footer . Foremost e’ il piu’ semplice dei due da usare ma spesso e’ anche il meno efficiente :

sudo foremost -t all -i /media/drive-di-backup/sdd1.image -v -o rescued-file

in pratica le opzioni utilizzate sono le seguenti : -t all = vogliamo tutti i tipi di files ( nel caso volessimo recuperare soltanto alcuni formati potremo modificare questa opzione nel seguente modo : -t jpg,png,tiff ) ; -i <immagine.image> = la nostra immagine di backup ; -v = verbose mode (per vedere cosa viene fatto) ; -o rescued-file = nome della cartella che foremost creera’ per metterci tutti i files che riuscira’ a recuperare. Sul manuale di foremost dichiarano che in caso di filesystem di tipo ext2 bisognera’ aggiungere l’opzione -d.

Se foremost non dovesse aver soddisfatto le vostre aspettative possiamo far scendere in campo Scalpel il quale pero’ prima di essere utilizzato ha bisogno di alcune modifiche nel suo file di configurazione [ /etc/scalpel/scalpel.conf ] all’interno del quale andranno decommentati tutti i formati di file che vogliamo far recuperare. Una volta terminata questa fase preparatoria potremo utilizzare scalpel nel seguente modo :

sudo scalpel /media/drive-di-backup/sdd1.image -o rescued-file

 

** Leggi anche  ( ” copia bit a bit ” )

Fail2ban – fuori i curiosi

Spesso capita, persino in ufficio, di dover proteggere la propria privacy da curiosi o male intenzionati e fail2ban ha sempre svolto egregiamente il suo compito di guardiano del castello, infatti si tratta di un programma che tiene sotto monitoraggio alcuni file di log e, quando rileva dei tentativi ripetuti & falliti (configurabili) di accedere ad un determinato servizio provvedera’ al blocco dell’host incriminato, a livello d’indirizzo IP, aggiungendolo alle regole di firewall di IPTABLES.

Bene, installiamolo ! :  /$ sudo apt-get install fail2ban

Appena installato il pacchetto saranno gia’ in esecuzione alcune regole abilitate di default come ad esempio quella per bloccare gli IP che falliscono gli accessi SSH ecc….

Fail2ban viene installato in modalita’ demone, sara’ quindi possibile gestirne lo start & stop tramite i comandi

/etc/init.d/fail2ban  start/stop      oppure       service fail2ban  start/stop

I file di configurazione si trovano in /etc/fail2ban, in particolare prestiamo attenzione al file “jail.conf” il quale contiene le configurazioni di base del pacchetto e suo relativo uso. Dal manuale viene consigliato di non modificare i file di conf originari ma di creare una copia locale tramite (es.) : /etc/fail2ban$ sudo cp jail.conf jail.local 

Andremo ora ad impostare all’interno di quest’ultimo file le regole di filtraggio per i vari servizi di nostro interesse.

Ogni regola e’ indicata dal nome della regola, scritta tra parentesi quadre, a cui fanno seguito i parametri che vogliamo impostare, seguiti da un simbolo  ” = ” e dal valore che vogliamo assegnare alla regola, facciamo un esempio lavorando su alcuni parametri di Default e sulla regola di filtraggio del servizio SSH :

[DEFAULT]
ignoreip = 127.0.0.1 192.168.xx.xx
bantime = 600
maxretry = 3
backend = polling
destemail = root@localhost
action = iptables[name=%(__name__)s, port=%(port)s]

…in questo esempio stiamo dicendo al programma di non considerare nei filtri le richieste di autenticazione errate provenienti dall’IP locale (127.0.0.1) e da un IP fidato della nostra rete (192.168.xx.xx). Il secondo parametro imposta il tempo di “ban” ossia la quantita’ di tempo (espressa in secondi) per cui vogliamo che fail2ban tenga nelle regole di Iptables

l’IP da ‘bannare’ / bloccare [600 secondi = 10 minuti], mentre il parametro ‘maxretry’ indica quanti tentativi errati di connessione lasciamo attivi prima di bannare l’IP, le ultime tre righe lavorano insieme, in pratica il polling e’ il metodo di gestione degli allarmi a cui, una volta scattato l’allarme, viene fatta mandare una mail al destinatario sotto indicato.

Passiamo adesso alla sezione del servizio SSH :

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

i parametri in questo caso sono presto spiegati, la prima riga dice di abilitare il controllo su questo servizio, indicando come porta da monitorare quella del servizio SSH (che come standard ascolta sulla 22) e come demone associa SSHD, indicando il percorso contenente il file di log da cui leggere per verificare i tentativi di accesso; l’ultimo parametro indica il valore del numero di accessi negati da trovare nel file di log prima che l’IP venga bloccato dalle regole di firewall Iptables.

Al termine della configurazione delle regole di nostro interesse sara’ necessario riavviare il servizio cosi’ come indicato precedentemente e magari provare ad accedere da qualche altro PC, sbagliando volontariamente la password di accesso in ssh cosi da poter sperimentare l’effettivo funzionamento dei filtri.

Per verificare il funzionamento dei filtri su di un servizio e’ anche possibile utilizzare il comando del client fail2ban:

  • sudo fail2ban-client status ssh 

dalla versione 8.8 in poi e’ anche possibile “unbannare” ossia togliere dall’esclusione degli accessi un IP precedentemente bloccato tramite il comando : sudo fail2ban-client set ssh unbanip <ip da sbloccare>

Copia Bit a Bit

Con l’uso di fsck dovremmo aver corretto diversi problemi sui nostri dischi ma qualche volta tutto cio’ non basta ed il problema potrebbe essere piu’ serio ed il disco hardware potrebbe essere li li per lasciarci.

Dischi morenti , con testine saltellanti, che contengono tutti i nostri preziosi dati non sono una bella cosa da vedere. Come spiegato nel primo articolo in questi casi la prima cosa da evitare e’ di andare a modificare qualunque file e questo puo’ intendere anche cercare di farne singole copie su di altri supporti, questo perche’ogni azione compiuta vi avvicinera’ sempre di piu’ al momento di fault del disco, complicando molto ogni futura azione, la cosa migliore quindi e’ quella di non sottoporre ad ulteriore stress il disco e di clonarlo immediatamente effettuando una sua immagine “bit to bit” , sara’ sempre possibile, con tutta calma, operare sulla copia per estrapolare e becappare i nostri preziosi dati. Normalmente per effettuare questo tipo di copie si usa il tool dd ma in questo caso, presupponendo, un imminente guasto/arresto del disco a causa di seri problemi non fara’ al nostro caso poiche’ ‘dd’ e’ progettato per interrompersi non appena riscontra un errore e non sarebbe di grande aiuto dovendo operare su di un disco non funzionante. Affideremo quindi questa delicata operazione al comando ddrescue che, come dd , viene utilizzato per effettuare copie ‘bit to bit’ ma , diversamente da ‘dd’ , e’ in grado di saltare i blocchi guasti rilevati sul disco durante l’esecuzione e di copiare soltanto quelli sani.

Ora per poter cominciare questa importante fase ocorrera’ procurarsi un supporto su cui effettuare la copia, sta a voi usare il device (sano) che avete a disposizione sia che sia un secondo disco (interno/esterno) una chiavetta USB o altro, la cosa piu’ importante da verificare e’ che mentre il disco su cui effettuerete la copia dovra’ essere montato sul sistema, quello da “copiare” (difettoso) dovra’ invece essere smontato; effettuata questa importante verifica potremo lanciare il tutto eseguendo il seguente comando (come negli articoli precedenti nel mio caso il disco primario e di root del sistema e’ /dev/sdd1 quindi lo usero’ come esempio) :

  • sudo ddrescue /dev/sdd1 /media/drive-di-backup/sdd1.image /media/drive-di-backup/logfile

questo comando effettuera’ la copia della partizione sdd1 del disco guasto e la salvera’ nel file  sdd1.image all’interno del disco di backup montato sotto /media/<drive-di-backup> , l’ultima parte si occupa invece di creare anche un file di LOG da poter leggere in caso di problemi. A questo punto tutti o gran parte dei nostri dati (dipende da quanto grave sia il guasto sul disco) saranno stati copiati e salvati sull’immagine creata; ora volendo essere pignoli potremmo chiedere ancora a ddrescue di cercare di recuperare quelle parti di blocchi/informazioni che risultano difettose tramite il seguente comando :

  • sudo ddrescue -r 3 -C /dev/sdd1 /media/drive-di-backup/sdd1.image /media/drive-di-backup/logfile

in pratica con l’aggiunta dell’opzione ” -r 3 ” diciamo a ddrescue di effettuare un numero massimo di tre tentativi di lettura di quei dati su cui ha riscontrato errori per cercare cosi di riempire ulteriormente qualche altra fetta dei nostri preziosi dati. Questa operazione causa un forte stress sul disco ecco perche’ la eseguiamo soltanto dopo aver messo al riparo tutto il resto sull’immagine creata al primo giro. Sara’ proprio grazie alla lettura del file di LOG che ddrescue e’ in grado di riempire/aggiungere soltanto i blocchi vuoti , senza rileggere le parti gia’ eseguite correttamente in precedenza.

Ultimo consiglio se dovete salvare piu’ partizioni eseguite ddrescue piu’ volte tante quante sono le partizioni per voi necessarie e create N file .image .

** Leggi anche ( ” a volte basta poco! ” )