Sur les pages Web offertes aux utilisateurs d'Harmony Assistant (MUSL), nous avions mis en place un petit système de commentaires, très léger et simple. Nous n'avions rencontré aucun problème d'attaque extérieure, jusqu'à la semaine dernière. En fin de semaine, des dizaines, puis rapidement des centaines de messages publicitaires ont commencé à se déverser. Notre petit filtre anti-spam, très simple et très léger, lui aussi, a rapidement été débordé, et ces messages ont commencé à apparaître publiquement. En urgence, nous les avons supprimés manuellement, puis avons durci les règles, pour en éliminer automatiquement le plus grand nombre possible. Le robot spammeur était assez sophistiqué. Il ne se contentait pas d'envoyer le formulaire de commentaire rempli, il chargeait aussi à chaque fois la page Web, et était capable de s'adapter au changement du nom des champs du formulaire. Les adresses IP changeaient perpétuellement, et étaient tirées d'un "pool" assez large, compliquant le blocage individuel. Nous avons donc réfléchi assez rapidement à ce que nous pouvions faire de plus. - Mettre un "captcha" était possible, mais contraignant pour l'utilisateur, pour la simplicité des pages Web présentant les musiques des utilisateurs de MUSL, et assez lourd. - Analyser plus finement la manière de poster du spammeur, pour le bloquer plus efficacement : nous l'avons fait, et avons trouvé quelques détails nous permettant de le différencier d'un internaute humain. Le taux de succès atteignait 99.5%. Mais avec une tentative par minute, quelques-uns passaient encore. C'est alors que nous avons découvert une base de données gratuite, recensant toutes les adresses IP des spammeurs de forum. Cette base est complétée quotidiennement, et toutes les adresses IP de notre spammeur s'y trouvaient listées. Nous avons donc développé un module en Perl qui recherche l'IP du visiteur dans cette base, remise à jour quotidiennement. Si elle y est trouvée, les accès aux commentaires du MUSL sont interdits. Voyant que cela fonctionnait, nous avons utilisé la même technique pour les messages du forum et les commentaires de ce blog. Nous n'avons pas, pour l'instant, reçu de plainte de personnes qui auraient détectées été à tort. Des dizaines de milliers de tentatives d'accès par ces adresses IP "toxiques" ont par contre été empêchées, en seulement quelques jours. |
|
|
by Olivier Guillion | | |
| |
|

Nous continuons à étudier la possibilité de mettre en place un système automatique de travail partagé. Pour étudier cela, nous avons créé une machine virtuelle (à terme, ce serait une machine physique) équipée de 3 disques durs. Nous avons installé FREEBSD/Freenas sur le premier disque. Nous avons pu ensuite assez aisément combiner les deux autres disques en RAID 1 (miroir) logiciel. Nous avons enfin ouvert un partage Windows et MacOS sur la racine du disque de données. La première étape terminée, nous nous sommes penchés sur SVN, l'outil permettant de gérer les conflits lorsque plusieurs programmeurs travaillent ensemble sur un même projet. Sur notre PC de développement, nous avons installé TortoiseSVN. Nous avons créé un "repository" sur le NAS, contenant un petit projet C. Nous avons pu récupérer la copie de travail sur le PC, modifier les sources et enregistrer nos changements. Sur le Mac, nous avons installé svnX. La création de la copie de travail a fonctionné, mais lors de la tentative d'enregistrement des changement, une erreur est apparue, disant que les "exclusive lock" des fichiers ne pouvait pas s'effectuer, rendant impossible la sauvegarde. Nous avons lu quelque part que le problème pouvait venir d'un accès concurrentiel aux fichiers par "file://" et qu'il fallait installer un serveur svn sur la machine contenant le repository. Mais l'opération semble assez compliquée sur Freenas, nous n'y sommes pas parvenus malgré pas mal d'efforts. On peut donc dire qu'on y est presque, mais qu'en l'état cela ne fonctionne pas. Si un spécialiste de FreeBSD, FreeNas ou SVN passe par ici, qu'il n'hésite pas à se manifester ! |
|
|
by Olivier Guillion | | |
| |
|
|