Posts Tagged ‘how to’

Cifrar una partición o disco duro externo en GNU/Linux

Domingo, Enero 10th, 2010

A pesar de que soy un firme defensor de los asistentes gráficos, creo que ciertas cosillas, sobre todo las relativas a la seguridad y que llega con hacer una vez en la vida es conveniente aprender a hacerlas “de verdad”. Una de esas cosas para las que merece la pena remangarse es aprender a cifrar o encriptar (sic) particiones o discos duros completos. Las instrucciones que voy a dar a continuación están pensadas para cifrar una partición en dispositivo externo pero también valdrían para una interna. Si lo que queremos es cifrar /home quedarían algunas cosas más por hacer que lo que aquí se describe. Por poner las cosas un poco en contexto, la idea de fondo de esta receta es que tengo un disco duro externo con varias particiones. En dos de ellas, cifradas ambas, hago copia de seguridad de un portátil y un sobremesa. La tercera es un almacen de archivos multimedia, música y vídeos obtenidos de gente que los compartía de forma no delictiva a través de internet.

Comprobaciones previas

  • Saber el nombre del dispositivo que equivale a la partición que queremos cifrar, este nombre acostumbra ser del tipo /dev/sdb1 si se trata de una partición o /dev/sdb si es todo el disco. A partir de ahora me referiré a este nombre como $PARTICION. El contenido de esa partición lo perderemos por completo. Podemos identicarlo ejecutando en una consola fdisk -l
  • Desmontar la partición sobre la que vayamos a trabajar umount $PARTICION
  • Instalar (en el raro caso de que todavía no lo esté) el paquete cryptsetup.

Comprobar que no hay errores en el disco

A continuación comprobaremos que la partición que vamos a cifrar no tiene errores físicos. Esta operación y la siguiente de rellenar con valores aleatorios el disco pueden tardar varias horas y no son estrictamente necesarias, pero yo recomiendo ejecutarlas.
badblocks -s -w $PARTICION -b $TAMAÑO_BLOQUE

Para saber cual es el tamaño de bloque en nuestra partición podemos usar el comando:
tune2fs -l /dev/sda5 | grep -i 'Block size'

Una forma de acelerar el proceso de chequeo de errores es usar el parámetro -t random. Por defecto lo que hace badblocks es llenar todos los bytes del disco duro con aa, 55, ff, 00. Primero escribe el primer patrón (aa) y luego comprueba que todos los bytes valen aa, a continuación hace lo mismo con el segundo patrón,… Con -t random da una sóla pasada donde el patrón usado es aleatorio. Es menos fiable pero más rápido. Tampoco es mala idea hacerlo si estamos más o menos seguros de que el disco está bien y nos vamos a saltar el paso de llenar el disco con valores aleatorios.

Aleatorizar el disco

Si somos un poco paranoicos lo que debemos hacer a continuación es llenar la partición con valores aleatorios, lo que nos protegerá de ciertos ataques criptográficos. Hay varias formas de hacer esto, a mayor nivel de paranoia más lento será. Yo lo hago con este comando:
shred -n 1 -v $PARTICION

El parámetro -n $numero define el número de pasadas que haremos, el valor por defecto es 3, pero con 1 es suficiente. Hay quien sugiere usar mejor el comando:
dd if=/dev/random of=$PARTICIÓN bs=$TAMAÑO_BLOQUE

Mientras que shred trabaja con datos pseudo-aleatorios (tomados de /dev/urandom) los que se usan con esta otra opción son realmente aleatorios, pero el tiempo que tarda en finalizar se multiplica.

Por otro lado prefiero usar shred a dd if=/dev/urandom of=%PARTICION bs=$TAMAÑO_BLOQUE (que es otra instrucción que se ve habitualmente por ahí en los how-to) porque con shred nos va informando del progreso del proceso y es una herramienta específica para este tipo de tareas.

Cifrar la partición

