BeastiePara conectarme a los distintos servicios de mensajería instantanéa utilizo Bitlbee, esto es un gateway por IRC hacia los distintos protocolos que usamos diariamente (Jabber, Oscar, MSN, etc.). Esto me permite mantener integrado en un solo cliente de IRC (en mi caso Irssi), todo lo referido a mensajería instantanea.

El problema

Siempre me conecte a alguno de los servidores públicos de Bitlbee como es el caso de im.bitlbee.org o también testing.bitlbee.org, uno de los problemas que tiene utilizar estos servidores públicos es que se conecta a ellos utilizando el protocolo IRC, que como sabemos viaja en texto plano (legible para el ojo humano) hacia ese servidor público, por lo cual, cualquiera que levante un sniffer en cualquier punto de la ruta hasta el servidor podría leer el contenido de los paquetes que enviamos y perderiamos la privacidad de nuestra comunicación como asi también podria inyectar paquetes o modificarlos on the fly.
Hice una pequeña prueba en mi red local, a fin de ilustrar mejor lo que digo, haciendo un MITM (Man in the middle) y caputrando algunos paquetes con un filtro para conexiones IRC, este es el resultado:

0000  00 22 6b 5e 77 10 00 21  00 d8 d2 3a 08 00 45 00   ."k^w..! ...:..E.
0010  00 58 8f 3d 40 00 40 06  ef 96 c0 a8 01 64 4a d0   .X.=@.@. .....dJ.
0020  ae ef e3 66 1a 0b 53 b9  17 02 73 99 17 54 80 18   ...f..S. ..s..T..
0030  03 ea 4e 89 00 00 01 01  08 0a 00 eb 2a b7 46 67   ..N..... ....*.Fg
0040  21 6e 50 52 49 56 4d 53  47 20 23 53 61 6e 4c 75   !nPRIVMS G #SanLu
0050  69 58 20 3a 63 68 65 20  63 6f 6e 73 74 61 6e 74   iX :che  constant
0060  69 6e 65 20 0d 0a                                  ine ..           

Como vemos en este ejemplo se puede leer el texto "che constatine", de esta forma, estara legible todo texto que enviemos utilizando IRC, o cualquier otro servicio que envie ’sus cosas’ en texto plano, como HTTP, FTP, TELNET, etc.

La solución

Como no queria que mis mensajes viajen de esta forma atravèz de la Internet, y aprobechando que el protocolo libre Jabber soporta cifrado SSL como asi también PGP/GPG, decidi montar un servidor Bitlbee local en una PC de escritorio que utilizo con FreeBSD. De esta forma, aprobechaba las bondades del protocolo Jabber en ofrecerme cifrado y haciendo uso mas seguro del mismo.

Como primera medida, lo que hise fue instalar utilizando los ports el servidor Bitlbee:

#: cd /usr/local/ports/net/irc/bitlbee && make install clean

Vale destacar que el mismo port, soporta las siguientes opciones de configuración:

===> The following configuration options are available for bitlbee-1.2.4:
     DEBUG=Off (default) "Enable debug support"
     IPV6=On (default) "Enable IPv6 support"
     OPENSSL=Off (default) "Use OpenSSL rather than GnuTLS"
     MSN=On (default) "Enable MSN protocol support"
     JABBER=On (default) "Enable Jabber (XMPP) protocol support"
     OSCAR=On (default) "Enable OSCAR (ICQ, AIM) protocol support"
     YAHOO=On (default) "Enable Yahoo! protocol support"

Una vez que termino de compilar e instalar, me dirigi al archivo de configuración del mismo, que se encuentra en /usr/local/etc/bitlbee/bitlbee.conf. Agregue el usuario bitlbee al sistema, para que corra bajo un usuario con los minimos privilegios posibles y procedi a editarlo para dejarlo configurado acorde a mis necesidades. Entre algunas de las opciones destaco las siguientes:

## RunMode:
##
## Inetd -- Run from inetd (default)
## Daemon -- Run as a stand-alone daemon, serving all users from one process.
## This saves memory if there are more users, the downside is that when one
## user hits a crash-bug, all other users will also lose their connection.
## ForkDaemon -- Run as a stand-alone daemon, but keep all clients in separate
## child processes. This should be pretty safe and reliable to use instead
## of inetd mode.
##
RunMode = Daemon
## User:
##
## If BitlBee is started by root as a daemon, it can drop root privileges,
## and change to the specified user.
##
User = bitlbee
## DaemonPort/DaemonInterface:
##
## For daemon mode, you can specify on what interface and port the daemon
## should be listening for connections.
##
DaemonInterface = 10.10.10.2
DaemonPort = 6667
## AuthPassword
##
## Password the user should enter when logging into a closed BitlBee server.
## You can also have an MD5-encrypted password here. Format: "md5:", followed
## by a hash as generated for the attribute in a BitlBee
## XML file (for now there's no easier way to generate the hash).
##
# AuthPassword = ItllBeBitlBee ## Heh.. Our slogan.
## or
AuthPassword = md5:29d00d11345256s34466a6139f0370


Respecto al password para autenticarse soporta hashes md5, que si bien no es el algoritmo de hashing mas seguro, al menos nos proporciona una capa de seguridad.
Ahora solo queda iniciar el daemon, para comenzar a utilizar nuestro servidor bitlbee:

#: /usr/local/etc/rc.d/bitlbee start

Y listo :D , ya tenemos un servidor Bitlbee local en el cual configuraremos nuestras cuentas de mensajeria instantanéa aprobechando las bondades de utilizar protocolos como Jabber que al menos nos proveen una capa de encriptado.

Tags: , , , ,

Creative Commons License
Esta obra es publicada bajo una licencia Creative Commons.