Buscar este blog

jueves, 9 de junio de 2011

Encriptando LVM sin contraseña

En Linux es posible encriptar un volumen LVM y mantener nuestra información segura, se puede hacer de forma que nos pida una contraseña al iniciar el sistema o sin contraseña, en mi caso no me preocupa mucho que se roben la pc ya que es un equipo de escritorio pero no me gusta correr shred durante días para eliminar la información privada cuando vendo el disco duro para actualizarlo, así que encripto el disco sin contraseña.
Aquí van las instrucciones para hacerlo.
Primero que nada es llenar el disco duro nuevo con información aleatoria ya que así es todavía mas difícil desencriptar el disco (ojo es posible desencriptar un disco con las herramientas adecuadas) por lo que ejecutamos el comando badblocks en la partición que vamos a usar:

badblocks -c 10240 -s -w -t random -v /dev/sdb6

También es posible correr el el comando badblocks directo en el volumen lógico pero tiene la desventaja de que si después creces el volumen parte de este estará vacío por lo que sera mas vulnerable.
Algunos recomiendan llenar otra vez el disco duro con datos aleatorios pero esta vez desde el dispositivo del kernel /dev/urandom que genera mejores aleatorios y hace todavía mas difícil desencriptar el disco pero tiene la desventaja de ser mucho mas lento y con el tamaño de los discos modernos realmente se hace impracticable este procedimiento, en fin si tienes días o semanas libres o una partición muy pequeña este es el comando:

dd if=/dev/urandom of=/dev/sdb6

Después creamos el volumen lógico esto esta perfectamente explicado y de manera muy simple en el howto de LVM así que no lo explicare aquí.

Finalmente llega la hora de encriptar el volumen, primero creamos el archivo que contendrá la información para desencriptar y poder usar el volumen:

dd if=/dev/random of=LVM.key bs=1 count=256

Ponemos este archvo en una carpeta que se pueda accesar en el arranque y con permisos de solo lectura para el usuario root.
Con este archivo encriptamos la partición:

cryptsetup --verbose --key-size=256 luksFormat /dev/VG0/LV0 /etc/keys/LVM.key

Abrimos el dispositivo encriptado y creamos el sistema de archivos:

cryptsetup --key-file=/etc/keys/LVM.key luksOpen /dev/VG0/LV0 LVM0
mke2fs -t ext4 /dev/mapper/LVM0
mount -t ext4  /dev/mapper/LVM0 /mnt

Ahora ajustamos el sistema para montar el volumen encriptado en el arranque esto se hace añadiendo una entrada en /etc/crypttab para abrir el volumen encriptado y otra en /etc/fstab para montarlo
En /etc/crypttab:
LVM0 /dev/VG0/LV0 /etc/keys/LVM.key

En /etc/fstab:
/dev/mapper/LVM0 /mnt ext4 defaults 1 2

Y listo tenemos un volumen LVM encriptado sin contraseña.

sábado, 4 de junio de 2011

Obteniendo el progreso del comando dd

Un comando muy útil para copiar archivos y discos completos en Unix es dd, sin embargo una vez que esta trabajando no se sabe el progreso de la copia pues dd no muestra información alguna hasta que termina.
La manera de forzar a dd a mostrar su progreso es mandándole la señal USR1 con lo cual mostrara su progreso hasta el momento y después continuara silenciosamente otra vez.

pgrep -l '^dd$'
kill -USR1 17548

miércoles, 1 de junio de 2011

Especificando la codificación de carateres en html

Es muy importante que todos los documentos html tengan especificada la codificación de caracteres sobre todo si la página va a ser guardada o usada por un programa que no sea el navegador, los navegadores por lo general no tienen problemas con la codificación de la página ya que esta por lo general se incluye en los headers del servidor, pero una vez que el documento se ha guardado esta información ya no esta disponible, también esta el caso de servidores que no mandan el header en absoluto y que por alguna razón no se puede modificar este comportamiento.
Bueno aquí esta el ejemplo.


   1:  <meta http-equiv="Content-type"
   2:     content="text/html;charset=UTF-8" />

Yo recomiendo usar utf8 ya que nos permite manejar prácticamente cualquier idioma.
No entro en detalles sobre las codificaciones de caracteres pues es un tema muy extenso que requeriría varias entradas pero aquí les dejo un recurso muy bueno para informarse sobre el tema:
http://www.w3.org/International/tutorials/tutorial-char-enc/#Slide0250