Slackware: Partizioni crittate

2007 cript tutorial slackware

Contenuti

  1. Obiettivi
  2. Background
  3. Preparazione dell’ambiente
    1. Preparazione del kernel
    2. Patchare il kernel
    3. Software
  4. Il lavoro sporco
    1. Creare le partizioni
    2. Crittare la /home
    3. Crittare la swap
  5. Automatizzazioni
    1. Automount
    2. Script di avvio di Slackware
  6. Ending credits

Obiettivi

Questo howto si prefigge come obiettivo la crittazione delle partizioni /home e swap usando dm-crypt e chiave di cifratura su pendrive usb.
Si presume che il sistema abbia / e /home su due partizioni distinte. E’ il sistema che sto usando io, testato su Slackware 10.2 e 11.0.
Usando Slackware 12.0 non si ha la necessità di installare i software di cui sotto in quanto già presenti nella distribuzione; bisogna però modificare gli script di avvio in quanto non prevedono l’uso delle chiavi su device esterni con pendrive usb come nel nostro caso.

Non mi prendo alcuna responsabilità su eventuali danni o perdite di dati

Background

Il Device Mapper è un framework generico per mappare delle periferiche a blocchi in altre. Questo sistema sta alla base di cryptoloop, per l’appunto, LVM2 e il sistema di snapshot del filesystem.
Le applicazioni che usano questo sistema scambiano informazioni coi Device Mapper attraverso la libreria libdevmapper.so che solleva le chiamate di sistema (ioctl) all’i-node della periferica.

Preparazione dell’ambiente

Armatevi di pazienza, voglia di fare, qualche sigaretta e una birra 😃
Grado di difficoltà: Avanzato

Preparazione del kernel

La prima cosa da fare per poter utilizzare Device Mapper è abilitarlo nel kernel. Consiglio di metterlo builtin (*) e non modulo (M).

Device Devices
   --> [*] Multi-device support (RAID and LVM)
      --> [*] Device Mapper
         --> [*] Crypt Target Support

Aspettate a ricompilare perché potreste aver bisogno di patchare il kernel a seconda della versione che state utilizzando.

Patchare il kernel

Se usate un kernel dalla versione 2.6.18 in poi, consiglio vivamente di applicare la patch sottostante, altrimenti all’avvio della macchina rischiate che il vostro pendrive non sia ancora stato rilevato dal kernel causando la non lettura della chiave di crittazione e quindi le vostre partizioni crittate NON verranno montate.
Applicare la patch è molto semplice: basta infatti modificare il delay nel rilevamento delle periferiche usb.

  • Editate il file drivers/usb/storage/usb.c
  • cercate la linea static unsigned int delay_use = 5; e modificate il valore a 0
  • salvate

Software

I seguenti software vanno installati in ordine, altrimenti incapperete sicuramente in qualche errore di dipendenza.

  1. libgpg-error, che contiene i codici di errore per la gestione di funzioni usate da GnuPG
  2. libgcrypt, libreria crittografica che fornisce funzioni per la crittografia: cifratura simmetrica (AES, DES, Blowfish, CAST5, Twofish, Arcfour), algoritmi di hashing (MD4, MD5, RIPE-MD160, SHA-1, TIGER-192), MAC (HMAC per tutti gli algoritmi di hash), algoritmi a chiave pubblica (RSA, ElGamal, DSA), funzioni a grandi interi, a numeri casuali e tutte le funzioni di supporto per essi
  3. luks, Linux Unified Key Setup, tool per la creazione di partizioni crittate

Il lavoro sporco

Ma veniamo alla parte pratica di questa documentazione

Creare le partizioni

Per prima cosa dobbiamo montare il nostro pendrive. Ad esempio, se in /etc/fstab fosse mappato su /mnt/pendrive, il comando sarebbe

mount /mnt/pendrive

Successivamente andremo a creare la chiave di crittazione a 4096 KByte (4MB), viva la sicurezza 😃

dd if=/dev/urandom of=/mnt/pendrive/keyfile bs=1024k count=4

