I develop stuff and have opinions on things -
About me/Contact

Articles:

Outil d’administration pour serveur jabber

Les serveurs XMPP sont très souvent la cible de bots, qui suivent une procédure automatisée d’inscription, puis qui utilisent leurs comptes pour aller pourrir la vie d’un nombre important de gens, en allant par exemple envoyer sur un salon de discussion des messages remplis de caractères utf-8 lourds, et ce à une fréquence élevée.

Je n’ai aucune idée de l’intérêt de faire ce genre de trucs, même en étant profondément débile (ce n’est même pas du spam, où il pourrait y avoir un but mercantile, c’est juste une façon de pourrir la vie des gens), mais il n’empêche que ce comportement existe, principalement venant d’IP syriennes ou russes.

Les serveurs à enregistrement restreint (par exemple avec captcha) ne sont pas nécessairement épargnés, puis qu’il suffit qu’un humain crée le compte pour que les bots s’en servent ensuite.

Le problème n’est pas nouveau, et la XEP-0133 est là depuis un moment et est implémentée à peu près dans tous les serveurs, et fonctionne dans tous les clients qui gèrent les commandes ad-hoc.

Cependant, bien que ça fonctionne, ce n’est pas pratique, puisqu’il faut faire toutes les étapes unes à unes (récupérer les utilisateur connectés, regarder ceux qui ont le profil de spammeur, lancer une deuxième commande ad-hoc pour avoir son ip…).

C’est pourquoi, pour les besoins d’adminsitration des différents serveurs de JabberFR (non, ce n’est pas moi qui les administre), il a fallu écrire un outil dédié à cette tâche.

Features

L’outil effectue les opérations suivantes :

  • Connexion au serveur en tant qu’administrateur
  • Récupération de 100 utilisateurs connectés (ce serait cool d’en avoir plus, mais ce n’est pas couvert par la XEP).
  • Récupérations des informations sur ces utilisateurs (ips et pays, ressources, jid, taille du roster)
  • Affichage de toutes ces informations dans une fenêtre graphique
  • L’utilisateur coche ensuite une case présente à droite de chaque ligne pour « purger » un utilisateur
  • Un bouton permet de supprimer tous les comptes sélectionnés du serveur
  • L’autre bouton permet d’enregistrer toutes les IP sélectionnées dans un fichier texte (pour les utiliser ensuite dans un script avec iptables, par exemple)

Dépendances

Ce script dépend de :

  • python-gobject (et gobject-introspection)
  • gtk
  • pygeoip (et donc geoip)
  • sleekxmpp

Je code exclusivement en python3 et ce script ne marchera probablement pas en python2 parce que j’utilise de l’unicode souvent.

Screenshot

screenshot

Liens

Téléchargement

(évidemment, c’est sous GPLv3)

PS: J’ai décidé de l’appeler « Luuta », parce que ça veut dire « balai » en finnois, et que je trouve ça joli.

Si vous avez des remarques ou commentaires à propos de cet article, n’hésitez pas à me contacter.