martes, 27 de abril de 2010

Crear sistemas de archivos cifrados con Ubuntu

Existen varias formas de cifrar sistemas de archivos en Linux, de hecho en la siguiente url https://help.ubuntu.com/community/EncryptedFilesystems se pueden consultar guías para realizarlo en Ubuntu.

Como ejemplo vamos a utilizar una forma sin entrar en discusiones de si es la mejor o la peor.

Primero vamos a crear un archivo con datos aleatorios que será el que contenga el sistema de archivos y que cifraremos para que nadie pueda ver su contenido.

Para hacer la prueba vale con un archivo de 100MB.

sudo dd if=/dev/urandom of=almacen bs=1M count=100

Ahora asociamos un dispositivo de tipo loop con el archivo que contendrá el sistema de archivos cifrado. Hay que hacer esto porque vamos a tratar el archivo como un dispositivo de bloques (dispositivo loop + archivo = dispositivo de bloques). Esto se consigue con el comando losetup y como se va a cifrar hay que especificar el algoritmo de cifrado. En esta caso se va a usar Blowfish con clave de 2048 bits. Existe mas algoritmos: XOR, AES128, AES192, AES256, twofish128, twofish160, twofish192, twofish256, blowfish128, blowfish160, blowfish192, blowfish256, serpent128, serpent192, serpent256, mars128, mars192, mars256, rc6-128, rc6-192, rc6-256, tripleDES,...

sudo losetup -e blowfish2048 /dev/loop0 almacen

En este momento hay que introducir la contraseña que se usara para proteger la clave que se va a generar para cifrar los datos. Si se obtienen el siguiente error: "ioctl: LOOP_SET_STATUS: No existe el fichero ó directorio" es necesario instalar el modulo para el cifrado que se va a utilizar.

sudo apt-get install loop-aes-utils
sudo losetup -e blowfish2048 /dev/loop0 almacen

Ahora hay que crear el sistema de archivos (dar formato) dentro del archivo.

sudo mkfs -t ext3 /dev/loop0

Lo siguiente es crear un punto de montaje para el sistema de archivos encriptado y montarlo.

sudo mkdir /mnt/cifrado
sudo mount -t ext3 /dev/loop0 /mnt/cifrado

A partir de este instante todo lo que se guarde en /mnt/cifrado quedara cifrado e inaccesible si no se tiene la contraseña. Así que cuidado con perderla.

Para terminar, una vez que ya se ha terminado de usar el sistema de archivos, hay que desmontarlo y eliminar la asociación entre el dispositivo loop y el archivo que contiene el sistema de archivos.

sudo umount /mnt/cifrado
sudo losetup -d /dev/loop0

lunes, 26 de abril de 2010

Video Streaming P2P con Veetle

Veetle es una aplicación gratuita que permite ver o transmitir vídeo en streaming utilizando tecnología P2P. Es muy fácil de usar y solo es necesario bajarse un plugin para el navegador.

Entre sus características están:
  • Hacer streaming público o privado
  • Crear una programación.
  • Usar varios tipos de orígenes de datos: archivos, DVD, sintonizadoras de TV o webcam.

Los resultados son excelentes. En las pruebas que he realizado he tenido 975 clientes y solo ha consumido de media 400 kbps de subida.

Le veo muchas posibilidades. Puedes probarlo en http://veetle.com

Los números primos en la serie Numb3rs.

En este capitulo de Numb3rs se trata el hipotético caso de una persona que consigue un algoritmo matemático capaz de factorizar el producto de dos números primos grandes.

viernes, 23 de abril de 2010

¡Tranquilos!, tengo copia de seguridad.

Como siempre he dicho no hacer copias de seguridad de los datos importantes es de tontos, pero hacerla y no saber guardarla en lugar seguro también.

Tampoco digo que se use una caja fuerte, pero por lo menos no llevarla en la misma bolsa que los originales.

Este cartel lo encontré en una farola.


Y un posteriormente lo encontré en un muro. En esta foto se puede leer mejor.



Espero que recupere su portátil.

jueves, 22 de abril de 2010

Redirigir a distintas URLs en función del navegador usado.

A veces cuando entras con el navegador en una pagina web obtienes el resultado esperado, pero si lo haces con telnet o con un web spider te manda a otra web distinta. Esto es debido a que se ha configurado el servidor para permitir el acceso a personas y no a programas que descarguen la web completa.

El funcionamiento es sencillo. En Apache por ejemplo se utiliza el modulo rewrite para comprobar las cabeceras enviadas por el cliente. Si se trata de un navegador se deja pasar y sino se redirige a otra web.

En el manual de Apache se puede ver como utilizarlo: URL Rewriting Guide - Advanced topics

Pues si es fácil hacerlo, es más fácil saltárselo. Si lo que comprueba es la cabecera http User-Agent, lo único que hay que hacer es añadirla en el caso del telnet o decirle al web spider que use otra distinta.

Cuando usamos el telnet tendriamos que hacer lo siguiente:

telnet www.google.es 80
> GET / HTTP/1.1
> Host: www.google.es
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9
>

Y cuando usamos wget:

wget --header='Host: www.google.es' --header='User-Agent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9' www.google.es

Ver la dirección IP de los usuarios de facebook

Cuando un usuario de facebook escribe en tu muro, o te envía un mensaje, recibes automáticamente un email de notificación. En el código fuente del email hay una cabecera llamada X-Facebook que contiene la dirección IP del usuario codificada en Base64 (texto en color rojo).