El siguiente paso consiste en indicar al sistema operativo el tipo de cifrado y contraseña queremos emplear para ese dispositivo.
cryptsetup -c aes -h sha256 -y -s 256 luksFormat $PARTICION

  • -c aes indica que vamos a usar como algoritmo de cifrado AES que es el más extendido. Otra buena opción sería Twofish.
  • -s 256: que el tamaño de la clave sean 256 bits que es más que suficiente. A mayor tamaño más seguridad pero mayor perdida de rendimiento
  • -h sha256: que use como algoritmo de hash SHA-256.

Si este comando nos da un error del tipo

Check kernel for support for the aes-cbc-plain cipher spec and verify that /dev/sdb6 contains at least 258 sectors

es seguramente porque no tenemos cargado el módulo dm-crypt. Para cargarlo ahora mismo ejecutamos
modprobe dm-crypt

Para hacer que se cargue automáticamente cada vez que arrancamos el ordenador añadimos al archivo /etc/modules una línea que contenga unicamente el módulo a cargar, en este caso
dm-crypt

Ahora debemos comprobar si podemos acceder al volumen cifrado
cryptsetup luksOpen $PARTICION $NOMBRE

Este comando es algo así como decirle al kernel que el volumen virtual descifrado, correspondiente al volumen físico cifrado $PARTICION va a ser /dev/mapper/$NOMBRE. Este comando no es equivalente a montar la partición, es más bien inventarnos una especie de interfaz hardware para acceder a nuestros datos descifrados.

Creamos un nuevo sistema de archivos en la partición

Si todo ha ido bien ahora debemos formatear la partición, yo uso el sistema de archivos ext4.
mkfs.ext4 [-L $ETIQUETA] -m 1 /dev/mapper/$NOMBRE

  • -L $ETIQUETA: Asigna a esa partición un determinado nombre. Yo uso esta opción sobre todo cuando se trata de dispositivos externos, ya que cuando conectemos el dispositivo este se montará automáticamente como /media/$ETIQUETA, si no tiene etiqueta será simplemente /media/disk. Hay que tratar de usar un identificador que sea difícil que se repita, para poder asegurarnos que no hay otro dispositivo montado con el mismo nombre yo por ejemplo uso el estilo fpuga_backup
  • -m 1: Es para reservar un 1% del disco duro para el superusuario en lugar del 5% por defecto. Es útil dejar siempre algo pero 5 es demasiado

Para cerrar el volumen descifrado y que no se puede acceder a él con la clave haremos
cryptsetup luksClose /dev/mapper/$NOMBRE

Trabajar con el disco cifrado

Con los pasos dados hasta aquí ya tenemos listo nuestro volumen cifrado, la cuestión ahora es ¿como empezar a meter datos en él?. Primero descifraremos el disco (metiendo la clave), creándose automáticamente un volumen virtual descifrado y luego montaremos el volumen, esto lo hacemos con los comandos:
cryptsetup luksOpen $PARTICION $NOMBRE
mount /dev/mapper/$NOMBRE $PTO_MONTAJE

En el caso de que sea un partición interna es conveniente que definamos sus propiedades de montaje en /etc/fstab. En el caso de ser una externa es bastante sencillo, ya que al conectar el dispositivo automáticamente nos saldrá una ventana de diálogo preguntándonos la clave. Al introducirla, si hemos definido una etiqueta para la partición está se montará en /media/$ETIQUETA.

Para desmontar la partición y cerrar el volumen descifrado podemos hacer click con el botón derecho sobre la partición y darle a desmontar o bien ejecutar los comandos:
umount $PTO_MONTAJE && cryptsetup luksClose /dev/mapper/$NOMBRE

Referencias

Como ocultar la dirección de correo para combatir el spam

Jueves, Septiembre 17th, 2009

Algo que tenía pendiente desde hace ya demasiado era poner una dirección de correo electrónico de contacto en el blog. Todas las guías sobre blogging hablan de la importancia de incluirlo y resulta lógico el permitir que tus lectores contacten contigo en privado pero hasta ahora, más que nada por vagancia, no me había decidido a hacerlo.

