Después de escuchar historias de portátiles robados para conseguir información confidencial de empresas, es más que evidente que no parece suficiente con proteger nuestro ordenador mediante configuraciones adecuadas, buenas contraseñas, firewalls, etc… sino que debemos ir un paso más allá e encriptar la información en nuestro disco duro. De esta forma, si alguien se hiciese con el y lo conectase a otro ordenador seria incapaz de extraer ningún tipo de información.
Por otro lado, es necesario poder combinar esa seguridad con comodidad para el usuario, el cual no quiere tener que recordar que debe cifrar unos datos determinados siguiendo una serie de pasos (por ejemplo utilizando gnupg). De ahí que la solución más acertada es la creación de una partición encriptada, la cual se montará automáticamente al hacer login el usuario (el password de la partición y el del usuario serán los mismos).
Para este objetivo utilizaremos Luks, aplicación que nombre de pasada en la guía sobre Ubuntu Edgy (sección “Encriptación de memorias USB”). Lo primero que necesitamos es una partición en nuestro disco duro disponible para guardar allí el directorio de nuestro usuario (e.g. “/home/usuario”), para ello podríamos utilizar gparted desde su liveCD pare redimensionar particiones existentes/crear nuevas particiones/etc…
Una vez tengamos una partición disponible (por ejemplo personalmente me he creado una de 15 GB), seguiremos los siguientes pasos desde nuestra Ubuntu:
- Instalamos las aplicaciones necesarias:
sudo apt-get install cryptsetup libpam-mount initramfs-tools
-
Cargamos los modulos criptográficos:
sudo modprobe dm_crypt sudo modprobe sha256 sudo modprobe aes_i586
-
Formatemos la partición (por ejemplo /dev/hda6) y le asignamos un password (el cual debe ser igual al del usuario):
sudo luksformat -t ext3 /dev/sdb4
Si os da algún error extraño, fijaros bien porque cuando nos pregunta si estamos seguros debemos escribir YES en mayúsculas.
-
Montamos la partición en “/tmp/crypthome”:
sudo cryptsetup luksOpen /dev/hda6 crypthome mkdir /tmp/crypthome && sudo mount /dev/mapper/crypthome /tmp/crypthome
-
Editamos ‘/etc/security/pam_mount.conf’ y añadimos al final (indicando nuestro usuario y partición real):
volume usuario crypt - /dev/hda6 /home/usuario exec,fsck,nodev,nosuid - -
-
Editamos ‘/etc/pam.d/login’, ‘/etc/pam.d/gdm’ y ‘/etc/pam.d/ssh’ (si existe) para añadir al final:
@include common-pammount
-
Los siguientes 2 puntos los haría desde una terminal “pura” (CTRL+ALT+F1)y no desde nuestro escritorio gráfico (ALT+F7 para volver al entorno gráfico) para no perder configuraciones que no hayan sido guardadas aun por gconf, evolution o alguno de estos procesos.
Copiamos todos los datos actuales de nuestro usuario a la nueva partición y nos aseguramos que el propietario sea el propio usuario:
sudo cp -avx /home/usuario/* /tmp/crypthome sudo chown -R usuario:usuario /tmp/crypthome sudo umount /tmp/crypthome sudo cryptsetup luksClose crypthome
-
Y en este punto ya lo tenemos todo preparado para hacer el cambio, podríamos mover nuestro home para eliminarlo más tarde (cuando hayamos comprobado que todo funciona correctamente):
cd cd .. sudo mv usuario usuario.old sudo mkdir usuario sudo chown usuario:usuario usuario
Y reiniciamos nuestro ordenador.
sudo shutdown -r now
A partir de ahora, todos los datos que guardemos en nuestra partición del usuario estarán protegidos contra robos y accesos físicos directos 🙂 La partición se montará automáticamente al hacer login gráfico, por consola o ssh. De todas formas debemos ser conscientes de la importancia de tener un password fuerte, dado que la raiz no esta encriptada… si alguien robase nuestro disco duro tendria acceso al ‘/etc/shadow’, lugar donde se almacenan los passwords encriptados y podrían ser sometidos a un ataque de fuerza bruta con john the ripper por ejemplo.
Podríamos llegar a encriptar toda la partición raiz ‘/’ y la memoria swap para conseguir un máximo nivel de seguridad, en una Ubuntu Dapper lo llegué a probar y me funcionó muy bien… la única pega era que me pedía el password justo después de cargarse el grub y para un sistema multiusuario es incomodo. Si alguien se anima a probarlo en Edgy le invito a que siga la misma página que me ha servido de guía para este post y nos cuente su experiencia 🙂
Actualización Modificada la linea que se añade al fichero ‘/etc/security/pam_mount.conf’ para que se pase el fsck cada vez que sea requerido.
Como curiosidad el instalador de etch permite cifrar particiones, incluidas la / y swap en la misma instalación de forma sencilla. El único “pero” es que al iniciar me pide 6 veces la clave y la swap no la monta y tengo que iniciarla yo con un demonio, así pues he de introducir la clave 7 veces xD. Cosas de la testing. De todas formas poco falta para que en GNU/Linux el sistema se encripte con dos clicks (swap incluida) como en mac os x (a veces dan asco xD).
Una pregunta. Una vez cifrada, ¿Cómo le pasas un fsck? Porque me gustaría poder comprobar su integridad de vez en cuando…
Gracias.
Pues es la tercera vez que reformateo una partición con luksformat, introduzco la contrasenha, copio datos, desmonto, vuelvo a montar y sin problema, pero al reiniciar el pc e intentar volver a abrir el volumen:
sudo cryptsetup luksOpen /dev/sdc1 /tmp/crypt
la contraseña inicial no surte efecto ?¿?
Todo las demás variables son correctas: punto de montaje, partición, etc…¿alguna idea?
Me autorespondo: el problema se debía al hecho de estar intentando usar en el montaje de la partición encriptada un kernel (2.6.17-11-generic) distinto a aquél (2.6.17-10-generic) bajo el que se realizó la encriptación inicial. Parece que esto afecta de algún modo a la interpretación de los datos almacenados en la cabecera de la partición del dispositivo de bloques de respaldo.
Incompatibilidad entre diferentes kernels? Eso sería bastante feo 🙁 De todas formas, yo utilizo particiones encriptadas y en alguna ocasión la gente de Ubuntu ha hecho alguna pequeña actualización de kernel sin problemas.
Bah! Debía ser otro el error. Posteriormente conseguí hacer que la partición se montara sin mayor problema y sin haber modificado nada (que recuerde). Por lo demás he estado usando el mismo sistema en diferentes máquinas y kernels con total éxito. Excelente tutorial pues. Muchas gracias 🙂
tengo un portatil dv6872la de la HP quiero saber si alguien saber porque cuando quiero intalar windows XP no reconoce el disco duro no me lo deja instalar le preguntos a alguno ingenieros de sistmas y me dice que a lo mejor esta encriptado el disco duro alguien que me ayude por que tengo vista y alguno ´programas no me funcionana quiero XP ayuda
y un comentario mas cuando le pongo una memmoria usb si me la reconcoce como si fuera el disco duro de pc, entonces se que no me deja es el disco duro del portatil
Secundo la duda de NeoSng. Veo bastante importante la posibilidad de comprobar errores en la partición cifrada.
Por cierto, \"encriptar\" no existe en castellano. Cifrar si. 🙂
http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=encriptar
Un saludo 🙂