PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Okki : Les dons en provenance de l’UE seront désormais traités par la Fondation Wau Holland

vendredi 10 juillet 2015 à 22:32

La Fondation GNOME et la Fondation Wau Holland ont récemment conclu un accord qui permettra d’améliorer considérablement la façon dont les dons au projet GNOME en provenance de l’Union européenne seront gérés.

Avant la signature de cet accord, la Fondation GNOME était en mesure de recevoir des dons par le biais de nombreuses méthodes de paiement (virements bancaires, chèques, transferts PayPal…), que ce soit pour des dons ponctuels ou récurrents dans le cadre du programme des Amis de GNOME. Cependant, les donateurs devaient résider aux États-Unis pour que leurs contributions puissent bénéficier d’une déduction fiscale. Quant aux virements bancaires en provenance de l’Union européenne, les frais étaient prohibitifs.

La Fondation GNOME a travaillé étroitement avec la Fondation Wau Holland pour simplifier le processus concernant les dons effectués au sein de l’Union européenne. Grâce à cet accord, les Européens pourront désormais effectuer un don à la Fondation GNOME par le biais de la Fondation Wau Holland, leur permettant ainsi de recevoir une attestation pour bénéficier d’une déduction fiscale.

Alors, pour aider à financer les frais concernant l’infrastructure, le matériel ou pour que les développeurs puissent se rendre et travailler ensemble lors des différentes conférences (GUADEC, FOSDEM, West Coast Summit…), n’hésitez pas à faire un don ;)

Gravatar de Okki
Original post of Okki.Votez pour ce billet sur Planet Libre.

Génération Linux : Auto-hébergement et déni de service (wordpress - xmlrpc), quelques jours de frayeur et d'enquête...

vendredi 10 juillet 2015 à 21:21