Antes de colocar la dirección tienes que pensar que tipo de blog tienes y el uso que le quieras dar, dependiendo de esto puedes colocar tu dirección de correo habitual o bien crear una a propósito. Independientemente de lo que decidas debes saber que cada vez que publicas tu dirección en algún sitio estás creando una nueva fuente de entrada de spam. Los spammers tienen robots que se dedican a rastrear las páginas web en busca de direcciones de correo-e para añadirlas a sus bases de datos y enviarte (todavía más) spam. Si bien los filtros anti-spam funcionan bastante bien hay una opción sencilla para evitar que los robots puedan reconocer la direcciones de correo, lo único que hay que hacer es convertir tu dirección de correo en una imagen. Yo conozco tres servicios web que hacen esto automáticamente:

  1. Hide Text
  2. Nexodyne
  3. Safe Mail

Los tres servicios funcionan igual, introduces tu dirección de correo en el formulario, ajustas alguna opción del tamaño de letra y color del texto y le das a siguiente. Los tres se comprometen a no vender nunca tu dirección y a alojar la imagen de forma indefinida en sus servidores para poder servirla desde su servidor. En el primero de ellos da la opción de borrar la imagen una vez creada, para que no este alojada más en su servidor. En los tres tienes la opción de descargar la imagen para alojarla en tu propio hosting.

Si quieres usarlos simplemente prueba como queda la imagen con unos y con otros y escoge el que más te guste. Luego te recomiendo que la descargues (y si usas Hide Text la borres) y la subas a tu hosting. Es mejor servirla desde tu hosting para minimizar dependencia de terceros y porque el consumo de ancho de banda va a ser muy escaso. Desde ese momento, suponiendo que la imagen esté por ejemplo en http://conocimientoabierto.es/img/correo-e.png, para incluirla en un comentario en un blog debes usar la etiqueta html img, quedaría así

Si quieres puedes probar como queda dejando un comentario en esta entrada o escribiéndome a mi correo <img src=”http://conocimientoabierto.es/img/correo-e.png”>

Si quieres puedes probar como queda dejando un comentario en esta entrada o escribiéndome a mi correo

Por supuesto, en lugar de usar estos servicios puedes arrancar el gimp (o el paint si todavía usas Windows) y crearla la imagen tu mismo porque es muy sencillo. Esta es la mejor opción desde mi punto de vista.

Problemas:

  • La opción de pinchar con el botón para que automáticamente se abra el cliente de correo desaparece.
  • No se puede copiar y pegar la dirección, lo que es un pequeño incordio.
  • La imagen que uses, tamaño, colores, … puede romper la maquetación de la página donde la uses

Existe una técnica más sencilla que la de usar imágenes consistente simplemente en ofuscar tu dirección de correo usando texto en lugar de símbolos de modo que no sea reconocida por los bots. Por ejemplo en lugar de mail_falso@hosting_falso.no usa:

  1. mail_falso <at> hosting_falso <dot> no
  2. mail_falsoANTISPAM@hosting_falso.no
  3. mail_falso <ARROBA> hosting_falso.no
  4. o alguna combinación

Si usas este método te recomiendo emplear la tercera opción, puesto que hay mucha gente que puede no reconocer el texto <at&gt como sinónimo de arroba o entender que el texto ANTISPAM no forma parte de la dirección real. Desconozco hasta que punto la opción de ofuscar la dirección es válida, dado que a los spammers no creo que les cueste mucho reprogramar su software para reconocer este tipo de truquillos, pero en principio me parece que esto es más cómodo para el usuario que usar imágenes.

Como siempre la decisión última dependerá del uso que cada uno vaya a darle. Yo personalmente, he decidido pasar de usar imágenes, el spam está ahí y el volumen de tráfico que te va a evitar usar imágenes no creo que compense la incomodidad para el usuario o para ti al tener que usar etiquetas html/bbcode para introducir tu correo en lugar de escribir el texto directamente.

Otro día seguiremos con algunas técnicas sencillas para no tener que dar nuestra dirección real cuando nos registramos en un foro o una de esas páginas que apenas vamos a usar un par de veces. Subscríbete a mi RSS para estar al día.

Como usar FeedBurner para servir nuestro feed

