domingo, 20 de mayo de 2012

usando la nube con sentido común y p7zip

Al hilo del anterior post ( usando la nube con sentido común y aespipe ), y después de investigar un poco, voy a explicar algo más la última nota del artículo, porque creo que quedó bastante escueta y aislada, y merece profundizar un poco más ;)

p7zip Es, hoy por hoy, mi utilidad favorita para comprimir. Es la versión, en línea de comandos, de 7zip para sistemas POSIX. Es open source, consigue muy buenos ratios de compresión, usa varios núcleos, soporta un montón de formatos y puede cifrar usando AES-256.

*Si lo que queremos es comprimir con contraseña, el script se puede adaptar cambiando la línea de aespipe por el comando que queramos ejecutar. Por ejemplo, para comprimir con contraseña usando p7zip y header encryption (mhe=on):
7z a -r -mhe=on -pCONTRASEÑA $i.7z $i

Esta nota, hace referencia a compimir con contraseña usando p7zip, lo que yo no sabía cuando lo escribí es que, de forma resumida, viene siendo un "comprimir y cifrar para vagos".

Cuando comprimimos con p7zip y usamos contraseña, p7zip aplica una función de derivación basada en SHA-256 a la contraseña, y usa el resultado como clave para cifrar con el algoritmo AES-256.

Resumiendo, sería parecido al método explicado usando aespipe, pero todo en uno ;)

domingo, 13 de mayo de 2012

usando la nube con sentido común y aespipe

Con el reciente auge de los servicios de almacenamiento "gratuítos" en la nube, dropbox, skydrive, google drive... Aparecen unas posibilidades de uso interesantes. Una de ellas es la de usarlos para guardar pequeños backups o utilidades a las que poder acceder desde cualquier sitio con conexión a internet.

Llegados a este punto, deberíamos reflexionar sobre qué información almacenar en este tipo de servicios. Si la información es de carácter crítico, almacenarla en un servicio de este tipo, no es buena idea. En este caso sería más conveniente utilizar un servicio de almacenamiento de pago, o contratar los servicios de una empresa de backuping, con unos términos de uso claros y definidos que garanticen que nuestra información no será accedida por ninguna persona, OCR, bot...

Una vez decidida la información que queremos almacenar en la nube, no todo lo que subamos va a tener el mismo nivel de relevancia o privacidad. Deberíamos clasificar la información, y definir unas políticas de seguridad claras en base a cada tipo. Es decir, no es lo mismo subir unos ebooks, subir unos ficheros de configuración, subir algún proyecto personal o subir una lista de passwords. Por eso habrá que separar la información, básicamente en dos grupos, la que nos da igual que se vea o sea indexada, y la que queremos que permanezca totalmente privada.

Para evitar miradas ajenas sobre la información que queremos que se mantenga privada, tenemos varias alternativas. Entre ellas:

  • Subir el contenido comprimido con contraseña (y confiar en que no se van a realizar ataques de fuerza bruta).
  • Cifrar, cifrar y cifrar

Como la segunda es más segura que la primera, para este punto, tendremos varias posibilidades:

  1. Truecrypt: Todo un clásico y un indispensable en nuestros ordenadores, está claro. La parte mala de usar truecrypt es que requiere crear volúmenes/contenedores de datos, y por pequeños que sean, suponen una gran descarga de datos adicional. Es decir, si el fichero que nos queremos bajar es de 500Kb, por pequeño que sea el contenedor de truecrypt (50Mb, 10Mb?),descargarse el contenedor entero, supone una descarga de datos inmensa en relación con el tamaño del fichero.
  2. GPG: Otro clásico. Una buena elección para cifrar fichero por fichero, siempre que seas ordenado, y guardes y exportes correctamente tus claves gpg. (No es mi caso ;))
  3. Aespipe: Aespipe es una utilidad para cifrar fichero a fichero. Crea ficheros .tar o .cpio cifrados. Lo mejor de usarlo, es que los ficheros mantienen su tamaño original. Aespipe puede trabajar usando claves gpg, aunque no voy a centrarme en este caso, por lo comentado en el punto anterior.

Si escogemos aespipe, éste trabaja, por defecto, en su modo recomendado multi-key-v3, que requiere una clave con una longitud mínima de 20 caractereres. Llegados a este punto, podemos optar por usar una clave del tipo "googlemecagontostusmuertosnomiresloqueguardo", o escoger una clave (segura) que usemos habitualmente, que no llegue a los 20 caracteres y cifrarla, por ejemplo con un SHA.