dove keyfile sarà la nostra chiave, da usare per decrittare le partizioni all’avvio della macchina e successivamente recrittarle allo spegnimento.
Qualcuno si chiederà perché fare 4 blocchi da 1024k invece che 1 da 4096.
Semplice: in questo modo aumenta l’entropia della chiave 😉

Ora dobbiamo creare la prima partizione crittata, quella che diverrà la nostra home

/usr/sbin/cryptsetup -v -c aes -d /mnt/pendrive/keyfile create secret /dev/hdaX

Ora bisogna formattare la partizione crittata col filesystem che volete, io ho scelto ReiserFS. Questa operazione si fa col comando

mkfs.reiserfs /dev/mapper/secret

Crittare la /home

Ora come ora abbiamo solo creato una partizione crittata di nome secret che punta a /dev/hdaX. Il vero lavoro di crittazione della /home avviene coi 2 semplici comandi che seguono:

  • montaggio della partizione crittata su un mount-point disponibile, esempio /mnt/hd
mount /dev/mapper/secret /mnt/hd
  • e copia della home sulla partizione crittata
cp -avx /home/* /mnt/hd

Crittare la swap

Vi chiederete perché. La swap può contenere dati sensibili e informazioni preziose.
Siccome siamo paranoici, crittiamo anche quello, col comando che segue:

cryptsetup -d /dev/random create swapfs /dev/hdaX

Ora bisogna formattare la partizione crittata come swap, quindi procederemo col seguente comando:

mkswap /dev/mapper/swapfs

Non sognatevi di attivare ora la swap
Se lo fate, il sistema quasi sicuramente si incarterà e non swapperà più fino al prossimo riavvio!

Automatizzazioni

Automount

Il prossimo passo è mappare le nostre nuove partizioni in /etc/fstab.
Editate il file, eliminate le vecchie righe per il mount della /home e della swap, e sostituitele con queste:

/dev/mapper/swapfs   none                   swap        sw,pri=1
/dev/mapper/secret   /home                  reiserfs    defaults            0   0

Ora, controllate se avete il file /etc/crypttab, se non l’avete createlo da root, col seguente comando:

touch /etc/crypttab
chmod 644 /etc/crypttab

Editate il file, ed aggiungete le seguenti righe:

# <target device>     <source device>     <key file>           <options>
swapfs                /dev/hdaX           /dev/random          swap
secret                /dev/hdaY           /mnt/pendrive/key    luks

Script di avvio di Slackware

Ora bisogna dire alla nostra Slackware di montare la swap crittata invece di attivare quella creata durante l’installazione del sistema e di montare la nostra home crittata. Per fare ciò, bisogna editare il file /etc/rc.d/rc.S, lo script di startup appunto.

Slackware 10.2

  • Cercate le linee:
# Enable swapping:
/sbin/swapon -a
  • e modificatele come segue:
# Enable swapping (with crypted swap):
/usr/sbin/cryptsetup -d /dev/random create swapfs /dev/hdaX
/sbin/mkswap /dev/mapper/swapfs
/sbin/swapon -a
  • cercate le righe:
# mount non-root file systems in fstab (but not NFS or SMB
# because TCP/IP is not yet configured, and not proc because
# that has already been mounted):
/sbin/mount -a -v -t nonfs,nosmbfs,noproc
  • e modificatele come segue:
# mount non-root file systems in fstab (but not NFS or SMB
# because TCP/IP is not yet configured, and not proc because
# that has already been mounted) and create the crypted partitions:
/sbin/mount -v /mnt/pendrive
/usr/sbin/cryptsetup -v -c aes -d /mnt/pendrive/keyfile create secret /dev/hdaX
/sbin/mount -a -v -t nonfs,nosmbfs,noproc
/sbin/umount -v /mnt/pendrive

Slackware 11.0

  • cercate le righe per il mount e modificatele per includere il mount del pendrive e cryptsetup.

Questo procedimento automatizzerà il mount delle partizioni crittate all’avvio. Notate che se non avete il pendrive usb pluggato al pc durante il boot, il sistema parte, ma non trovando la chiave di cifratura le home non verranno montate lasciando l’utente nel limbo 😃

Ending credits

L’articolo è stato scritto da HelLViS69

Puoi scaricarlo in pdf cliccando qui