Securing small data: the encrypted RAID way

Shotokan - martedì 26 Febbraio

Anche voi avete spesso a che fare con dati hot?
Anche voi cercate di proteggere al massimo i dati sensibili o non trasmissibili?

E per trasportare dei dati in modo sicuro tramite usb, come vi siete organizzati? 😉

Chapter 1: what’s secure it’s unsecure

Affidarsi alla crittografia offerta dagli zip sicuramente non e’ il metodo migliore, dopotutto per copiare uno zip non ci vuole un genio ed i servizi di decodifica zip online ce ne sono a palate.

Encrypted RAR? forse un pelo piu’ sicuro, totalmente inutile in ogni caso.

Tutti gli algoritmi per cryptare file, piu’ testati sono piu’ pubblici sono e piu’ i nostri amici burloni (h4xx0rz o meno) tendono a conoscerli ed a sapere come decodificarli in modo banale.

Meno banale di cryptare i file singoli e’ il cryptare direttamente l’intera partizione.
Dopotutto, per prelevare i dati dovrebbero dd-are l’intera partizione e fare i test su 4-8GB invece che dei test banali sui singoli file.
Per non parlare dell’ovvia mancanza nativa di windows & linux nel riconoscere le partizioni encrypted (“quest’usb non funziona!”)

Ma se anche voi avete paura di perdere i vostri dati perdendo o rovinando l’usb che li conteneva, forse un raid software e’ proprio cio’ che cercavate 😉

Chapter 2: securing the unsecure

Situazione iniziale:

  • 2USB di dimensioni (GB) uguali. (non ho voglia di scrivere una guida per farvele partizionare in modo uguale e bla bla bla.)
  • pc con linux

Iniziamo con l’identificare il nome che il sistema assegna alle nostre usb.
Subito dopo aver collegato la prima eseguiamo:

dmesg | tail

vi apparira’ un output simile:

sd 1:0:0:0: [sdb] Attached SCSI removable disk

tra le quadre potete appunto trovare il nome del dispositivo che possiamo trovare in /dev/.

Nel mio caso i due dispositivi sono:

sdb
sdc

quindi:

/dev/sdb
/dev/sdc

Ok!

Iniziamo a ripulire le pennine dai dati scritti in precedenza, per evitare un recupero dati:

dd if=/dev/urandom of=/dev/sdb
dd if=/dev/urandom of=/dev/sdc

Ora siamo pronti a configurarle 😉

Chapter 3: two is one ‘cause one is half

Il raid che andremo ad utilizziare sicuramente non sara’ un raid0 in questo caso, dato che perdendo una delle due pennine perderemmo tutti i dati (fatelo se cio’ vi fa comodo |:) bensi’ un raid1 ovvero copia pari-pari dell’usb 1 sull’usb 2.

Ora, dato che abbiamo sporcato per ben bene le usb, al loro interno non vi troveremo piu’ partizioni, dobbiamo quindi procedere creandole.

Per questo ci viene in aiuto fdisk:

fdisk /dev/sdb

quando richiesto premete in quest’ordine:

  • n (new partition)
  • p (primary partition)
  • 1 (numero della partizione, 1-4)
  • invio (cilindro iniziale default)
  • invio (cilindro finale default)
  • w (scrive il tutto sulla periferica)

Ripetete da fdisk in giu’ anche per /dev/sdc (o quel che avete nel vostro caso)

Procediamo con l’installare il software per la gestione software del raid:

apt-get install mdadm

ora quindi per creare il raid:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

Premete quindi yes [invio] e avrete creato il raid 😉
Ora abbiamo una periferica virtuale per gestire entrambe le usb quindi 🙂

Chapter 4: writing in the deep

Procediamo con l’installazione dei componenti di crittografia:

apt-get install cryptsetup

attiviamo i moduli del kernel necessari:

modprobe aes
modprobe dm-crypt
modprobe dm_mod

e procediamo con la crittografia:

cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 /dev/md0

digitiamo quindi yes e inseriamo due volte la password per conferma.

Ora accediamo al device codificato:

cryptsetup luksOpen /dev/md0 decoded

formattiamolo in ext4 o come preferite:

mkfs.ext4 /dev/mapper/decoded

creiamo il punto di mount:

mkdir /mnt/decoded
mount /dev/mapper/decoded /mnt/decoded

Bingo! A questo punto i dati sono raggiungibili in:

/mnt/decoded

per disconnettere le usb in modo sicuro bastera’ eseguire prima:

umount /mnt/decoded
cryptsetup luksClose decoded

Enjoy 😉

Theme made by Koala