$ echo -n nuestrapass | sha512sum
c9087d475d0307f2e4130f0d919084366c4572eb2ef88df62d560ba01d40a3d8ddf1c9186662903d3d27e164b6cf4acf5e1400095d3814716ac5176a756f84fe -

Con esto conseguimos una clave que supera ampliamente los 20 caracteres, y que podremos generar en cualquier equipo que utilicemos, recordando, simplemente, nuestra clave y el algoritmo de cifrado.

Si vamos a cifrar un solo fichero, copiar y pegar la pass es suficiente. Pero si vamos a cifrar varios ficheros, podemos guardar la contraseña en un fichero que almacenaremos de forma temporal y que le pasárselo a aespipe como parámetro:

  1. Exportar la clave al fichero:
    $ echo -n nuestrapass | sha512sum | cut -d " " -f1 >> passParaLaNube.txt
  2. Pasarle el fichero con la clave a aespipe como parámetro:
    $ aespipe -e aes256 -P passParaLaNube.txt ficheroCifrado.tgz
  3. Descifrar el fichero:
    $ aespipe -e aes256 -d -P passParaLaNube.txt fichero

Si vamos a cifrar una cantidad considerable de ficheros, podemos automatizar la tarea con un pequeño script en bash:

#!/bin/bash
for i in *;
do 
   if [ $i != script -a $i != passParaLaNube.txt ];
   then
      aespipe -e aes256 -P passParaLaNube.txt <$i >$i.tgz
   fi;
done;

*script es el nombre del script

*passParaLaNube.txt es el nombre del fichero con la contraseña para aespipe

*Si lo que queremos es comprimir con contraseña, el script se puede adaptar cambiando la línea de aespipe por el comando que queramos ejecutar. Por ejemplo, para comprimir con contraseña usando p7zip y header encryption (mhe=on):
7z a -r -mhe=on -pCONTRASEÑA $i.7z $i
(También habría que quitar -a $i != passParaLaNube.txt de la condición de evaluación del if ;) )

(Segunda parte) usando la nube con sentido común y p7zip

domingo, 8 de abril de 2012

activar los botones apagar, reiniciar, suspender e hibernar en debian xfce4 + xdm, editando un par de líneas


Si tienes xfce4 con xdm como display manager, te habrás encontrado con que los botones apagar y reniciar están sombreados ( "greyed out" / "greyed" ) o deshabilitados.

En mi caso la documentación de xfce4 no funcionó, ni las soluciones alternativas propuestas en los wikis de xfce4, qué decir de soluciones (a veces un tanto esotéricas) vistas a lo largo de una interminable lista de foros... Al final, después de mucho insistir y probar, encontré la solución.

Los botones apagar, reiniciar, suspender e hibernar, se pueden activar sólamente editando un par de ficheros relativos a policykit.

(Sí, es cierto, hay que tener instalado policykit, consolekit y upower)

Botones apagar y reiniciar


Tenemos que editar el fichero org.freedesktop.consolekit.policy en /usr/share/polkit-1/actions/ (como root)

rubenhortas@blog:~$ sudo vim /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy

Y añadir:<allow_any>yes</allow_any> al final de la sección <default> en las secciones "Stop the system" y "Restart the system"





No lo he añadido en las secciones para cuando hay múltiples usuarios en el sistema, por razones obvias ;)


Suspender e Hibernar


Tenemos que editar el fichero org.freedesktop.upower.policy en /usr/share/polkit-1/actions

rubenhortas@blog:~$ sudo vim /usr/share/polkit-1/actions/org.freedesktop.upower.policy

Añadir <allow_any>yes</allow_any> al final de la sección <default> en las secciones "Suspend the system" e "Hibernate the system"


Inmediatamente después de guardar los cambios estarán activos

domingo, 1 de abril de 2012

instalar torrentflux-b4rt + transmissioncli + lighttpd + sqlite en un seedbox

Si alguno tiene un seedbox, está sopesando la posibilidad de adquirir uno, o quizá de montarse uno a nivel doméstico, puede que le interese esto.

La idea es montar un servidor de torrents (en un entorno sin X) ligero y fácilmente manejable (incluso multiusuario) a través de una interfaz web.

Después de ojear las alternativas, ventajas/desventajas, consumo de recursos y rendimiento, para este ejemplo, me he decidido por montar torrentflux-b4rt + lighttpd + sqlite + transmissioncli.

Ahora sólo hay que instalarlos todos y ponerlos a trabajar como un equipo! ;)

Instalando las aplicaciones


