miércoles 20 de mayo de 2009

Encryptar particiones y archivos linux / Guardar archivos dentro de archivos

Encryptar particiones y archivos linux / Guardar archivos dentro de archivos

Debemos contar con espacio libre en nuestro disco rígido

Luego instalamos cryptsetup.

#sudo aptitude install cryptsetup

El cryptsetup te instalará además los módulos del kernel para realizar encriptación al vuelo.
El criptsetup es el encargado de servir de capa intermedia para encriptar los datos hacia el disco (y desencriptarlos), le llamaré mapper o dispositivo de mapper.

Ahora procedo a crear un dispositivo de mapper para esta partición que encriptaré:

#sudo cryptsetup --verbose --verify-passphrase create sda3 /dev/sda3

si el comando anterior no funciona vean el manual de cryptsetup poniendo en consola

#man cryptsetup

en mi caso funcionó de la siguiente forma.

#cryptsetup -v -y create sda5 /dev/sda3

El comando anterior nos pedirá la clave de encriptación dos veces.
Pongan una clave medio que compleja para que no sea fácil de averiguar.
recomiendo que ponga formatos que comienzan con número y finalizan con número
ejemplo: "22letrasletras2288"
recomiendo evitar los simbolos, si bien son buenos para las claves pueden traernos problemas los tipos de teclados.
Desde ya les comento: NO hay forma trivial de recuperar esta clave. Y aquí está la ganancia. Si no te acuerdas de la clave: olvídate de los datos.
Esta clave no se almacenará en ningún lugar más que en tu mente y en el sticker que seguramente NO pegarás al display de la máquina, pero dentro de la máquina no se almacenará.

Sugiero que no la escriban.

Al terminar de ejecutar el anterior comando, tendrás ahora un dispositivo llamado: /dev/mapper/sda3

mira:

#sudo ls -l /dev/mapper/

A partir de ahora, cualquier cosa que hagamos con /dev/mapper/sda3 realmente se escribirá al disco de forma encriptada.

Así que hagamos algo con esta nueva partición encriptada, formateémosla:

#sudo mkfs.ext3 /dev/mapper/sda3

Fíjense que formateo a la partición encriptada... de esta forma estará lista para recibir datos.

Y listo, podemos montarla donde querramos, por ejemplo podría montarla así:

#sudo mount /dev/mapper/sda3 /home/cristian/Documents

En este caso he montado la partición encriptada en /home/cristian/Documents... ahora todo lo que yo copie hacia /home/cristian/Documents se escribirá de forma encriptada.

Si quisiera que este punto de montaje fuera permanente hago lo siguiente:

Edito /etc/crypttab

sudo vi /etc/crypttab

Al final de este archivo agrego esto:

sda3 /dev/sda3 none checkargs=ext3,tries=3

Grabo y salgo.

Este anterior cambio lo que hará es que cada vez que ubuntu arranque, nos pedirá la clave conque encriptamos el FS y una vez le pongamos la clave continuará arrancando ubuntu ya con /dev/mapper/sda5 creado.

Entonces edito /etc/fstab:

#sudo vi /etc/fstab

y al final agrego esto:

/dev/mapper/sda3 /home/cristian/Documents ext3 defaults,noatime 0 0

Grabo y salgo.

el comando en vi es, dos puntos para poder ejecutar comando, la letra "w" grabar, la letra "q" para salir y enter

:wq enter

El anterior cambio en el archivo /etc/fstab lo que hará es montar /dev/mapper/sda3 en /home/cristian/Documents siempre que arranque el sistema.

Deben saber que ningun sistema de 100% confiable, con mucho conocimiento y sobre todo mucho tiempo es posible bulnerar cualquier sistemas de seguridad.

OJO que dije “es posible heeeeeeeeeeee!!!”

Ahora les voy a dar un ejemplo práctico que consiste en encriptar dos veces la información y ocultarla dentro de un archivo.
Un sistema seguro no se compone por un software que lo proteje bajo una llave es bueno saber que lo mejor es aprender a combinar técnicas de seguridad.
Si les interesa lean esteganografia.

La idea es la siguiente.

