Proxy jabber sur HTTP (http-bind et BOSH)
Lorsqu’on est informaticien (un peu geek) notre utilisation d’internet n’est parfois pas compatible avec celle imaginée par une politique d’entreprise.
Par exemple pour nous la messagerie instantanée peut être un très bon outil de veille technologique alors qu’elle sera vu autrement comme un outil de dispersion.
Principe
BOSH est une XEP, c’est à dire une proposition d’extension du protocole XMPP soit Jabber.
Cette XEP permet de monter mode proxy au protocole xmpp, ainsi on peut communiquer à travers le port 80/tcp et ainsi se prémunir de certains inconvénient comme les firewall d’entreprise ou assimilé.
Pré requis
Pour la suite de cet article nous considérons que nous avons :
- un serveur jabber (par exemple ejabberd ou prosody)
- un proxy http (par exemple apache2)
- un client jabber compatible BOSH (par exemple gajim ou psi)
Configuration du serveur Jabber
Il faut activer le mode BOSH aussi nommé http-bind (ancien nommage de la xep)
Ejabberd
Toute la configuration se passe dans /etc/ejabberd/ejabberd.cfg.
Nous devons penser à 2 choses :
- activer le module http_bind
- définir le port d’écoute associé au module
{listen,
[
...
{5280, ejabberd_http, [http_bind]},
...
]}.
{modules,
[
...,
{mod_http_bind, []},
...
]}.
Prosody
Toute la configuration se passe dans /etc/prosody/prosody.cfg.lua
modules_enabled = {
...
"bosh";
...
}
bosh_ports = { 5280 }
On peut trouver plus d’informations sur http://prosody.im/doc/setting_up_bosh
Tester le serveur
Par défaut ejabberd et prosody écoutent http://localhost:5280/http-bind/. Nous pouvons tester le bon fonctionnement depuis un simple navigateur internet.
Configurer le mode proxy
Je ne parlerais ici que d’apache2 mais il est possible de le faire avec squid, nginx et autre serveur ayant des capacités de proxy.
Nous devons d’abord installer les modules apaches idoines :
a2enmod proxy
a2enmod proxy_http
Ensuite nous configurons le mode proxy pour le domaine qui sera joignable par nos clients jabber.
<VirtualHost *:80>
ServerName im.mydomain.tld
#ForceType text/html
RewriteEngine On
RewriteRule /
http://127.0.0.1:5280/http-bind/ [P]
<Proxy http://127.0.0.1>
Allow from all
</Proxy>
</VirtualHost>
Le serveur devient accessible via http://im.mydomain.tld/
De même, vous pouvez aussi créer un proxy SSL en écoutant sur le port 443, ce qui est fortement conseillé pour avoir les échanges sécurisés entre le serveur et le client de messagerie.
Configurer son client
La configuration des clients de messageries est assez aisé, du moment que ceux ci supportent cette XEP. Gajim depuis la version 0.13, propose un support complet et fonctionnel.
L’activation se fait depuis Éditer > Compte, nous choisissons le compte qui a besoin d’utiliser Bosh. Depuis l’onglet Connexion, on ajoute un proxy pour le quel seul le champ Bosh url sera rempli.
Tester son client
Une fois le proxy activé vous pouvez essayer de vous connecter avec votre client de messagerie. Si votre roster apparait alors tout s’est passé comme une lettre à la poste. Maintenant à nous les joies d’internet même derrière un firewall.