Arxius

Xifrant particions

Escrit al 2004-07-17 00:00:00 per whats_up

Els sistemes de xifrat són cada vegada més importants. El fet d'haver de protegir les nostres dades fa que haguem de recórrer a mètodes de xifrat, per tal que en cas de caure en males mans no pugui ser utilitzada.

Jo ja portava un temps amb la intenció de mirar-me com fer-ho, i ara aprofitant que he acabat els exàmens, m'he pres un descans i he començat a buscar com poder estar tranquil deixant les meves dades a casa quan jo no hi sóc :P

Aquí explicaré com xifrar una una partició per tal de que si mai us robessin el disc dur o algú aconseguís accés físic a la vostra màquina, els fos "impossible" arribar a accedir al vostre contingut.

ALGUNS CONCEPTES:


Una "device-mapper" és, per definir-ho d'una forma genèrica, una nova infraestructura(dm-crypt) que ens permet crear capes virtuals sobre dispositius de blocs. Amb aquesta eina podem arribar a fer moltes coses amb els nostres dispositius, com ara tractar dues particions com si fossin una sola, o la que tractarem que és afegir-les-hi una capa de xifratge.

En concret nosaltres crearem un nou dispositiu de blocs a /dev en el que tot el que hi escriurem es xifrarà i tot el que hi llegim es desxifrarà automàticament.

Muntarem el nostre sistema de fitxers de forma usual, però si no entrem la nostra contrasenya, no podrem accedir a les nostres dades.

En principi fer tot això amb el dm-crypt, és força millor que el sistema que utilitza el cryptoloop (tal com diu el propi mantenidor) per forces raons:

-Es suporta el muntatge d'arxius
-No pateix els errors de programació del loop.c que, en no tenir mantenidor, se'n troben forces
-dm-crypt no depèn de cap aplicació especial (util-linux)
-dm-crypt usa mempool, la qual cosa el fa molt més estable i segur

En definitiva, una "device-mapper" forma part de la nova tecnologia del nucli.

Aquí podeu trobar totes les deficiències del cryptoloop (http://lwn.net/Articles/67216/)


SUPORT DEL NUCLI:



Aquestes noves característiques es van afegir a la versió 2.6.4 de linux, per tant necessiteu aquesta versió o una de superior per a poder-les fer servir.

Les opcions que hem d'activar són:

Primer haurem d'activar la opció que fa que ens mostri les opcions en desenvolupament:

Code maturity level options ---> Prompt for development and/or incomplete code/drivers

Després activar el device-mapper i el suport per xifrar-lo:

Device Drivers ---> Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
Device mapper support
Crypt target support

Ara només ens faltarà activar els algoritmes de xifrat:

Cryptographic options --->
Els podeu activar tots, va molt a gustos. Jo us recomano el nou "AES cipher algorithms", ja que es comporta molt bé amb x86, treballa força ràpid i dona un alt nivell de xifrat.

Tot i això, potser us interessen algunes referències per acabar-vos de decidir :)
http://www.saout.de/tikiwiki/tiki-index.php?page=UserPageChonhulio


EINES D'USUARI:



Doncs com sempre agraïm tenir una vida "tant fàcil" els que usem Debian i podem instal·lar els dos paquets necessaris via apt-get :)

Instal·lem les aplicacions d'usuari per al device-mapper:

apt-get install dmsetup


I una aplicació per tal que la nostra contrasenya faci millor la seva feina ;)

apt-get install hashalot


Per acabar podem descarregar-nos un fitxer que ens permetrà crear els nostres dispositius amb més facilitat:
cryptsetup.sh
o també podeu fer:

apt-get install cryptsetup



CREACIÓ DELS DISPOSITIU DM-CRYPT



Primer de tot haurem de triar una partició, suposem /dev/hda5 (ha d'estar desmuntada!)

executem:

root@wekk.net:~# sh cryptsetup.sh -c aes -h ripemd160 -y -b `blockdev --getsize /dev/hda5` create cryptdev1 /dev/hda5
Enter passphrase:


El que fa és crear-nos un dispositiu anomenat cryptdev1 (/dev/mapper/cryptdev1) utilitzant l'algoritme "aes" (podeu consultar els que suporta el vostre nucli amb cat /proc/crypto que seran els que heu afegit vosaltres abans :P), la contrasenya serà entrada usant l'algoritme hash de tipus “ripemd160" (no tinc cap preferència respecte a quina cal fer servir...)

Un cop fet això ja disposareu del vostre dispositiu xifrat!, el formatarem ....

root@wekk.net:~# mkreiserfs /dev/mapper/cryptdev1

i el muntem:

root@wekk.net:~# mount /dev/mapper/cryptdev1 /mnt/crypto

i ja disposem de la nostra partició xifrada!

A partir d'ara cada vegada que tornem a iniciar la màquina haurem de crear el dispositiu. Si ens equivoquem al posar la contrasenya, quan intentem muntar el sistema rebrem un bonic missatge:

root@wekk.net:~# sh cryptsetup.sh -c aes -h ripemd160 -y -b `blockdev --getsize /dev/hda5` create cryptdev1 /dev/hda5
Enter passphrase: (la posem malament)

root@wekk.net:~# mount /dev/mapper/cryptdev1 /mnt/crypto
mount: you must specify the filesystem type

(podem veure que amb la contrasenya erronia, no la podem muntar)

Ja tenim les dades protegides de tot perill!

eliminem el dispositiu, i tornem a posar la contrasenya.

root@wekk.net:~# sh cryptsetup.sh remove cryptdev1
root@wekk.net:~# sh cryptsetup.sh -c aes -h ripemd160 -y -b `blockdev --getsize /dev/hda5` create cryptdev1 /dev/hda5
Enter passphrase:

root@wekk.net:~# mount /dev/mapper/cryptdev1 /mnt/crypto



CONFIGURACIÓ A L'ARRENCADA:



Si us interessa fer que cada vegada que us arrenca l'ordinador es munti la partició, podeu fer-ho així:


#!/bin/bash

case $1 in
start)
echo -n "Iniciant dm-crypt, entra la contrasenya:"
/usr/local/sbin/cryptsetup.sh -c aes -h ripemd160 -b `blockdev --getsize /dev/hda5` create cryptdev1 /dev/hda5
/bin/mount /dev/mapper/cryptdev1 /mnt/crypt/
echo "Fet!"
;;




