Fail2ban, un ami qui ne leur veut pas du bien

Depuis que je me suis mis à gérer mes propres serveurs, j'installe systématiquement le très bon outil fail2ban.

Pour ceux qui ne le connaîtraient pas, cet outil va surveiller les divers journaux sur une machine linux et, selon des règles, bannir les adresses IP ayant tenté de se connecter avec des mauvais comptes ou ayant essayé l'exploitation de failles connues. Ce bannissement prend la forme d'une ligne dans le firewall de la machine qui fera un DROP manu militari.

Ces filtres sont souvent de la forme "si IP rate son authentification SSH 3 fois en 5 minutes alors la dropper pendant 1 heure". Et le drop est bien pratique car il coupe toute communication entre l'IP et le serveur avant même que le middleware (SSH, FTP, HTTP) ne soit appelé. Cela réduit donc la charge de la machine car les middlewares n'ont même plus à traiter les demandes et peuvent traiter uniquement les requêtes légitimes. De plus, c'est un outil d'adminsys donc barbu, le bannissement peut être général : un bannissement sur SSH bloquera aussi les tentatives sur FTP & HTTP (c'est mon cas)

Sauf que les script-kiddies et autres pirates connaissent aussi fail2ban. Et il savent aussi quels sont les durées de bannissement moyennes. On voit donc de plus en plus les tentatives arriver par salves courtes sur plusieurs journées pour contourner au maximum les filtres. Cela entraîne un jeu de chat et de la souris :

  1. les attaquants tentent d'entrer sur la machine
  2. Ils se font attraper et bannir pour une heure
  3. Au bout d'une heure, le bannissement est levé et retour au point 1

C'est là que fail2ban montre sa puissance en surveillant ses propres journaux et en bannissant les malotrus sur une plus grande durée (de l'ordre de la semaine au minimum) Sur la plupart de mes serveurs cela a eu un effet radical et une IP bloquée en récidive ne revient qu'en moyenne au bout de 3 mois.

Et j'en arrive à cela :

Fail2ban jails

Un flux quasi constant de blocages "normaux" et une liste de récidivistes qui ne désemplit pas. Et surtout une machine dont la consommation de ressources a baissé de 15%.

Refonte (encore)

Cette fois, c'est bon !

Je me suis fait violence pour le sortir dans cet état :il manque encore beaucoup de choses mais au moins il est lancé. Eat your own dogfood.

Comme je le dis mal dans cette page, ce site est une tentative pour revenir des silos et maîtriser mes données sur le réseau. Il y a pas mal d'entre elles qui sont encore éparpillées, genre les tweets, et cela va encore me demander du travail pour tout rapatrier icelieu.

En attendant, n'hésitez pas à me répondre sur Twitter si vous voyez des soucis. Les commentaires n'existent plus, mais sont stockés quelque part, le temps que je trouve quelque chose de potable, hint: webmentions.

Le flux RSS et les anciens billets devraient être correctement redirigés vers le nouveau site.

Oui mais

J'ai l'heur, depuis quelques jours et en attendant l'arrivée d'un navigateur récent sur mon poste, de travailler avec IE8 uniquement. J'en déduis une chose importante : la progressive degradation ne sert à rien; le progressive enhancement est la seule bonne méthode.

J'enseigne, tu éduques

Cet article de Rue 89 me fait bondir. Un enseignant obligé de crier sur la toile son désarroi face aux parents qui abandonnent leur propre rôle.

Enseigner est donc éduquer, mais éduquer n'est pas forcément enseigner. Il est du devoir des parents d'éduquer leurs enfants et de l'enseignant d'instruire. (WPFR)

Même si mon expérience parentale ne se limite pour le moment qu'à la maternelle, je suis déjà désolé de voir des parents "suggérer" aux instituteurs des actions à faire avec leur progéniture et ce de manière assez véhémente. Voire, et parce que c'est à la mode, de se plaindre auprès de la directrice d'une hypothétique théorie...

La loi autorise l'instruction à la maison. Donc, parents, si vous déconsidérez l'enseignant, faites-le ! Vous verrez que ce n'est pas un travail à la gueule du client voire un métier de fainéant. Pendant que vous êtes à votre bureau/atelier/whatever avec une dizaine de collègues dans une relative indépendance, l'enseignant est lui en train d'instruire en moyenne 30 personnes tout en collant au mieux au programme scolaire de l'année, sans parler des différences entre les enfants.

Mettez-vous dans la peau de l'instituteur qui se prend une volée de bois vert car un enfant de petite section n'est pas propre ! Est-ce son rôle ? Non. Par contre, c'est son rôle de punir l'enfant qui n'a pas effectué son travail à la maison. Laisseriez-vous votre entrepreneur immobilier impuni car il ne vous a livré qu'une partie de votre nouvelle maison ou pis n'a rien fait ?

