Professional Documents
Culture Documents
UNIDAD 6
Introduccin
La mensajera instantnea es una forma de comunicacin en tiempo real entre dos o ms usuarios por medio de texto. El texto es enviado a travs de dispositivos conectados a una red o Internet. Se basa en el modelo cliente-servidor y se diferencia del correo electrnico en que las conversaciones se realizan en tiempo real, es decir, los intervinientes deben estar conectados y en linea. La mayora de los servidores ofrecen la funcionalidad del "aviso de presencia", indicando cuando el cliente de un usuario que est en la lista de contactos se conecta, se desconecta o si est disponible para mantener una conversacin. En los primeros clientes de mensajera instantnea, cada letra era enviada segn se escriba y as, las correcciones de las erratas tambin se vean en tiempo real. Esto daba a las conversaciones mas la apariencia de una conversacin telefnica que de un intercambio de texto. En los programas actuales, habitualmente, se enva cada frase al terminar de escribirse. Adems, en algunos, tambin se permite dejar mensajes aunque la otra parte no est conectada, al estilo de un contestador automtico. Otra funcin que tienen muchos servidores es el envo de ficheros y la comunicacin por voz. Gran parte de los servidores que ofrecen este servicio usan redes y protocolos propietarios. Sin embargo, hay programas de mensajera instantnea que utilizan el protocolo abierto XMPP, con un conjunto descentralizado de servidores. Los clientes de mensajera instantnea ms utilizados son ICQ, Yahoo! Messenger, Windows Live Messenger, Pidgin, Kopete y Google Talk (estos ltimos usan el protocolo abierto XMPP).
Protocolo XMPP
XMPP (Extensible Messaging and Presence Protocol, protocolo extensible de mensajera y comunicacin de presencia), anteriormente llamado Jabber, es un protocolo abierto y extensible basado en XML, originalmente ideado para mensajera instantnea. XMPP est definido formalmente en los documentos RFC 3920, RFC 3921, RFC 3922 y RFC 3923. Con el protocolo XMPP qued establecida una plataforma para el intercambio de datos XML que puede ser usada en aplicaciones de mensajera instantnea. XMPP hereda las caractersticas en cuanto a adaptabilidad y sencillez del lenguaje XML. A diferencia de los protocolos propietarios de intercambio de mensajes como ICQ, Yahoo! Messenger y Windows Live Messenger, XMPP se encuentra documentado y se insta a utilizarlo en cualquier proyecto. Existen servidores y clientes libres que pueden ser usados sin coste alguno. Este es el protocolo que seleccion Google para su servicio de mensajera Google Talk, y Facebook y Tuenti, entre otras redes sociales para su chat. Este proyecto empez en 1998 de la mano de Jeremie Miller, siendo jabberd el principal producto que se desarrollo, un servidor XMPP . Se liber por primera vez en 2000. Entre sus ventajas con respecto a los protocolos propietarios destacan: Descentralizacin - la arquitectura de las redes XMPP es similar a la del correo electrnico; cualquiera puede poner en marcha su propio servidor XMPP, sin que haya ningn servidor central. Estndares abiertos - sus especificaciones han sido publicadas como los RFC-3920 y RFC3921. Seguridad - los servidores XMPP pueden estar aislados de la red pblica XMPP, y poseen robustos sistemas de seguridad como SASL y TLS. Para apoyar la utilizacin de los
Pag. 2 de 18
sistemas de cifrado, la XMPP Standards Foundation pone a disposicin de los administradores de servidores XMPP una CA en http://xmpp.org/resources/certificates/ ofreciendo certificados digitales gratuitos. La red XMPP est basada en servidores, pero descentralizada; por diseo, no hay ningn servidor central, como sucede con servicios como MSN Messenger. Sobre este punto, surge cierta confusin, puesto que existe un servidor XMPP pblico en "Jabber.org", al que estn suscritos un gran nmero de usuarios, pero no hay que olvidar que cualquiera puede poner en marcha su propio servidor. El puerto estndar utilizado para XMPP es el 5222. Cada usuario en la red XMPP tiene un nico identificador (Jabber ID, normalmente abreviado como JID). Para evitar la necesidad de un servidor central con una lista exhaustiva de identificadores, el Jabber ID est estructurado como una direccin de correo electrnico. Un identificador Jabber sera algo como usuario@dominio.com. Como un usuario puede querer identificarse desde distintos lugares, el servidor permite al cliente especificar una cadena de referencia conocida como recurso, que identifica el cliente que est utilizando el usuario (por ejemplo: casa, trabajo, porttil, etc.). Esto ser incluido en el JID aadiendo un carcter / seguido del nombre del recurso. Cada recurso debe tener especificada un valor numrico de prioridad. Por ejemplo el JID completo de la cuenta del trabajo del usuario sera: usuario@dominio.com/trabajo. Los mensajes de la forma usuario@dominio.com sern dirigidos al cliente con mayor prioridad, y los de la forma usuario@dominio.com/trabajo sern dirigidos al cliente del trabajo. Los JID sin la parte del nombre de usuario tambin son vlidos y se utilizan para enviar mensajes de sistema y control. Cmo se entregan los mensajes? Supongamos que pepe@midominio.com desea chatear con oscar@curavalera.net. Pepe y Oscar tienen sus respectivas cuentas en los servidores midominio.com y curavalera.net. Cuando Pepe escribe y enva su mensaje, entra en accin la siguiente secuencia de eventos: 1. El cliente de Pepe enva su mensaje al servidor midominio.com. Si el servidor curavalera.net no tiene acceso al servidor midominio.com, el mensaje es desechado. 2. El servidor midominio.com abre una conexin con el servidor curavalera.net. 3. El servidor curavalera.net entrega el mensaje a Juan. Si Juan no est conectado, el mensaje es guardado para su posterior entrega. Si el servidor midominio.com no tiene acceso al servidor curavalera.net, el mensaje es desechado. Otra caracterstica muy til del protocolo XMPP son las pasarelas, que permiten a los usuarios el acceso a redes con otros protocolos de mensajera instantnea propietarios. Esta funcionalidad no es proporcionada por el cliente, sino por el servidor, mediante servicios de pasarela que proporcionan conectividad con alguna otra red. Gran parte de los cortafuegos estn configurados para permitir el paso del trfico TCP dirigido al puerto usado por el protocolo HTTP, mientras que por lo general se bloquea el puerto utilizado por XMPP. Para solucionar este problema, XMPP utiliza HTTP para permitir el acceso a los usuarios que se encuentran tras el cortafuegos. Pero XMPP precisa conexin persistente, se mantiene la conexin desde el principio hasta el final, y mientras, se envan todos los mensajes que se quieran; HTTP sin embargo usa una conexin de peticin y respuesta, es decir, te conectas y haces una peticin, el servidor responde y se termina la conexin. En las especificaciones originales, XMPP
Gins ngel Esteban Oller Pag. 3 de 18
poda utilizar HTTP de dos formas: Polling: Ya no est en uso, bsicamente se trataba de utilizar las funciones 'GET' y 'POST' de HTTP para enviar los mensajes al servidor a intervalos de tiempo regulares. Binding: Con este mtodo, el cliente utiliza conexiones HTTP de vida ms larga para recibir los mensajes tan pronto como son enviados. Este modelo es ms eficiente que el de polling. BOSH (Bidirectional-streams Over Synchronous HTTP): Es un protocolo de transporte que emula un flujo bidireccional entre dos entidades (por ejemplo, un cliente y un servidor) mediante el uso de mltiples pares peticin/respuesta sncronos sin requerir el uso de fragmentaciones asncronas. Existen algunos servidores pblicos como www.jabber80.com que escuchan en los puertos estndar HTTP y HTTPS, permitiendo la conexin mediante XMPP desde detrs de la mayora de los cortafuegos. XMPP funciona a base de enviar cdigo XML. Un ejemplo de mensaje XMPP sera el siguiente:
<message from="pepe@dominio.com" to="juan@dominio.com">Hola to; que pasaaaa.</message>
En XMPP existen 3 tipos de elementos diferentes: message, presence e iq. Message: Son los mensajes que se envan los usuarios entre s. Presence: Los eventos de presencia de usuarios. Cuando se desconectan o conectan, cuando cambian de estado, de nombre, etc. Iq: Sirve para enviar comandos internos. Por ejemplo para iniciar una nueva conexin, informar de errores, etc.
Protocolo OSCAR
El protocolo OSCAR (Open System Communication in Realtime, Sistema Abierto para la comunicacin en tiempo real) fue creado en 1990 por la empresa israel Mirabilis, que en 1998 fue adquirida por AOL. A pesar de lo que su nombre indica se trata de un protocolo propietario por lo que no se puede integrar con otras tecnologas de mensajera instantnea. Este protocolo es usado por los clientes AIM e ICQ. En 2002 AOL lleg a un acuerdo con Apple de manera que este protocolo se ha integrado con el servicio de mensajera iChat. Dado que sus especificaciones no han sido publicadas algunos compaas han utilizado la tcnica de ingeniera inversa para poder dar servicio para l en sus clientes.
Con la ltima lnea conseguimos nuestro objetivo. Si hacemos ping midominio.com nos responder la maquina cuya IP es 192.168.0.112.
Pag. 5 de 18
Instalacin
ejabberd se encuentra en los repositorios de Ubuntu, por lo que la instalacin resulta tan sencilla como:
$ sudo apt-get install ejabberd
Despus de la instalacin del paquete principal y sus dependencias, el servidor se pondr en marcha o puede que falle en el intento. En cualquier caso, nosotros haremos caso omiso y seguiremos con el proceso de configuracin.
Configuracin
Los archivos de configuracin se encuentran en el directorio /etc/ejabberd. Empezamos editando el archivo /etc/ejabberd/ejabberd.cfg; en este archivo el carcter % indica comentario. Localizamos la siguiente seccin y ajustamos los parmetros de administrador y host:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Options which are set by Debconf and managed by ucf %% Admin user {acl, admin, {user, "usuario", "midominio.com"}}. %% Hostname {hosts, ["midominio.com"]}. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
El usuario que hemos establecido ser el que posteriormente nos va a permitir administrar nuestro servidor; no es un usuario del sistema y an no existe, tendremos que crearlo despus. El nombre de dominio que establezcamos debe poder ser resuelto por el servicio DNS. Ahora localizamos la seccin CAPTCHA y la dejamos como sigue:
%% {captcha_cmd, "/usr/lib/ejabberd/priv/bin/captcha.sh"}. %% %% Host part of the URL sent to the user. %% The port specified must be configured as the "ejabberd_http" %% listener which must have the "captcha" directive included %% in its configuration (see the "LISTENING PORTS" section above). %% {captcha_host, "midominio.com:5280"}. %%
donde servidor1 es el nombre real de nuestro servidor. Despus de ello vamos a poner en marcha el servidor. Lo primero ser purgar todo lo que el demonio haya escrito en el directorio /var/lib/ejabberd:
$ sudo rm -vrf /var/lib/ejabberd/*
Y matamos los demonios que estn activos, ya que como probablemente el servidor no se ha iniciado bien no se podr detener con sudo service ejabberd stop:
Gins ngel Esteban Oller Pag. 6 de 18
Nota: cada vez que tengamos un error de configuracin y tengamos problemas para iniciar el servidor, tendremos que seguir este proceso. Y ahora iniciamos el servicio; y si todo va bien:
usuario@servidor1:~$ sudo service ejabberd start Starting jabber server: ejabberd. usuario@servidor1:~$
Los cuales se describen a continuacin: 5222 puerto en el que escucha el demonio ejabberd; para conexin de los clientes. 5269 puerto para conexin de ejabberd con otros servidores. 5280 puerto en el que escucha el servicio de administracin de ejabberd.
En ente momento procedemos a la creacin del usuario administrador. Para ello utilizamos el comando ejabberdctl register usuario dominio password:
usuario@servidor1:~$ sudo ejabberdctl register usuario midominio.com usuario User usuario1@midominio.com succesfully registered Gins ngel Esteban Oller Pag. 7 de 18
Para administrar nuestro servidor apuntamos nuestro navegador web a la direccin http://midominio.com:5280/admin, obteniendo el software de administracin:
Entre los clientes que podemos utilizar citamos: Kopete, Pidgin y Empathy.
Openfire es muy estable y robusto, lo que le supuso en 2006 la obtencin del premio ServerWatch Product por ser el mejor servidor de comunicaciones en tiempo real. Actualmente se distribuye la versin 3.7.0 disponible en la seccin de descargas del sitio oficial: http://www.igniterealtime.org/projects/openfire/.
Gins ngel Esteban Oller Pag. 8 de 18
una vez elegido el lenguaje pulsamos OK y seguimos los pasos del asistente:
Pag. 9 de 18
Pag. 10 de 18
Configuracin de Openfire
Para iniciar el proceso de configuracin y establecer los parmetros necesarios para el correcto funcionamiento del servidor pulsamos el botn Launch Admin de la ventana anterior o apuntamos nuestro navegador a la url http://localhost:9090, obteniendo el asistente de administracin, que al ser ejecutado por primera vez aparece as:
En la siguiente ventana indicamos el nombre del dominio asociado con el servicio de mensajera, el puerto de la consola de administracin y el puerto seguro:
Gins ngel Esteban Oller Pag. 11 de 18
A continuacin indicamos la base de datos en la que Openfire va a almacenar la informacin. Puede ser externa (MySQL, Oracle, SQL Server, DB, etc) o interna; se recomienda usar una externa para una gestin ms eficiente:
Pag. 12 de 18
Nosotros pretendemos utilizar MySQL, por lo que vamos a proceder a instalarlo y a crear la base de datos necesaria. Nos vamos al sitio oficial de MySQL y nos descargamos la ltima versin estable, 5.5.12, para nuestro sistema. Instalamos MySQL con las opciones que nos ofrece por defecto siguiendo los pasos del asistente de instalacin. Si deseamos una herramienta grfica de administracin y no queremos utilizar phpMyAdmin, podemos instalar MySQL Control Center, que encontraremos en http://sourceforge.net/projects/mysqlcc/ y que tras unos retoques lo tendremos en espaol.
Ahora, para crear la base de datos necesaria para Openfire utilizamos el archivo openfire_mysql.sql que contiene el script SQL necesario y que nos proporciona el propio Openfire; dicho archivo se encuentra en la carpeta C:\Archivos_de_
Programa\Openfire\resources\database.
En primer lugar creamos la base de datos (esta tarea no est implementada en el script aunque podramos incluirla); la llamamos openfire:
Pag. 13 de 18
Una vez creada la base de datos la seleccionamos (nos conectamos), pulsamos sobre el botn SQL, localizamos el archivo
y lo ejecutamos.
Pag. 14 de 18
Creamos el usuario openfire y le concedemos todos los privilegios (aunque todos no sean necesarios) sobre la base de datos openfire. Y ahora continuamos con la configuracin de Openfire; indicamos los parmetros de la fuente de datos:
Pag. 15 de 18
Administracin de Openfire
Para administrar Openfire apuntamos nuestro navegador a http://localhost:9090; nos autentificamos con el usuario admin y el password que indicamos en el proceso de configuracin y accedemos al entorno de administracin del servicio
Pag. 16 de 18
Lo primero que vamos a realizar ser la creacin de una cuenta de usuario. Para ello accedemos a la pestaa Usuarios/Grupos || Crear Nuevo Usuario
rellenamos los campos y creamos el usuario; as aadimos los que necesitemos. Ahora podemos configurar nuestro cliente preferido y comprobar el funcionamiento. Ojo con el firewall de Windows Server!
Gins ngel Esteban Oller Pag. 17 de 18
Otra tarea de administracin interesante consiste en conseguir que nuestro servidor sea capaz de validar cuentas de usuario definidas en el servicio Google Talk. Para ello seguiremos estos pasos: Asegurarnos de que nuestro servidor Openfire tiene asociado un registro SRV en el servicio DNS de Internet; es decir, si tenemos por ejemplo el dominio aldeagala.com registrado pblicamente, el DNS pblico que gestiona ese dominio debe tener un registro SRV indicando qu equipo del dominio ofrece el servicio Openfire. En el entorno de administracin de Openfire seleccionamos Servidor || Configuracin del servidor || Servidor a servidor. En la seccin Servidor habilitado marcamos el botn Habilitado y especificamos el puerto 5269 que es el que usa el servidor Google Talk para conectarse con otros servidores. En la seccin Permitido conectar aadimos el servidor de Google, que es talk.google.com.
Como Google Talk y Openfire usan el protocolo XMPP los intercambios de informacin entre ambos son rpidos y sencillos. Openfire se puede conectar a otros servidores como Windows Live Messenger pero para ello es necesario configurar una pasarela.
Pag. 18 de 18