stop)
echo -n "Eliminant dm-crypt... "
/bin/umount /mnt/crypt/
/usr/local/sbin/cryptsetup.sh remove cryptdev1
echo "Fet!"
;;
*)

echo "$0 start|stop"
esac




Aquesta seqüència fa que, si amb 10 segons no s'ha escrit la contrasenya, arrenqui de manera normal.


root@wekk.net:~# cp cryptdev /etc/init.d/

root@wekk.net:~# chmod 755 /etc/init.d/cryptdev

root@wekk.net:~# update-rc.d cryptdev defaults
Adding system startup for /etc/init.d/cryptdev ...
/etc/rc0.d/K20cryptdev -> ../init.d/cryptdev
/etc/rc1.d/K20cryptdev -> ../init.d/cryptdev
/etc/rc6.d/K20cryptdev -> ../init.d/cryptdev
/etc/rc2.d/S20cryptdev -> ../init.d/cryptdev
/etc/rc3.d/S20cryptdev -> ../init.d/cryptdev
/etc/rc4.d/S20cryptdev -> ../init.d/cryptdev
/etc/rc5.d/S20cryptdev -> ../init.d/cryptdev


I a partir d'ara cada vegada que arranqueu, us demanarà la contrasenya per poder muntar després la partició.

El que es podria fer per estalviar-nos la contrasenya, és passar-li l'opció “-d arxiu“ al cryptsetup.sh, per tal d'usar la clau dins “d'arxiu” per a xifrar la partició amb l'algoritme triat. Aquesta clau es podria en un dispositiu d'aquests dispositius usb que estan tant de moda, i així aconseguirem que si no hi ha el dispositiu posat, el pc no arranqui o simplement no es munti la partició xifrada.


Una altra cosa molt interessant de fer, és que la swap també sigui xifrada. D'aquesta manera aconseguim estar segurs que a la part del disc que s'ha usat com a memòria, tampoc hi han dades sensibles.

Proveu de fer la prova i mirar que hi ha actualment a la partició swap executant:
strings /dev/hdc3 (on hdc3 és la partició de la swap)
segur que us endureu alguna desagradable sorpresa.

Per fer-ho haurem de treure del nostre /etc/fstab la línia que activa la swap

/dev/hda6 none swap sw 0 0


i afegirem aquesta altra seqüència amb el nom de cryptswap


#!/bin/bash

case $1 in
start)
#Iniciant swap-crypt
/usr/local/sbin/cryptsetup.sh -c aes -h ripemd160 -d /dev/random -b `blockdev --getsize /dev/hda6` create cryptswap /dev/hda6
/sbin/mkswap /dev/mapper/cryptswap
/sbin/swapon /dev/mapper/cryptswap
;;

stop)
#Iniciant swap-crypt
/sbin/swapoff /dev/mapper/cryptswap
/usr/local/sbin/cryptsetup.sh -c aes -h ripemd160 -d /dev/random -b `blockdev --getsize /dev/hda6` create cryptswap /dev/hda6

;;
*)

echo "$0 start|stop"
esac




root@wekk.net:~# cp cryptswap /etc/init.d/

root@wekk.net:~# chmod 755 /etc/init.d/cryptswap

root@wekk.net:~# update-rc.d cryptswap defaults
Adding system startup for /etc/init.d/cryptswap ...
/etc/rc0.d/K20cryptswap -> ../init.d/cryptswap
/etc/rc1.d/K20cryptswap -> ../init.d/cryptswap
/etc/rc6.d/K20cryptswap -> ../init.d/cryptswap
/etc/rc2.d/S20cryptswap -> ../init.d/cryptswap
/etc/rc3.d/S20cryptswap -> ../init.d/cryptswap
/etc/rc4.d/S20cryptswap -> ../init.d/cryptswap
/etc/rc5.d/S20cryptswap -> ../init.d/cryptswap



Ara per acabar d'assegurar les vostres dades sensibles que havien estat emmagatzemades de forma insegura al vostre disc, una bona acció a dur a terme és esborrar de forma segura tot el vostre disc.
Podeu utilitzar aquest cd live.

Dons ja ho sabeu, si feu tot això, ja podreu anar a dormir tranquils ;)!!

Referències: http://www.saout.de/misc/dm-crypt/

Categories: Articles, Trucs


Comentaris

  • Sense comentaris
Arxius