Jueves, Septiembre 10th, 2009
feedburner Feedburner es un servicio web propiedad de Google que se encarga de redistribuir nuestros feeds. Es algo así como si feedburner se subscribiera al feed que proporcionamos desde nuestro blog, luego volviera a distribuirlo y nosotros indicamos a nuestros lectores que se conecten a través de esa segunda versión de nuestro feed y no a través del que proporcionamos directamente en el blog. La ventaja de esto es que ahorramos ancho de banda y que Feedburner puede proporcionarnos estadísticas interesantes de los lectores. La parte mala es que pasamos a tener cierta dependencia de un servicio externo y una disminución de la privacidad puesto que google pasa a poder recolectar información sobre nuestros lectores.

Feedburner estuvo de modo hace un par de años cuando el ancho de banda era un bien escaso y las empresas de hosting eran caras, en la actualidad no resulta en general necesario. Desde mi punto de vista el único motivo para usarlo sería por el de las estadísticas, tu debes valorar si la información que proporciona compensa el ceder datos a google.

Si te decides a usarlo, una forma de minimizar el impacto de la dependencia externa es activar la característica My Brand, en este artículo se explica como activar FeedBurner con My Brand para nuestro blog.

Antes de continuar, debes tener presente dos cosas

  • Para poder usar My Brand tienes que añadir un registro CNAME a las dns de tus dominios, mira en las páginas de ayuda de tu hosting como hacerlo. Generalmente se encuentra en el apartado Dominios o “Gestión de DNS” y es fácil, pero es bueno que mires como hacerlo antes de meterte en faena
  • Las direcciones que se indican aquí para los feeds por defecto de wordpress del tipo dominio.com/feed y dominio.com/comments/feed son sólo válidas si tenemos activados los permalinks de wordpress. Si no los tienes activados deberás usar la dirección dominio.com?feed=rss2 y dominio.com/wp-commentsrss2.php. Si los permalinks están customizados también puedes usar el otro tipo de dirección pero es mejor usar la customizada.

Pasos para servir nuestro feed a través de Feedburner

Entramos en feedburner.com con nuestra cuenta de gmail. Si no tenemos una podemos crear una cuenta de google allí mismo.

feedburner - my brand - Imagen 1

