Les développeurs de la plateforme de collaboration SourceHut ont publié un rapport sur un incident qui a perturbé le service pendant 7 jours en raison d'une attaque DDoS prolongée à laquelle l'infrastructure du projet n'était pas préparée. Les services de base ont pu être rétablis dès le troisième jour, mais certaines fonctionnalités ont été inaccessibles du 10 au 17 janvier. Au début de l'attaque, les développeurs n'ont pas pu réagir à temps pour faire face au problème côté serveur, car tout le trafic vers les serveurs SourceHut a été complètement bloqué par le fournisseur de services supérieur.
Pour assurer le fonctionnement de SourceHut, serveurs trois centres de données ont été utilisés. Le premier hébergeait la configuration opérationnelle, le second était utilisé pour la sauvegarde, et le troisième servait à expérimenter la migration de l'infrastructure vers une implémentation de service plus évolutive et résiliente (une version de SourceHut de nouvelle génération était en développement).
La résolution de la question d'accès à leurs serveurs dans le principal centre de données après le blocage a pris environ 9 heures, mais les développeurs n'ont pas eu le temps d'agir, car le matin l'attaque s'est intensifiée et a commencé à toucher tout le sous-réseau, après quoi le fournisseur a de nouveau redirigé le trafic vers un null-interface. Les développeurs ont été contraints de commencer d'urgence à déployer l'infrastructure SourceHut dans un autre centre de données à partir des sauvegardes (un sous-réseau temporaire pour accéder aux serveurs principaux n'a pu être obtenu que deux jours plus tard).
Pour se protéger contre les attaques DDoS au niveau du réseau, il a été jugé optimal de placer un intermédiaire de serveurs dans le réseau du fournisseur de services cloud OVH, qui offre une protection contre les DDoS. Toutes les requêtes étaient dirigées vers ce serveur, puis transmises à l'infrastructure opérationnelle. Au cours de la migration, il a été impossible d'éviter des erreurs qui ont pris du temps supplémentaire, par exemple, il y a eu une mauvaise exécution de la récupération avec l'outil rsync, des erreurs de configuration réseau ont été commises et il a fallu résoudre des problèmes de redirection du trafic (avant que la protection DDoS d'OVH ne s'active, le trafic de l'attaque DDoS était également transféré vers les serveurs de travail, ce qui a entraîné la détection de la protection DDoS qui a identifié le serveur récepteur des requêtes comme source de l'attaque).
Les développeurs ont également fait appel à Cloudflare et à d'autres services de protection contre les DDoS, mais le coût de la protection s'est avéré exorbitant. Plus tard, les employés de Cloudflare ont pu négocier avec la direction pour fournir la protection au projet SourceHut gratuitement en tant qu'aide sponsorisée, mais les développeurs de SourceHut ont refusé cette offre, car à ce moment-là, ils avaient déjà fait des progrès significatifs dans la résolution du problème par leurs propres moyens.
La mise en place de la nouvelle infrastructure SourceHut et le transfert du projet vers des serveurs dans un autre centre de données étaient prévus de manière progressive sur une période d'au moins un an, mais dans les circonstances actuelles, la migration a dû être effectuée de toute urgence en l'espace de 7 jours. Actuellement, tous les services de SourceHut ont été transférés dans un autre centre de données et la plateforme est entièrement opérationnelle.
La plateforme SourceHut se distingue par son interface originale, différente de celle de GitHub et GitLab, mais simple, très rapide et fonctionnant sans JavaScript. SourceHut offre des fonctionnalités telles que le travail avec des dépôts publics et privés Git et Mercurial, un système flexible de gestion des accès, un wiki, la réception de rapports d'erreurs, une infrastructure intégrée d'intégration continue, un chat, des discussions par email, une visualisation arborescente des archives de courriels, la révision des modifications via le Web, et l'ajout d'annotations au code (insertion de liens et de documentation). En activant les paramètres appropriés, il est possible de permettre la participation au développement des utilisateurs sans comptes locaux (authentification via OAuth ou participation par email). Le code est écrit en Python et Go, et est distribué sous licence GPLv3.
Source : opennet.ru
