Lut.im : une tragédie des communs évitée

Savez-vous ce qu'est la tragédie des communs ? C'est quand une ressource commune est surexploitée et au final, tout le monde est perdant.

C'est un peu ce qui se passe en ce moment sur l'instance officielle de mon logiciel Lutim : https://lut.im.

En effet, depuis déjà quelques jours, ce site est inaccessible en soirée. Trop d'utilisateurs qui veulent voir trop d'images en même temps. Lut.im victime de son succès ?

Oui et non : oui car le site commence à être plutôt connu (surtout en Russie, allez savoir pourquoi) ; non car c'est un problème d'abus de la ressource commune qu'est lut.im : en effet, le problème vient de l'utilisation qui est en faite par quelques personnes.

Pour comprendre ce qui se passait, j'ai activé les logs d'accès au service — en prenant soin de ne pas afficher les adresses des images demandées (voir plus bas) — et j'ai noté quelques adresses de referer suspectes ainsi qu'un nombre incroyable de requêtes demandées par des user-agent Kodi et quelques XBMC.

J'ai été voir sur un des referer suspects : un site de streaming de chaîne télé… et certains des logos des chaînes étaient hébergés sur https://lut.im ! Ça m'a mis la puce à l'oreille quant aux user-agent Kodi. Un peu de recherche genre kodi tv channel "https://lut.im" et je tombe sur un truc comme http://www.listaiptvbrasil.com.br/paste.php?id=3 (oui, je savais qu'il y avait moyen de voir des chaînes de télé sur Kodi, j'en ai un et j'avais regardé si je pouvais voir des chaînes de télé mais j'avais au final laissé tomber, vu la qualité de ce qu'on peut voir à la télé (pis bon, la pub…)).

J'ai donc bloqué, pour éviter l'indisponibilité fréquente de https://lut.im, les referer de ce genre que j'ai trouvé ainsi que les user-agent Kodi et XBMC :

if ($http_referer ~ (site1|site2) {
    return 429;
}
if ($http_user_agent ~* (Kodi|XBMC)) {
    return 429;
}

Le statut 429 que je renvoie correspond à « Too Many Requests ». Disons que c'est le statut que j'ai trouvé le plus proche de la situation. Certes, ce n'est pas le client qui fait trop de requêtes, mais bon.

La soirée d'hier s'est passée sans alerte de la part de la supervision et chaque fois que j'ai été voir le site, celui-ci était accessible ! Mes actions ont donc évité la surexploitation de la ressource commune 🙂

Et voilà comment j'ai modifié le format de mon log d'accès pour ne pas loguer les IPs de mes visiteurs ni les URLs des images demandées :

log_format lutim '$remote_user [$time_local] $status $body_bytes_sent "$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
    …
    access_log /var/log/nginx/lutim.access.log lutim;
    …
}

J'ai après cela remis la configuration à access_log off; et supprimé les journaux d'accès.

Crédit : Photo de Brad Helmink sur Unsplash

4 réflexions au sujet de “Lut.im : une tragédie des communs évitée”

  1. Très bien ce que tu fais, mais est-il possible d’arrêter de citer ce triste pitre de Hardin et son concept purement idéologique?

    • Le terme « tragédie des communs » est, à mon sens, fort bien trouvé, et désolé, mais je préfère mettre un lien vers l’article Wikipédia pour permettre à mes lecteurs de creuser un peu plus la question que d’essayer d’expliquer finement un concept que je n’ai pas le temps d’approfondir.

      De plus l’article Wikipédia contient une partie « Critique du modèle de Hardin », apportant donc un contrepoint.

  2. 1. Parce que ça voudrait dire que le CDN connaîtrait la clé de déchiffrement des images, qui est dans l’URL… et qu’il stockerait les images
    2. Parce que je n’aime pas les CDN : j’ai horreur des appels à des ressources externes, je ne sais pas ce que fait le CDN des méta-données qu’il récupère, ça centralise le web, le CDN peut intercepter toutes les données, je ne peux pas lui faire confiance pour sécuriser correctement les connexions (alors que moi, je sais que je sais faire : https://www.ssllabs.com/ssltest/analyze.html?d=lut.im)
    3. Parce que les CDN et la neutralité du net, ça fait deux (cf les captcha de cloudflare quand tu viens d’un relais TOR)

    Et accessoirement parce que j’ai pas de sous à y consacrer (le serveur est hébergé gracieusement par Framasoft).

Les commentaires sont fermés.