Oscar's Blog

Blog de Oscar Valenzuela - GNU con Linux, Free Software, Android, Hacking

Protege tu memoria USB a prueba de mirones!

09 Jun 2014


Por diferentes razones he estado trabajando en proteger mis datos, es decir, encriptar mis datos críticos almacenados en mi pc, disco externo y memorias USB (Pendrive), así como comunicaciones por correo, chat, sms y mensajería desde equipos móviles. Y aunque muchos puedan pensar que es algo paranoico, cuando comienzas a pensar cuantas “manos” y “ojos” estan frente a tu información, comienzas a realizar cambios importantes, no solo en aspectos de tecnología, sino también en cuanto a costumbres de como usas dicha información. Es por esto que migré todo mi correo a una unidad de almacenamiento USB cuya partición esté encriptada, donde almaceno archivos con contenido sensible y mi correo, que por cierto ahora se almacena en un archivo cifrado y se conecta usando SSL, así también si algún día se me olvida o pierde, o me la roban, jamás podrán recuperar la información sin mi permiso. Ahora bien, como construir esta maravilla de repositorio seguro, pues de eso mismo se tratará este post.

encrypt-usb-drive

IMPORTANTE:
Toda la información previamente almacenada en tu memoria USB será eliminada, por lo que si tienes algo importante, es la hora de respaldarla.

Lo primero, será identificar la unidad, esto se logra facilmente verificando el resultado del comando dmesg al insertar la unidad de memoria, para no confundirnos, se recomienda no tener otra unidad conectada.

> su -<br />> tail -f /var/log/messages | grep "sd"

Así descubrimeros que se despliega una unidad tipo sda, sdb o sdc. Con esto supondremos que nuestro dispositivo sería /dev/sdX y la primera partición entonces /dev/sdX1.

Luego, procederemos a particionar la unidad, para lo que podemos usar el programa “parted” o “fdisk” para consola o “gparted” para escritorio, y dependiendo de nuestras necesidades, con el cual podremos dimensonar las particiones según nuestro gusto. Por ejemplo, en este caso crearemos una partición de 5GB, y otra con todo el resto del espacio disponible, usando el programa “gparted” que por cierto debe ser ejecutado con privilegios de root (al igual que los pasos anteriores).

Listamos las particiones para verificar que sea nuestra unidad, reemplazando X por la letra correspondiente:
`> parted /dev/sdX -l</p>

Ahora ingresamos al modo "interactivo":
> parted /dev/sdX
(parted) mkpart primary 0.0 5GB
(parted) mkpartfs primary fat32 5GB -1s
(parted) quit` Como puede apreciarse se han creado 2 particiones, la primera con un tamaño de 5GB (/dev/sdX1) que se utilizará para almacenar los datos encriptados, y una segunda partición con formato fat32 (/dev/sdX2) que inicia desde los 5GB hasta el último sector disponible. La segunda partición servirá para propositos generales, y en conjunto, la presentación final de nuestra memoria USB será similar a la que desplegaré (usando una memoria de 8GB): `(parted) print
Model: Imation Atom USB Device (scsi)
Disk /dev/sdX: 8007MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
1 512B 5000MB 5000MB primary
2 5001MB 8007MB 3006MB primary fat32 lba` Hoy por hoy es bastante común encontrar empresas que se dedican especificamente a la recuperación de datos en unidades de almacenamiento digital (memorias SD, memorias USB, Discos Duros, etc). Y sin mencionar la labor de otras entidades de gobierno, es por esto que vamos a evitar a toda costa los ataques basados en reconocimiento de patrones de encriptación, por lo que escribiremos datos aleatorios a la partición antes de proceder con la encriptación. El comando “dd” puede ser utilizado para llenar de datos la partición, por supuesto esto puede tomar cierto tiempo, lo que depende exclusivamente de la “entropía” generada por nuestro sistema: `> dd if=/dev/urandom of=/dev/sdX1 bs=1M` El comando anterior puede requerir bastante tiempo en ejecutarse, por lo que recomiendo dejarlo sin interrumpir. Al finalizar, podremos continuar con el proceso, y el siguiente paso será encriptar la partición creada. Para este proposito usaremos la herramienta “cryptsetup”, la que desde luego debe ser instalada en su sistema usando el manejador de paquetes correspondientes (yum, apt, opkg, etc). El siguiente comando encriptara la partición /dev/sdX1 usando el algoritmo 256-bit AES XTS, el cual por cierto solo esta disponible en Linux desde la versión 2.6.24 del Kernel en adelante. El comando nos pedirá una contraseña, es importante usar una que sea robusta y recordable: `
> cryptsetup -h sha256 -c aes-xts-plain -s 256 luksFormat /dev/sdX1` Con esto, la partición ya estará encriptada. Para que sea más fácil su gestión le asignaremos un nombre, en este caso será “private”: `> cryptsetup luksOpen /dev/sdX1 private` Con esto, la partición encriptada estara disponible en el sistema bajo el alias de /dev/mapper/private y procederemos a montar la partición y crear el sistema de archivos. `> mkfs.ext2 /dev/mapper/private
> mkdir /mnt/private
> mount /dev/mapper/private /mnt/private` Una vez disponible la nueva partición, asignaremos los permisos para poder usar los archivos. Considerando que nuestro usuario es “miusuario”, el comando respectivo será el siguiente: `> chown -R miusuario:miusuario /mnt/private` Ahora la partición encriptada esta disponible en el directorio /mnt/private. Si ya no se desea acceder a la memoria USB encriptada, deberemos desmontar la unidad utilizando “unmount” y luego usamos el comando “cryptsetup” para cerrar la protección establecida. `> umount /mnt/private
> cryptsetup luksClose /dev/mapper/private` Como ya nuestra unidad esta lista, podremos hacer uso de las herramientas de escritorio para montar adecuadamente la unidad, puesto que con todas las utilidades instaladas, al solo conectar la memoria USB al puerto, nos aparecerá una ventana emergente solicitando la contraseña para desbloquear la memoria USB. [2014-06-09-230056_1024x576_scrot](http://ovalenzuela.com/wp-content/uploads/2014/06/2014-06-09-230056_1024x576_scrot.png) Si por el contrario, nuestra distribución no cuenta con las herramientas necesarias, debemos utilizar los comandos anteriormente descritos, evitando por supuesto, el formatear la partición. Y bueno, eso ha sido el artículo de seguridad de hoy, pronto veremos como construir nuestra propia PirateBox!