Je crois que, plus que tout autre, le métier d'enseignant est une vocation. Et à devoir composer entre un programme de plus en plus lourd (heureusement car cela démontre que nos connaissances s'accroissent) et des parents qui ont abdiqué leur rôle d'éducateur, je ne peux que les féliciter de tenir encore bon.

One language to rule them all (oh god no !)

@pivwan T'en as pas marre d'utiliser des saloperies en PHP?

-- Nikkau (@Nikkau) December 18, 2013

Paradoxalement non, je n'en ai pas marre. Pourquoi ? Probablement parce que je considère PHP comme le langage le plus approprié pour gérer un simple site web avec une base de données bête et méchante.

PHP c'est tout pourri et surtout on fait de la merde avec...

J'entends tout à fait cet argument. Cependant, le mot PHP peut être remplacé n'importe quel langage et ce sera la même chose. Je suis très volontiers d'accord avec le fait que des codes PHP immondes pullulent encore et participent à cet état de fait. Cependant :

  1. C'est un langage simple pour faire des choses simples. il est possible de faire de grandes choses mais cela implique d'avoir une équipe très compétente.
  2. Oui, c'est un joyeux foutoir dans les nommages de fonctions (genre les chaînes de caractères & mbstring) mais il faut se rappeler que les objets & namespaces ne sont pas des concepts présents dès la conception du langage. L'arrivée des namespaces a, à mon sens, très fortement contribué à rationaliser tout cela.
  3. La compatibilité descendante. On pourra dire ce que l'on veut, mais PHP doit faire partie des langages les plus permissifs que je connais sur le sujet. J'ai vu peu de fonctions réellement retirées du langage.
  4. La sécurité intrinsèque de PHP est tout aussi mauvaise que celle des autres langages. Oui, il y a plus de CVE déclarées pour des projets incluant PHP (20000) que Perl (5000) mais ces chiffres sont à pondérer avec le nombre de projets web utilisant chaque langage.

Globalement, la qualité des codes PHP produits ces dernières années s'est améliorée. Des frameworks tels symfony2 ou zf2, des groupes comme le PHP- FIG, des spécifications telles que les PSR et des outils comme composer ont participé à une élévation du niveau. Et, de ce que je peux en lire sur internals, un mouvement pour rationaliser le langage et ses dépendances s'initie.

Le gang des bricoleurs

Je ne le répéterai jamais assez : chaque langage a ses forces & ses faiblesses. Utiliseriez-vous une visseuse pour planter un clou ? Bien sûr que non, et c'est pareil dans l'informatique.