X-Facebook: from zuckmail ([ODUuNjcuMTQyLjE0MQ==])
by www.facebook.com with HTTP (ZuckMail);

Conversor Base64: http://farhadi.ir/works/base64

Moraleja: No escribas en muros ajenos ni mandes mensajes a quien no conozcas.

IDOS: Indirect Denial Of Service

Básicamente se trata de un ataque de denegación de servicio que ataca a los activos alojados en servidores externos usados por el servidor víctima del ataque.

Pongamos un ejemplo: imaginemos que queremos atacar un sitio web que contiene enlaces a vídeos alojados en otro sitio web y que este sitio web tiene una opción que permite denunciar un vídeo y al denunciarlo se bloquea hasta que sea revisado; durante el periodo de revisión, el enlace del sitio víctima apuntará a un vídeo que no está disponible en el servidor donde está alojado. Si hacemos lo mismo con todos los vídeos...Pensarlo vosotros.

miércoles, 21 de abril de 2010

Instalación de una red social usando Elgg

Elgg es una plataforma de redes sociales open source que podemos utilizar para crear nuestra propia red social al estilo facebook, twiter o twenti.

Para instalarla necesitamos:
  • Apache con el modulo rewrite activado.
  • MySQL 5+.
  • PHP5.2+ como modulo de Apache y los módulos GD, JSON y Multibyte String.
Estos requisitos se pueden consultar en la página oficial de Elgg http://www.elgg.org. Igualmente el la página oficial se puede encontrar una guía de instalación y el enlace para la descarga, tanto en zip como en tarball (tar.gz).



A pesar de tener una guía paso a paso del proceso de instalación, dependiendo de la distribución Linux y del software instalado puede resultar mas o menos difícil conseguir que funcione.

Supongamos que disponemos de un Ubuntu 9.10 con Apache 2, MySQL y PHP5 instalados desde los repositorios de Ubuntu. Lo mas probable es que falte el modulo php5-gd, el resto de módulos php5 necesarios se instalan por defecto al instalar php5.

Lo primero que vamos a hacer es preparar Apache para instalar Elgg. En nuestro sistema el directorio de publicación por defecto es /var/www. En este directorio vamos a crear dos directorios, /var/www/elgg y /var/www/data. Al directorio /var/www/data le vamos a poner permisos 775 y el grupo www-data que es el grupo con el que se ejecuta Apache. En la configuración del servidor cambiamos la directiva DocumentRoot y Directory para usar el directorio /var/www/elgg .



Ahora vamos a configurar el servidor MySQL. Nos conectamos como root al servidor y creamos una base de datos llamada elgg (create database), creamos un usuario llamado elgg con password elgg (create user) y le damos permisos al usuario elgg sobre la base de datos elgg (grant).




Ahora entramos con el navegador a http://127.0.0.1/ para completar la instalación vía web. Introducimos los datos de la base de datos:
  • usuario: elgg
  • password: elgg
  • base de datos: elgg
  • servidor:localhost
Y guardamos. Como el servidor no puede escribir en el directorio /var/www/elgg/ hay que crear los archivos /var/www/elgg/engine/settings.php y /var/www/elgg/.htaccess manualmente copiando el contenido que aparece en la página web. Una vez creados, recargamos la página. En este punto aparecerá un error indicando lo siguiente: "/action/systemsettings/install was not found on this server".
Esto es por que se esta ignorando el archivo .htaccess o porque no esta habilitado el módulo rewrite en apache.



Como por defecto la configuración de apache ignora el archivo .htaccess es necesario modificarla para que con la directiva AllowOverride se permita al archivo .htaccess modificar la configuración. Mirando un poco el archivo se puede deducir que opciones tenemos que permitir, así que nada de poner AllowOverride All.



También hay que tener en cuenta que el archivo .htaccess hace referencia al modulo rewrite de Apache y por lo tanto hay que activarlo. Esto se hace creando un enlace simbólico en el directorio /etc/apache2/mods-enables que apunte al archivo /etc/apache2/mods-available/rewrite.load.




Y para finalizar volvemos al navegador y completamos la instalación siguiendo los pasos: rellenar los datos de la red social y crear el primer usuario, que también sera el administrador. Lo siguiente es iniciar sesión con el administrador y administrar la red social.


martes, 20 de abril de 2010

Introducción a la configuracion de Apache 2 en Ubuntu 9.10 (karmic)

Esta introducción de la configuración del servidor web apache es para aquellas personas que han usado apache desde el código fuente o desde distribuciones como RedHat, Fedora o CentOS y ahora se pasan a Ubuntu.

Cuando se instala el servidor web apache2 en Ubuntu 9.10 se utiliza como directorio de publicación /var/www y como directorio de configuración /etc/apache2.

Dentro del directorio de configuración podemos encontrar varios archivos, cosa extraña para aquellos habituados al httpd.conf de la instalación de apache desde el código fuente.

El archivo apache2.conf contiene la configuración proporcionada por Ubuntu y por lo general no es necesario tocarlo. Si se quieren hacer cambios en la configuración general del servidor se pueden hacer en el archivo httpd.conf que seguramente estará vació.

La configuración/instalación de los módulos se realiza mediante los directorios mods-enabled y mods-available. Para activar un modulo lo único que hay que hacer es crear dentro del directorio mods-enabled un enlace simbólico que apunte al archivo .load del directorio mods-available usando el mismo nombre.

Para modificar la configuración de los sitios hay que utilizar los directorios sites-enabled y sites-available. El sitio que viene definido por defecto es sites-enabled/000-default.