En el formulario que aparece en mitad de la página escribimos la dirección de nuestro blog (en el ejemplo usamos la página www.marinerosbouzas.com, y pulsamos en siguiente [Imagen 1, puedes pinchar sobre las imágenes para ampliarlas]. Dejamos seleccionado el usar rss en lugar de atom (esto no importa) y pulsamos siguiente.

feedburner - my brand - Imagen 2

En esta pantalla [Imagen 2] escogemos un título para el feed, generalmente el nombre del blog. Feed address es la dirección desde la que serviremos nuestro rss a partir de ahora así que es bueno que escojamos algo fácil y significativo, por ejemplo feeds.feedburner.com/tudominio.

Por defecto feedburner contabiliza la cantidad de usuarios subscritos a nuestros feeds. En las siguientes pantallas tenemos la opción de activar el clickthrougs, es decir contabilizar el número de veces que los lectores acceden a nuestra web por pinchar en el feed. Yo no lo activo por que significa que feedburner añadirá un código html algo intrusivo en nuestros feeds para poder trazar lo que hacen nuestros lectores. Hay más opciones pero las que están por defecto suelen ser adecuadas para la mayoría

feedburner - my brand - Imagen 3

Si además del feed de los posts, queremos que el de los comentarios se sirva también a través de feedburner volveremos al inicio e introduciremos la dirección http://tudominio.com/comments/feed, en este caso http://marinerosbouzas.com/comments/feed, y en la siguiente pantalla escogemos como feed address feeds2.feedburner.com/comentarios_tudominio (en este caso feeds2.feedburner.com/comentarios_marinerosbouzas) y como feed title “Comentarios para tudominio” por ejemplo [Imagen 3].

A partir de ahora nuestros lectores podrán acceder a nuestro feed a través de http://feeds.feedburner.com/tudominio y a través de http://tudominio.com/feed. Esta última dirección es, por ahora, el valor por defecto que obtendrá alguien que introduzca en su lector de feeds la dirección de nuestro blog. Para hacer que por defecto se sirva el feed a través de feedburner debemos hacer algunos cambios en la plantilla del blog o instalar un plugin. Pero antes de entrar en esto activaremos la característica My brand.

Pasos para activar My Brand

La opción de My Brand permite que la dirección del feed que servimos a través de feedburner sea del estilo http://feed.tudominio.com/tudominio en lugar de http://feeds.feedburner.com/tudominio. Lo bueno de esto es que si alguna vez feedburner quiebra, se vuelve de pago o deja de satisfacernos nuestros lectores estarán subscritos a una dirección sobre la que tenemos el control y no a una externa.

Para activar My Brand pulsamos en My account y después en My brand. Debemos localizar una línea que pone algo parecido a [Imagen 4]

feeds CNAME XXXXX.feedproxy.ghs.google.com

Crearemos un registro CNANE en nuestro hosting que apunte a esa dirección: XXXXX.feedproxy.ghs.google.com (el valor de las XXX dependerán de cada caso)

feedburner - my brand - Imagen 4

De vuelta en la página de configuración de my brand introducimos el valor feeds.tudominio.com (en nuestro caso feeds.marinerosbouzas.com, nótese que no hay que poner el http:// delante) en el campo que aparece en el punto 2 de la imagen 4 y le damos a activar. Por supuesto en lugar de feeds podemos usar el subdominio que queramos.

Con esto hemos activado la dirección feeds.tudominio.com/tudominio para servir el feed de nuestro blog a través de feedburner pero manteniendo la dirección de subscripción bajo nuestro control. Si también servimos los comentarios a través de feedburner estos estarán, sin necesidad de tocar nada más en feeds.tudominio.com/tudominio_comentarios

Modificar nuestro tema para servir por defecto los nuevos feeds

El último paso, es indicar a la gente que accede a tu blog que no quieres que se subscriban a través del feed propio de wordpress si no a través del proporcionado por feedburner. Es posible hacer esto a través de un plugin como FeedSmith, pero si quieres hacerlo a mano tampoco es muy complicado, tan sólo tienes que editar el tema que usas y modificar un par de líneas para hacer referencia a las nuevas direcciones de los feeds. En general tendrás que hacer las modificaciones en dos lugares distintos:

  • Entre las etiquetas < header > que suelen estar en el archivo header.php debes localizar las etiquetas < link > que hagan referencia a los feed y cambiar el valor de href por las nuevas direcciones. Esto es lo que hace que cuando un lector de feeds intente descubrir por si mismo el feed de tu blog lo resuelva correctamente
  • El segundo cambio será necesario cuando en algún sitio del tema indiquemos la dirección directa para subscribirse.

Pasos para el tema default de wordpress

En concreto, particularizando para el tema por defecto que viene con wordpress lo que habría que hacer es:

  • Abrir con un editor de textos el archivo wp-content/themes/default/header.php y buscar las líneas:

    <link rel=”alternate” type=”application/rss+xml” title=”<?php printf(__(’%s RSS Feed’, ‘kubrick’), get_bloginfo(’name’)); ?>” href=”<?php bloginfo(’rss2_url’); ?>” />
    <link rel=”alternate” type=”application/atom+xml” title=”<?php printf(__(’%s Atom Feed’, ‘kubrick’), get_bloginfo(’name’)); ?>” href=”<?php bloginfo(’atom_url’); ?>” />

  • Borrar la segunda, la que pone algo de atom y substituir el texto que está en rojo en la primera por http://feeds.tudominio.com/tudominio
  • En el archivo wp-content/themes/default/footer.php buscar la línea

    <a href=”<?php bloginfo(’rss2_url’); ?>“>RSS das Entradas</a> &amp; <a href=”<?php bloginfo(’comments_rss2_url’); ?>“>RSS dos Comentarios</a>.

  • Substituir lo que está en rojo en la primera por http://feeds.tudominio.com/tudominio. Si también estas haciéndolo para los comentarios substituye también lo que está en rojo en la segunda línea por http://feeds.tudominio.com/tudominio_comentarios.