Faire un site transactionnel en PHP est pour moi une aberration sans nom. Et a contrario, même si le langage est très puissant, je ne considère pas Java comme le bon langage pour coder un CMS (et pourtant j'en administre régulièrement)

Tout langage a été créé pour répondre à un besoin : il peut être détourné mais il faut bien comprendre les limites à ne pas dépasser, ce qui est souvent difficile.

Je suis un fervent partisan du couplage faible. Je veux bien un frontend en PHP qui publie des messages à destination d'autres applications. Mais non, développer un système de publish/subscribe en PHP est une mauvaise idée. Des outils comme ActiveMQ ou RabbitMQ le font très bien et ont le mérite de proposer des connecteurs pour PHP.

Donc oui, je continuerai à utiliser des composants en PHP si je considère que c'est l'outil le mieux adapté à ce que je veux.

Bref, il veut changer

Cela fera bientôt 5 ans que je suis dans ma société. Comme partout, il y a eu des hauts et des bas, mais je suis globalement satisfait de ce que j'ai pu y faire.

Mais déjà 5 ans. Et je suis déjà pris d'envies de changement. De part Paris Web, j'ai découvert un pan des métiers de l'internet que je ne connaissais pas. Et je me suis surtout rendu compte que, quoique j'en dise, je suis toujours un développeur et pas uniquement un administrateur.

Donc, si vous cherchez un devops (ou plutôt un OpsDev) avec une forte compétence Java, de bonnes connaissances en système *nix et un bagage en développement PHP, symfony 1 & 2, (plus un bon nombre de notions sur la qualité et l'accessibilité), je suis votre homme !

Tout est négociable, le salaire aussi, voire même un déplacement en province (genre Nantes, c'est sympa comme ville)

OpsDev en Freelance

Suite à une discussion avec un ancien collègue, je me prends à réfléchir à ma suite de carrière.

Je suis dans le backend (hébergement) avec un bagage frontend (css réduit, mais pas mal de PHP) et je pense appartenir à la catégorie des OpsDev (oui, les alter ego des devops)

On parle beaucoup des devops en sous-entendant les développeurs qui se sont construit un bagage backend, mais il existe, en nombre plus réduit, des administrateurs qui ont aussi un bagage frontend assez développé. Et ces personnes ont souvent du mal à trouver un job qui correspond à leurs aspirations. Quand on regarde les divers sites d'offres d'emploi spécialisés dans le web, on trouve beaucoup d'offres pour des experts sur divers frameworks web (quelque soit la technologie) avec un bagage technique sur l'administration. Les offres concernant des administrateurs techniques ayant un bon bagage frontend sont bien moins présentes.

Avec l'arrivée à maturité d'un bon nombre de plate-formes de virtualisation, même les PME peuvent obtenir un environnement propre, scalable et à peu de frais. Mais il y a un travail d'intégration à faire (front & back) pour que ce soit utilisable facilement en agence. Et c'est là que le opsdev intervient en ajoutant une compétence back aux projets front.

Amis d'agences et sociétés de taille moyenne, prendriez-vous un opsdev ? Une personne qui comprend votre métier, enfin je crois, tout en apportant sa contribution sur les parties "cachées" d'un projet web.

Liste chaînée

Mon pocket se remplit de liens en tous genres et plus ou moins frais. Vous devez déjà en connaître certains, découvrez-en d'autres.

  • Zapier API Status Board : un tableau de bord d'un concurrent, à mon sens, de IFTTT. Je ne me sers pas du produit en lui-même, mais cette page est bien pratique.
  • Webmentions : une alternative aux pingbacks qui semble prometteuse (utilisation intelligente des codes HTTP par exemple)
  • colourcode : un complément/une alternative à Kuler de Adode. J'aime bien
  • Comprendre le fonctionnement de la JVM partie 1 et partie 2 : même en travaillant dessus tous les jours, il est quelques fois nécessaire de se replonger dans la documentation liée aux mécanismes de la Java Virtual Machine.
  • Le versionning sémantique : si seulement tous les projets pouvaient adopter cette spécification...

100 jours sans fumer

Cela fait déjà une centaine de jours que j'ai arrêté de fumer des cigarettes. Je suis passé à la cigarette électronique et globalement, cela se passe bien.

Et tu n'as pas envie d'en fumer une ? Là, maintenant ?

Les premiers jours oui, j'ai eu envie de fumer. Mais le fait d'avoir commencé à vapoter tout en fumant mes dernières cigarettes et en me faisant un surdosage de nicotine comme avec un patch trop puissant m'a rapidement fait arrêter la cigarette. Autre astuce: le goût des liquides. Commencé avec un goût camel, j'ai rapidement changé pour des fruits et n'a plus envie de cigarette depuis. J'en suis même à baisser le dosage en nicotine de mes liquides.

Tu fais ton rebelle, tu la sors partout !

Vous pouvez ramener vos enfants devant l'écran. Cela ne parle que de cigarette. Par rapport au tabac, je vapote dans les mêmes lieux et m'impose les mêmes restrictions à deux exceptions près: au bureau (après accord de mes collègues) et chez moi.

Et la santé ? Tu as pris 20 kilos non ?

Je n'ai pas pris 20 kilos non, mais je fais attention. Je ne crois pas que ce soit la nicotine qui crée l'effet coupe-faim donc je dois faire attention à ce que je mange. Sinon oui, je vais mieux. J'ai retrouvé du goût et de l'odorat, je tousse moins et mes fameuses migraines sont de l'histoire ancienne. Les poumons sont encore encrassés, et devraient le rester encore quelques années, mais je vais mieux. Sur le sujet du "la cigarette électronique n'est pas nocive", elle l'est certainement beaucoup moins que le tabac oui. Mais il ne faut pas oublier qu'au lieu de goudrons et de produits brûlés, un vapoteur s'envoie de la nicotine et de la vapeur d'alcool dans les poumons.

On peut t'appeler Crésus maintenant !

Non, mais mes finances vont bien, merci de vous en inquiéter. Comparativement à la cigarette, passer à l'électronique assure une tranquillité d'esprit et de porte-feuille. Il n'y a plus le stress du dimanche matin avec un paquet quasi vide et les questionnements sur où aller chercher un paquet de clopes. Pareil pour la monnaie, disparus les calculs savants à la machine à café ou au magasin pour savoir si l'on peut acheter le pain et son paquet de clopes. Un rapide calcul m'a permis de constater que mon budget "plâtrage de poumons" a été divisé par huit environ.

Et maintenant, tu comptes faire quoi ?

Baisser le dosage et définitivement arrêter. J'ai commencé à vapoter avec un dosage à 16mg/l de nicotine dans mes liquides, ce qui correspond à un paquet de cigarettes quotidien. Depuis quelques jours, je suis descendu à 11mg/l, équivalent à un demi-paquet. Sur le dosage, cela ira. Le plus difficile va être de perdre le geste.

Fourre-tout : Google Analytics

Rapidement, parce que j'en aurai certainement encore besoin et que d'autres me l'ont demandé, quelques liens que j'ai trouvé sur un usage "intelligent" de Google Analytics et son paramétrage. A noter que j'ai principalement cherché des éléments liés à Universal Analytics et non GA.js.

Voilà, si vous avez d'autres liens/ressources pour mieux utiliser cet outil, n'hésitez pas à commenter!