Lo primero que tenemos que hacer es instalar las aplicaciones que vamos a necesitar:
  • lighttpd
  • Servidor web muy ligero. Optimizado para entornos dónde la velocidad es importante.
  • sqlite
  • Sistema de gestión de base de datos pequeño y ligero.
  • php5 (cgi + cli + sqlite)
  • python

Y también instalaremos unas cuantas herramientas que nos permitirán extender las funcionalidades de torrentflux-b4rt.
  • bzip2
  • Para comprimir/descomprimir archivos
  • unrar
  • Para descomprimir archivos .rar
  • unzip
  • xdeview
  • Decodificador para archivos codificados en formato: uuencode, xxencode, BASE64, «quoted printable» y BinHex. !La documentación que he visto por ahí, requiere uudeview, pero ahora se encuentra en el paquete xdeview.
  • cksfv
  • Verificación siemple de archivos.

Para instalar todo:

rubenhortas@blog:~$ sudo aptitude install lighttpd sqlite php5-cgi php5-cli php5-sqlite python bzip2 unrar unzip uudeview cksfv


Activar el soporte de PHP5 en lighttpd


Para esto tendremos que editar un par de archivos (como root):
  1. fichero php.ini

  2. rubenhortas@blog:~$ sudo vim /etc/php5/cgi/php.ini

    En este fichero tenemos que buscar la línea ";cgi.fix_pathinfo = 1" y descomentarla. Para descomentarla basta con quitar el ';'. También se puede pegar una nueva línea "cgi.fix_pathinfo = 1".

  3. fichero lighttpd.conf

  4. rubenhortas@blog:~$ sudo vim /etc/lighttpd/lighttpd.conf

    En este fichero hay que añadir unas cuantas líneas.

    1. Añadir la línea "mod_fastcgi" en la sección "server.modules"
    2. Añadir las líneas:
      fastcgi.server = (".php" => ((
                        "bin-path" => "/usr/bin/php5-cgi",
                        "socket" =>"/tmp/php.socket"
                        )))
      
      al final del archivo.

Hay que reiniciar lighttpd para que coja los cambios:

rubenhortas@blog:~$ sudo /etc/init.d/lighttpd restart

Comprobar que lighttpd y php están funcionando


Para comprobar si lighttpd está funcionando, ponemos la dirección ip del seedbox (o el nombre ,si tiene) en la barra de direcciones de nuestro navegador. Si vemos la página "placeholder page" está funcionando.
Para comprobar si php está funcionando podemos crear un fichero /var/www/info.php que sólo contenga la siguiente línea:
<?php phpinfo(); ?>
Si está todo correcto saldrá la informacíón del sistema al acceder a "http://ip.del.seedbox/info.php".
Ahora, es recomendable borrar los dos ficheros (lighttpd.html e info.php) y crear otro index.html.

Instalar y configurar torrentflux-b4rt


Descargar la última versión de: http://developer.berlios.de/project/showfiles.php?group_id=7000&release_id=14392

!En este howto, la versión usada será torrentflux-b4rt_1.0-beta2.tar.bz2
Para bajarlo elegimos la versión, hacemos clic en el enlace, se abre una nueva pestaña y dónde pone "Problems with the download? Please use this direct link, or try another mirror." copiamos el enlace al que apunta "direct link" y descargamos con wget.

rubenhortas@blog:~$ wget http://downloads.sourceforge.net/project/tf-b4rt.berlios/torrentflux-b4rt_1.0-beta2.tar.bz2

Descomprimimos el archivo:

rubenhortas@blog:~$ tar jxvf torrentflux.tar.bz2

Creamos el directorio dónde va a trabajar torrentflux-b4rt:

rubenhortas@blog:~$ sudo mkdir /var/www/torrentflux

Le damos permisos sobre el directorio al usuario www-data, que va a ser el que maneje torrentflux-b4rt, y necesita permisos para crear la bases de datos, archivos, etc...

rubenhortas@blog:~$ chown -R www-data:www-data /var/www/torrentflux/

rubenhortas@blog:~$ chmod -R 664 /var/www/torrentflux/

Copiamos el contenido del directorio "html/" de torrentflux-b4rt al directorio donde va a estar instalado