Punto 1- Debemos contar con espacio en el dico. El tamaño que nos parezca adecuado de acuerdo a los trabajos que realizamos en mi ejemplo lo que yo guardo son código fuente por lo que no necesito gran cantidad de espacio realizaré el ejemplo lo daremos con 12 GB libres.

Creamos la partición encriptada

#cryptsetup -v -y create sda3 /dev/sda3

la formateamos

#mkfs.ext3 /dev/mapper/sda3

Creamos un directorio para montarla

#mkdir /usr/datos

la montamos en

#mount /dev/mapper/sda3 /usr/datos

ya esta lista para escribir datos en ella

Punto 2- Como todos sabemos en linux todo es un archivo por lo que voy a crear dentro de esta partición un archivo un poco mas chico que la partición, formatearlo y usarlo como si fuese una partición. (espero que se entienda)

Para ello vamos a crear un archivo de 10 GB

#dd if=/dev/zero of=/usr/datos/archivo bs=10240 count=1048576

bs es el número de bits que escribimos cada vez y count el número de veces que lo escribimos.

Luego de creado nuestro archivo, lo formateamos.

Para ello utilizamos el comando

#mkfs.ext3 /usr/datos/archivo

Hecho esto tenemos un archivo con formato de partición que podemos montar en un directorio para que se

vea con mas claridad vamos a crear un directorio en /opt llamado crypt

#mkdir /opt/crypt

montamos nuestro archivo en /opt/crypt

#mount -o loop -t ext3 /usr/datos/archivo /opt/crypt

Aquí puede pasar que no tengan permiso en el directorio o en el archivo chequeen eso antes.

si no lanzo ningún mensaje es porque todo esta bien y podemos escribir normalmente en /opt/crypt

lo bueno de esto es que todo lo que nosotros escribimos en /opt/crypt en realidad se escribe dentro del
archivo que tenemos creamos en /usr/datos con nombre "archivo" y que ademas está dentro de una partición encriptada

ahora podemos encriptar nuestro archivo tambien con gnupg y crear uno o si quieren dos script que se ejecuten en el inicio de linux tal como explique en la nota anterior traten de combinar la técnica de encriptado de particiones con encriptado de información y obtendrán resultados superadores.
Para mas seguridad pueden encriptar los archivos que guarden en su archivo encriptado dentro de su partición encripada

Resumen.
Contamos con espacio libre en nuestro HD /dev/sda

1- Encriptamos la partición sda3

#cryptsetup -v -y create sda5 /dev/sda5

Nos pedirá dos veces la clave

Luego, nos pedira una clave siempre mientras arranca nuetro linux, si la clave es incorrecta no podremos ver el los datos de ella.

2- Formateamos la partición

#mkfs.ext3 /dev/mapper/sda3

Creamos un directorio para montarla

#mkdir /usr/datos

3-La montamos

#mount /dev/mapper/sda3 /usr/datos

4- Creamos un archivo en nuestro caso de 10 GB

#dd if=/dev/zero of=/usr/datos/archivo bs=10240 count=1048576

5- Lo formateamos.

#mkfs.ext3 /usr/datos/archivo

6- Creamos un directorio para montar el archivo

mkdir /opt/crypt

7- Lo montamos

#mount -o loop -t ext3 /usr/datos/archivo /opt/crypt

Espero que les sea útil.

3 comentarios:

Joaquín Pinillos dijo...

Sugerente el artículo. Casualmente he estado buscando algo similar desde hace unos días así que no demoraré en probarlo.

Cristián R. Olmos dijo...

Me alegra que le sea útil.
Consulta si falla algo, si tienes alguna duda o si hay algún error en la publicación.
Puedes mandarme un mail a cristian.olmos@hcsinergia.com o al que está publicado en este blog
En mi caso lo hice en varias oportunidades sin problemas y la última fue en mi portátil con ubuntu 8.01
Saludos.

Cristián R. Olmos
CEO HC Sinergia
www.hcsinergia.com

Anónimo dijo...

Buenas tardes el presente es para plantear un inconveniente que tengo en estos momentos; tengo un servidor debian con varias particiones encriptadas, y una de esas particiones no le recuerdo el password, el usuario root esta bloqueado, el GRUB esta bloqueado y las consolas del F1 al F12 tambien; les pido realmente si pueden ayudarme....


Saludos..