Depuis le début de la semaine, j'étais confronté à un problème que je n'avais jamais eu jusque là (ça fait 4 ans 1/2 que je m'auto-héberge) : plusieurs fois dans la journée (aléatoirement), mon serveur ne répondait plus du tout, la seule chose que je voyais c'était que la LED correspondante aux écritures sur le disque dur était en permanence allumée. La seule solution à ce problème était de couper l'alimentation du serveur et de le relancer. Cela corrigeait le problème pendant quelques heures (parfois moins) puis ça recommençait. Voici les différentes étapes qui m'ont permis de comprendre ce qui se passait et comment j'ai corrigé ce problème.

noy.jpg

Le premier symptôme n'a pas été difficile à voir : le voyant du DD de mon serveur restait en permanence allumé. J'ai trouvé ça étrange en plein milieu de la journée, du coup, j'ai essayé de me connecter sur un service web de mon serveur : impossible. Ensuite, j'ai essayé de me connecter en SSH : plus de 5 minutes à attendre un prompt qui ne venait pas. On voyait clairement que le serveur en avait par dessus la RAM de toutes ces écritures et ne pouvait traiter de nouvelles requêtes. Seule solution : reboot hard (bouton reset de mon serveur).

Analyse des logs

Premier réflexe pour essayer de comprendre ce qui s'est passé : l'analyse des logs. J'ai trié les logs par date de dernière modification et les ai tous consultés (ceux du /var/log) : rien à signaler. J'ai ensuite regardé du côté de mes logs apache. La seule chose que j'ai trouvé c'était cette ligne dans le error.log d'apache :

[Sun Jul 05 19:21:12 2015] [error] server reached MaxClients setting, consider raising the MaxClients setting

Ça devait être la conséquence du ralentissement de la machine. Quand mon serveur était à genoux, les requêtes continuaient à arriver, il ne pouvait pas les traiter rapidement ; de ce fait, elles s'empilaient et le serveur crashait. La première chose que j'ai faite a été d'augmenter cette valeur et d'attendre. Comme prévu, le problème est revenu, peu importait la valeur que je mettais. Rien à voir de plus de ce côté-là donc.

J'ai ensuite "analysé" mes logs apache grâce à goaccess (que je vous recommande !). Pas de grosse attaque là non plus. Par exemple, la capture ci-dessous indique le nombre de hits par IP pour un fichier de log d'access passé en paramètre (j'ai un fichier différent par vhost). J'ai vérifié les plus gros consommateurs, c'était des requêtes légitimes :

goaccess.jpg

J'ai ensuite regardé mes graphes de supervision Munin, rien à signaler côté RAM, CPU, IO, etc. On voyait bien une coupure mais rien avant cette coupure. C'était, pour faire simple, "tout nickel" et "tout cassé" d'un check à l'autre...

Désactivation des services consommateurs

Pour essayer de délimiter les risques, j'ai désactivé les services qui sont les plus consommateurs sur mon serveur et non-indispensables. J'ai donc désactivé Subsonic, Transmission et Munin. Le serveur continuait à planter, j'en ai donc déduit que cela devait venir de MySQL ou/et apache.

Génération d'un fichier d'analyse

Sachant que le problème reviendrait assez rapidement, j'ai mis en place un script qui m'a permis de stocker certains indicateurs (les requêtes HTTP, les processus en cours, la taille des disques, l'utilisation du swap, etc.). Je passais ce script toutes les 4 minutes et stockais le résultat dans un fichier. Voici un rendu d'exemple (que j'ai épuré) :

top.jpg

On voit bien ici qu'à 21h24, j'avais 11 processus apache et qu'à 21h28, j'étais passé à 212 mais que mon script n'a pas réussi à calculer d'autres infos (le disque était déjà trop occupé). Les infos intéressantes ici sont que l'incident s'est produit très rapidement entre 21h24 (où tout allait bien) et 21h28 où le serveur ne répondait plus à rien.

On voit également que mysql commence à swapper. J'ai donc creusé de ce côté.

La piste MySQL

Je n'avais auparavant activé aucun log sur mon serveur MySQL, j'ai donc dû les activer vers 15h30 (dernier crash avant celui-ci) pour analyser le futur problème. Pour info, voici les lignes ajoutées dans mon fichier my.cnf :

log_error                      = /var/log/mysql/mysql.log
log_warnings                   = 2
slow_query_log  = /var/log/mysql/mysql-slow.log
long_query_time = 4

Les requêtes de plus de 4 secondes sont désormais logguées. Après le crash de 21h24, j'ai trouvé des entrées intéressantes dans mon fichier mysql-slow.log :

myslow.png

Ces requêtes (toutes sur le même vhost) sont apparues à 21h26 (entre 24 et 28, comme vu ci-dessus). Je décide donc d'aller voir dans les logs d'accès de ce vhost (les logs d'erreur ne montrant absolument rien). Et là, voici ce que je découvre :

logxmlrpc.png

J'ai noté toutes les heures de plantage de mon serveur, systématiquement, cela correspond avec ce type de requête de Googlebot vers la page xmlrpc.php de mon vhost (qui est un site Wordpress). Je n'ai pas réussi à détecter cela automatiquement car les requêtes ne sont pas très nombreuses et les IP des Googlebots ne sont jamais les mêmes.

Conclusion

Du coup, un tour rapide sur un moteur de recherche en tapant les mots-clé "wordpress xmlrpc dos" et j'ai eu confirmation de ma découverte : c'est un problème bien connu d'attaque par déni de service sur les CMS Wordpress même pour les plus à jour (le mien était en dernière version du core et des plugins installés).

Pour corriger cela, j'ai installé le plugin Wordress Disable XML-RPC Pingback. Depuis, plus aucun problème : je ne vois même plus aucune entrée de ce type dans les logs. Je ne pense pas qu'il s'agisse d'une coïncidence mais que c'est ce plugin qui empêche les requêtes des bots (j'avoue ne pas avoir trop creuser cette partie là)...

Voilà pour ce petit compte rendu, il vous sera peut-être utile si un jour vous êtes confronté à ce problème :) Si vous avez d'autres astuces ou des choses auxquelles je n'ai pas pensé, n'hésitez pas ! À bientôt

Edit 24 heures plus tard : le problème est réaparu, il s'agissait donc bien d'une coïncidence que les requêtes se soient arrêtées quand j'ai mis en place le plugin. Du coup, j'ai mis une règle iptables pour bloquer ces requêtes :

/etc/fail2ban/filter.d/apache-wp-xmlrpc.conf :
[Definition]
failregex = ^ -.*POST /xmlrpc.php HTTP.*
ignoreregex =

/etc/fail2ban/jail.local :
[apache-wp-xmlrpc]
enabled = true
port    = http,https
filter  = apache-wp-xmlrpc
logpath = /var/log/apache2/access*.log
maxretry = 3

Affaire à suivre. N'hésitez pas à regarder les commentaires où j'indiquerai si des requêtes ont été bloquées (je ne suis pas le seul d'ailleurs).

Gravatar de Génération Linux
Original post of Génération Linux.Votez pour ce billet sur Planet Libre.

Articles similaires

Okki : Un possible nouvel agrégateur de flux RSS ?

jeudi 9 juillet 2015 à 23:52

Début juillet, le designer Allan Day publiait les maquettes d’une possible nouvelle application d’agrégation de flux RSS et Atom, suivi quelques jours plus tard par un billet Google+ du développeur Igor Gnatenko annonçant s’y consacrer entièrement.

En plus de respecter l’ergonomie des applications GNOME, cette application pour le moment nommée News, devrait permettre de souscrire à des flux RSS ou Atom, faciliter la découverte de nouveaux flux, différencier efficacement les nouveaux articles de ceux ayant déjà été lus (par flux ou de façon globale), permettre l’ajout en favoris ou la sauvegarde des articles pour une lecture ultérieure, formater les articles pour une lecture plus facile, proposer un mode de lecture sans distraction… sans oublier le partage des articles.

Les nouveaux articles
La liste des différents flux disponibles

La lecture des articles dans leur format d’origine, la prise en charge des flux audio/vidéo, l’intégration avec des applications mobiles ou l’ajout d’articles en provenance du navigateur sont également envisagés.

Aucune date de disponibilité n’a pour le moment été annoncée, mais nous sommes beaucoup trop tard dans le calendrier de développement de GNOME 3.18 pour espérer ne serait-ce qu’une pré-version avant GNOME 3.20, prévu quant à lui pour le mois de mars 2016.

Gravatar de Okki
Original post of Okki.Votez pour ce billet sur Planet Libre.

Okki : Nouveau composant GTK+ pour l’affichage des images

jeudi 9 juillet 2015 à 21:38

Dans le but d’éviter la duplication de code et ainsi faciliter le développement et la maintenance des différentes applications qui nécessitent de pouvoir afficher une image en taille réelle (le Visionneur d’images, Photos, un client Twitter ou de messagerie…), Timm Bäder s’est attelé à développer un nouveau composant GTK+, GtkImageView.

Bien que toujours en cours de développement, ce dernier devrait, à terme, offrir des possibilités de mise à l’échelle, rotation, chargement asynchrone, prise en charge des gestes tactiles (pour la mise à l’échelle et la rotation), tout en permettant de définir différents niveaux de zoom.

Gravatar de Okki
Original post of Okki.Votez pour ce billet sur Planet Libre.

Philippe Scoffoni : Comment permettre des discussions entre utilisateurs dans Owncloud

mercredi 8 juillet 2015 à 23:51

Voici un rapide retour d’expérience sur une application développée pour Owncloud : User Conversation.

L’installation de l’application est très simple à un petit détail prêt. Le nom du dossier contenant l’application dans le fichier compressé mis à disposition doit être modifié en « conversations ». Sans cela l’application refusera de s’activer.

Passé cet obstacle, une nouvelle application est disponible. Elle vous permet de converser avec un autre utilisateur ou un groupe d’utilisateurs. Il s’agit des groupes définis dans Owncloud. Mais il n’est pas possible de créer une discussion en choisissant une liste de personnes. Pas possible non plus de lancer une discussion « publique », autrement dit visible par tous les utilisateurs.

Au niveau de la saisie des messages, pas de limite particulière sur la longueur des messages. Vous pouvez y intégrer des liens hypertextes, des images ou des fichiers. Pour les fichiers, il faut au préalable qu’ils aient été copiés sur votre compte Owncloud. Les images sont alors affichées comme sur mon exemple. Les documents sont également partagés à l’utilisateur à qui vous écrivez. Le document partagé apparaît à la racine des fichiers du destinataire. Il n’est pas possible de partager plus d’un document par message ou un dossier.

Lorsque quelqu’un vous a envoyé un message, l’icône de l’application Conversations passe en rouge. Dans la liste des utilisateurs et groupe à droite s’affiche en regard de ces derniers le nombre de messages non lus.

Cette application apporte un premier niveau de réponse pour le travail collaboratif autour des documents contenus dans Owncloud. Il serait également intéressant de pouvoir discuter ainsi autour d’un document par exemple.

D’autres solutions existent pour intégrer des fonctions de discussions comme un client de tchat basé sur le protocole XMPP : JavaScript XMPP Chat. La liste des fonctionnalités est assez intéressante, depuis les fonctions de discussion entre deux utilisateurs ou d’un groupe d’utilisateurs présent dans une « chambre de conversations ». Il est fait mention du support de WebRTC pour de la visioconférence. Une autre application du même type est disponible. Elle est basée sur Jappix Mini, mais son développement semble arrêté. Dans les deux cas, il vous faudra un serveur supportant le protocole XMPP ce qui alourdit la mise en œuvre.

Bref, si vous n’êtes pas trop exigeant et cherchez une solution simple, l’application User Conversations est un début de solution.


Réagir à cet article

Article original écrit par Philippe Scoffoni le 08/07/2015. | Lien direct vers cet article

Cette création est mise à disposition sous un contrat Creative Commons BY à l'exception des images qui l'illustrent (celles-ci demeurent placées sous leur mention légale d'origine).

.

Gravatar de Philippe Scoffoni
Original post of Philippe Scoffoni.Votez pour ce billet sur Planet Libre.