rubenhortas@blog:~$ sudo cp -r torrentflux-b4rt_1.0-beta2/html/* /var/www/torrentflux/

Ahora configuramos torrentflux-b4rt, desde la propia interfaz web, introduciendo "http://ip.del.servidor/torrentflux/" en la barra de direcciones del navegador. La configuración es del tipo "siguiente, siguiente" ;)

!La configuración mediante el interfaz web, en principio, no debería dar ningún problema. Pero a veces da problemas con la base de datos. Lo primero es comprobar que el usuario www-data tenga permisos sufcientes sobre el directorio donde está instalado torrentflux-b4rt. Si los tiene y tenemos problemas creando la base de datos, lo único que tenemos que hacer es crearla con sqlite:

rubenhortas@blog:~$ sqlite torrentflux.db

Sólo crearla, inmediatamente después salimos. Las tablas ya las va a crear automáticamente torrentflux-b4rt.
sqlite> .exit


Instalando transmission


El último paso que nos queda es instalar el cliente encargado de manejar los torrents. Torrentflux-b4rt soporta varios, para este artículo he elegido transmissioncli, por estar perfectamente integrado y ser muy ligero.
Bajamos el código fuente de transmission de http://www.transmissionbt.com/download/.
Para que torrentflux-b4rt pueda manejar transmission, necesita una versión parcheada de éste, el último parche es para la 1.06, así que una vez en la página, seleccionamos "Older tarballs" y la bajamos

rubenhortas@blog:~$ wget http://download-origin.transmissionbt.com/files/transmission-1.06.tar.bz2 Que es la última para la que hay parche

Descomprimimos el paquete

rubenhortas@blog:~$ tar jxvf transmission-1.06.tar.bz2

Y lo parcheamos. Para parchearlo vamos al directorio dónde hayamos descomprido el fichero de torrentflux-b4rt

rubenhortas@blog:~$ cd ruta/al/fichero/torrentflux/clients/transmission

Descomprimimos el fichero que hay dentro:

rubenhortas@blog:~$ tar jxvf Transmission-1.06_tfCLI-svn3356.tar.bz2

Y aplicamos los parches de torrentflux-b4rt para transmissioncli

rubenhortas@blog:~$ cp torrentflux-b4rt_1.0-beta2/clients/transmission/Transmission-1.06_tfCLI-svn3356/cli/* transmission-1.06/cli/

!Suponiendo que hayamos descomprimido los dos archivos en el mismo directorio
Y ahora compilamos transmission. Para compilarlo es necesario instalar las dependencias de transmission:

rubenhortas@blog:~$ sudo aptitude install build-essential automake autoconf libtool pkg-config intltool libcurl4-openssl-dev libglib2.0-dev libevent-dev libappindicator-dev

Entramos al directorio y compilamos

rubenhortas@blog:~$ cd /descargas/transmission...

rubenhortas@blog:~$ ./configure -q && make -s

rubenhortas@blog:~$ make

rubenhortas@blog:~$ sudo make install

Y el resultado, al entrar en http://ip.del.seedbox/torrentflux es...

domingo, 25 de marzo de 2012

evitar spam telefónico en android

Al hilo del post Construyendo un sistema firewall/antispam telefónico que leía hace unos días en security by default, donde también mencionan como evitar el spam vía SMS, supongo que no soy el único cansado de recibir llamadas de spam y/o llamadas indeseadas en el móvil. Por eso, hoy rescato un truco que en su día me enseñó @ionlitio para evitar el spam telefónico en teléfonos con android sin tener que instalar ninguna aplicación.


Lo primero es crear el contacto Spam (sí, el nombre es muy original)

Después le metemos todos los números de los que no queramos recibir llamadas

Por último, marcamos la casilla "Enviar llamadas directamente como mensaje de voz"

Con esto, conseguiremos que cada vez que nos llame alguno de esos números indeseados, a ellos les suene el tono de número ocupado, y a nosotros no nos suene nada >;)

domingo, 4 de marzo de 2012

configurar el teclado de un macbook en debian



Un error un poco molesto que me encontré después de instalar debian en el macbook, es que había dos teclas cambiadas. Concretamente la tecla con los carácteres 'ºª\' y la tecla con los carácteres '<>'

Para solucionarlo, basta con crear un archivo, por ejemplo, en el home, llamado .xmodmap y añadir las siguientes líneas:



!Intercambio de teclas
keycode 94 = masculine ordfeminine masculine ordfeminine backslash backslash
keycode 49 = less greater bar brokenbar

Por último, hay que añadir el comando "xmodmap /ruta/al/archivo/.xmodmap" a los programas que se ejecutan al inicio de sesión y solucionado ;)

martes, 28 de febrero de 2012

en la brecha

Me complace anunciaros que, desde hoy, estoy en la brecha. Una nueva sección en el blog de psi-udc, gestionado por Nino, uno de mis "top 3 profesores", tanto por sus conocimientos, como por su forma de enseñar, como a nivel de persona.

Esta sección está dedicada a referencias vinculadas con mundo de la seguridad mantenidas por alumnos de la FIC.

Si formas parte de este grupo, anímate!