Bonjour, plop, plop,
La question posee par David a propos de Debian8/12/whatelse me fait m'en poser une autre... On a tous une type de distrib qu'on prefere, parce qu'on est tombe dedans en meme temps que dans la potion magique, on connait ses secrets, bref c'est "la mieux" (tm).
Mais si on regarde en terme de duree de vie en production, tout en conservant des (vraies) mises a jour de securite, ou un vrai chemin d'upgrade qui ne casse pas tout, ca devient quoi "la mieux" ?
C'est la rentree des classes, vous avez 2H, et les reponses doivent etre argumentees, bien evidemment ;)
Salutations, Paul
La mieux va dépendre du contexte.
De mon côté perso, la famille est en Fedora, upgrade à chaque majeur, top à jour, ça juste marche.
Côté pro, je suis tombé dans Debian en 2001, la stabilité de la distro est appréciable en entreprise et on peut ajouter des repos d'éditeurs pour avoir des versions précises ou à jour de logiciels (DB, web, drivers, ...).
Néanmoins la prolifération des systemd-* dans Debian me pose problème, car il faut gérer le changement de beaucoup d'industrialisation avec l'IaC. Et quand on fait rencontrer deux mondes qui campent sur leurs positions, ça donne Debian 12 ou Fedora 40 nftables avec Docker Engine (de leur repo) qui n'en veut pas et qui ne sait pas se contenter de iptables-legacy qui wrappe vers nftables. Alors que toutes les docs de Docker disent qu'ils sont compatibles nftables ... Oui y a d'autres moteurs de conteneurs, mais ils ne sont pas tous compatibles avec les images clients.
Tout cela me fait dire qu'avoir une distribution stable dans le temps devient plus difficile ces temps-ci.
Je pense me tourner vers des distros minimalistes comme Alpine qu'on utilise en CICD ou conteneur ou du Arch, pour gérer du bare metal ou de la VM. Néanmoins il faudra faire une croix sur les repos d'éditeurs tiers beaucoup ne gèrent pas ces distributions.
Email Signature Le 03/09/2024 à 18:08, Paul Rolland (ポール・ロラン) a écrit :
Bonjour, plop, plop,
La question posee par David a propos de Debian8/12/whatelse me fait m'en poser une autre... On a tous une type de distrib qu'on prefere, parce qu'on est tombe dedans en meme temps que dans la potion magique, on connait ses secrets, bref c'est "la mieux" (tm).
Mais si on regarde en terme de duree de vie en production, tout en conservant des (vraies) mises a jour de securite, ou un vrai chemin d'upgrade qui ne casse pas tout, ca devient quoi "la mieux" ?
C'est la rentree des classes, vous avez 2H, et les reponses doivent etre argumentees, bien evidemment ;)
Salutations, Paul _______________________________________________ Liste de diffusion du %(real_name)s http://www.frsag.org/
Bonjour Paul,
Excellente question !
Le 03/09/2024 à 18:08, Paul Rolland (ポール・ロラン) a écrit :
Bonjour, plop, plop,
La question posee par David a propos de Debian8/12/whatelse me fait m'en poser une autre... On a tous une type de distrib qu'on prefere, parce qu'on est tombe dedans en meme temps que dans la potion magique, on connait ses secrets, bref c'est "la mieux" (tm).
Mais si on regarde en terme de duree de vie en production, tout en conservant des (vraies) mises a jour de securite, ou un vrai chemin d'upgrade qui ne casse pas tout, ca devient quoi "la mieux" ?
C'est la plus ancienne version Debian qui est encore disponible à l'installation standard chez mes fournisseurs préférés de serveurs dédiés.
Debian car il me semble que c'est la plus communément utilisée.
La plus ancienne car c'est la plus stable, celle qui a été le plus éprouvées par l'usage, la moins fourrée "d'innovations" pas encore vraiment sèches (plus bugées les unes que les autres), celle dont je connais le mieux les commandes et les subtilités de gestion, celle pour laquelle mes dispositifs anti-pirates sont les plus optimisés.
Encore disponible à l'installation pour permettre sa réinstallation, au cas où ce serait nécessaire.
C'est la rentree des classes, vous avez 2H, et les reponses doivent etre argumentees, bien evidemment ;)
Salutations, Paul _______________________________________________ Liste de diffusion du %(real_name)s http://www.frsag.org/
Salut,
"Paul Rolland (ポール・ロラン)" rol+frsag@witbe.net wrote on 03/09/2024 at 18:08:07+0200:
Bonjour, plop, plop,
La question posee par David a propos de Debian8/12/whatelse me fait m'en poser une autre... On a tous une type de distrib qu'on prefere, parce qu'on est tombe dedans en meme temps que dans la potion magique, on connait ses secrets, bref c'est "la mieux" (tm).
Mais si on regarde en terme de duree de vie en production, tout en conservant des (vraies) mises a jour de securite, ou un vrai chemin d'upgrade qui ne casse pas tout, ca devient quoi "la mieux" ?
Puisqu'on parlait de Debian, un petit paragraphe sur son cycle de vie.
Une release stable sort en moyenne tous les deux ans. Elle est supportée par la Release Team et la Security Team en tant que stable jusqu'à la sortie de la suivante (~2 ans). Ensuite elle devient « oldstable » et elle est encore maintenue par les mêmes teams environ un an.
Quand les teams en questions arrêtent de la supporter, l'équipe des backports ferme aussi les backports, et l'équipe LTS prend le relais. C'est typiquement ce qui est arrivé à Bullseye mi août.
La LTS permet de porter le support environ à 5 ans. Ensuite, c'est le projet Extended LTS porté par Freexian qui prend le relais.
ELTS en rajoute 5 de plus environ.
Par exemple, Jessie est encore supportée via ELTS jusque fin juin 2025.
Mais officiellement ce n'est plus le projet qui la supporte.
Donc selon comment tu comptes, Debian est en haut du panier (sans doute avec RHEL, qui fait 5 ans de full support, 5 ans de maintenance support, + des options - chères pour3 ans de plus après).
Perso j'utilise pas Debian pour ça. Mais c'est cool de savoir que les vieilles releases sont bien couvertes.
Bonjour,
Dans mon cas professionnel et personnel j'utilise Debian car c'est stable, les maj de sécurité arrivent vite et il y a une grande communauté.
Après la sortie de la version X.1 de la dernière version stable je commence à migrer tous le parc soit environs 200 VMs et une dizaine de serveurs physique. Ça me prend généralement un mois en temporisant entre les environnement de dev, staging, rc et prod. Pendant cette période j'adapte mes playbooks ansible à cette nouvelle version.
Avoir un parc à jour s'est s'éviter des grosses migrations quand il n'y a plus le choix...
Cordialement,
-- Adrien Waksberg
Le 3 septembre 2024 21:05:54 GMT+02:00, Vincent Finance linuxmario@linuxmario.net a écrit :
Liste de diffusion du %(real_name)s http://www.frsag.org/
Le Tue, Sep 03, 2024 at 09:05:54PM +0200, Vincent Finance a écrit :
La deuxième est une BSD réputée pour sa sécurité, sa stabilité et ses paquets assez frais. Elle se met à jour facilement si on reste en -stable et les migrations sont pas trop chiantes et balisées. La version n-1 reste encore maintenue quelques mois avant de finir comme le reste.
OpenBSD a un cycle de vie de 1 an. Une nouvelle version apparait tous les 6 mois (autour de mai et novembre généralement). La version X-1 est maintenue pendant 6 mois après la sortie de la version X.
Par rapport à une Debian, c'est rapide :)
Le maintient à jour d'une version se fait avec la commande syspatch (pour `base`) et pkg_add (pour les paquets tiers). La mise à niveau de X-1 à X se fait avec une commande : sysupgrade. C'est tout automatisé.
Denis
Bonjour,
Je vais prêcher pour ma paroisse, mais FreeBSD a un cycle de vie un peu plus long que FreeBSD, en tous cas pour les versions majeures. Eg 13.x / 14.x. L'upgrade est "facile" avec freebsd-upgrade (ou encore aisée avec pkgbase).
OpenBSD a un cycle de vie de 1 an. Une nouvelle version apparait tous les 6 mois (autour de mai et novembre généralement). La version X-1 est maintenue pendant 6 mois après la sortie de la version X.
Je vais prêcher pour ma paroisse, mais FreeBSD a un cycle de vie un peu plus long que FreeBSD, en tous cas pour les versions majeures. Eg 13.x / 14.x. L'upgrade est "facile" avec freebsd-upgrade (ou encore aisée avec pkgbase).
Tu peux aussi faire ton repo de pkg avec tes options.
https://www.freebsd.org/releases/
Dispo off ML pour plus d'info.
/Xavier
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
Bonjour, sur la liste depuis quelques temps en mode "spectateur" :). Pour ma part, c'est du gentoo car rolling release (j'en ai qui tournent toujours et sont à jour sur des vieilles archis i386) et freebsd pour les derniers serveurs... :) My two cents.
Envoyé avec la messagerie sécurisée Proton Mail.
Le mardi 3 septembre 2024 à 18:08, Paul Rolland (ポール・ロラン) rol+frsag@witbe.net a écrit :
Bonjour, plop, plop,
La question posee par David a propos de Debian8/12/whatelse me fait m'en poser une autre... On a tous une type de distrib qu'on prefere, parce qu'on est tombe dedans en meme temps que dans la potion magique, on connait ses secrets, bref c'est "la mieux" (tm).
Mais si on regarde en terme de duree de vie en production, tout en conservant des (vraies) mises a jour de securite, ou un vrai chemin d'upgrade qui ne casse pas tout, ca devient quoi "la mieux" ?
C'est la rentree des classes, vous avez 2H, et les reponses doivent etre argumentees, bien evidemment ;)
Salutations, Paul _______________________________________________ Liste de diffusion du %(real_name)s http://www.frsag.org/
À la boite, l'idée est de :
- Se simplifier la vie : On est en *"nodoze mode"* sur tout le parc.
- D'avoir quelque chose de raisonnablement uniforme : Serveurs : Xen + Debian (actuellement de 8, 10,11,12, legacy oblige). Stations : Ubuntu 18.04 LTS (il doit en rester 4/5), 22.04 LTS et maintenant 24.04 LTS On a en commun la 'racine debian', l'arborescence, le packaging, systemd, etc. Mais bien sûr, les diff. de versions sont telles qu'en dev, on télé-compile sur les servs.
*Coté serveurs*
J'aurais peut être eu une /autre approche/ si je n'avais eu que des serveurs à gérer. Peut-être que j'aurais été vers /FreeBSD/. Mais Debian est très fiable.
Pour l'hypervision des serveurs, Xen est un bonheur absolu. On maîtrise le mode PVH de Xen depuis 4 ans, qui est une tuerie de speed. La R&D, ça vaut le coup parfois.
La 'pieuvre' Systemd, c'est nettement mieux qu'initd, mais à condition de lire la doc... Faut évoluer parfois ;> Sur les serveurs, tout le reste de la pieuvre n'est pas utilisé (networkd, resolved, etc.) au profit de networking/interfaces. Les softs les plus utilisés sont recompilés avec les bons modules (nginx par exemple) pour implémenter du Fast_CGI compatible avec de la prod de site WP. Tout le routage et le firewalling est scripté à coups de commandes ip et iptables. Pas de proxmox, pas de "zinaagaz", rien que de la base et de l'automation maison. Notre philosophie est le KISS.
*Coté stations*
Si l'on cherche à faire une station qui puisse faire aussi bien, voire poutrer du doze (tas de merde) ou du MacOS (vieux tas pas si ergonomique) , il faut /nettement plus qu'une config de simple serveur/. Je souhaite avoir des stations avec des fonctionnalités a minima identiques à celles des OS pré-cités. Dans cet esprit (par exemple), l'hibernation hybride est systématiquement paramétrée (l'utilisateur replie l'écran de son portable, il passe en veille simple - qui consomme encore un peu mais permet une reprise immédiate - Sans activité, au bout de 2 heures (notre choix), le portable sort fugitivement de sa veille et passe en hibernation totale puis coupe complètement son alimentation). Je ne comprends pas pourquoi ce n'est pas implémenté par défaut sous Ubuntu.
Sur les stations, on garde toute la pieuvre coté réseau, obligatoire quand on a du filaire, du wifi, du wlan et du BT dans un seul portable, sans compter une flopée de VPN internes ou externes. Jusqu'à la 22.04 LTS, snap était systématiquement viré. Depuis la 24.04 LTS, on a renoncé... Ils ont mis en snap trop de choses vitales et c'est pas fini semble t-il. Après tout, ça nous simplifie la vie sur certains softs qui doivent être à la dernière stable. Oui, c'est lâche. Oui, snap est un malware. Enfin, on est toujours sous x11 pour éviter cette chiure de wayland et toutes les emmerdes qui vont avec.
On tient à conserver Ubuntu car elle passe parfaitement pour les users (bien paramétré, c'est du MacOS en nettement mieux coté ergonomie). Pour le dev ou le graphisme, c'est juste top ainsi. Les PPA à dispo, des noyaux à jours, parfaits pour du CM récentes ou des écrans récents (je pense aux Dell 43" de station qui ne passent en veille que sur des noyaux d'au moins 2022).
*Les inconvénients*
Coté serveurs, Debian bouge un peu trop, de version en version, faut reprendre des choses. Avec FreeBSD, j'imagine que j'aurais plus de stabilité d'une version à l'autre. Et ZFS (entre autres). Ubuntu et Gnome bougent beaucoup. Le passage à la 24.04 a été un peu chronophage (mais on y est arrivé). Gnome est très cohérent coté UX quand on a du VPN, du WLAN, etc. mais Nautilus et Samba est (pour l'instant) un peu cassé en 24.04 (40 secondes pour se connecter (?!), donc on est passé par mount.cifs direct via un script iconifié.
*Conclusion*
Ce combo n'est pas parfait mais fonctionne plutôt bien. Le CTO a la paix ;>
Bonjour,
Beaucoup de reponses interessantes, et qui amenent d'autres questions. Alors, je vais reprendre un certain nombre de points ci-dessous.
D'abord, systemd. Cite plusieurs fois, il semble avoir un petit cote clivant, genre on aime/on n'aime pas du tout. J'ai rale contre lui quand il est apparu, j'aime bien init, mais surtout j'y etais habitue. Mais comme l'a ecrit Stephane :
La 'pieuvre' Systemd, c'est nettement mieux qu'initd, mais à condition de lire la doc...
et je suis assez d'accord, on finit par faire des choses bien sympa avec ;)
Mais pour revenir a la question telle que je la pensais dans mon mail initial, il semble que pas mal d'entre vous sont plutot Debian (je ne compte pas les *BSD-lovers, je pensais Linux quand j'ai redige mon premier mail... et j'ai oublie de l'ecrire). Pierre-Elliott nous a presente le cycle de vie/release de Debian, et il semble qu'une version soit "supportee" environ 10 ans si j'ai bien compris: - 2 ans par la Release Team+Security Team - 1 an par les meme en "oldstable" - 2 ans de plus en "LTS" ce qui fait un total de 5 ans, avec le passage en ELTS pour 5 ans de plus. C'est comme ca sur toutes les versions ?
Laurent de son cote a mentionne le point :
Encore disponible à l'installation pour permettre sa réinstallation, au cas où ce serait nécessaire.
De mon cote, je garde toujours dans un coin une copie des ISOs d'installation, et a ce jour, je ne suis pas encore tombe sur le cas ou une ISO serait inutilisable parce que reference a des repos qui ne sont plus dispos. Ca permet d'avoir un peu de stabilite dans les installations, mais encore faut-il etre en mesure de mettre a jour une fois installe, pour ne pas avoir une passoire.
Tiens, d'ailleurs, en parlant de passoire... On est tous ici bien au courant que les bugs de secu, ca existe, et que les distributions mettent a jour (plus ou moins vite). Mais la facon de mettre a jour n'est pas homogene et cote RH/CentOS, l'approche "patch sur la version retenue", c'est un peu casse-pieds. Je m'explique, exemple a l'appui : debut d'ete 2024, cve-2024-6387 aka RegreSSHion. Le probleme est present (entre autre) sur versions from 8.5p1 up to, but not including, 9.8p1 (source Qualys). CentOS9S, c'est une 8.7p1... mais le package est 8.7p1-43... et en cherchant, on tombe sur : https://bugzilla.redhat.com/show_bug.cgi?id=2294604 Dans le monde RedHat, c'est a partir de -38 qu'on a le fix. Donc, evidemment, avec une version 8.7, on a droit a une banner qui dit remote software version OpenSSH_8.7 et donc forcement, tous les remotes scans passent la C9s en mode "critical".
Sur les autres distris, c'est gere comment ?
Paul
Salut,
Un serveur avec un OS de plus de 2-3 ans est symptomatique d'un problème technique (capacité à deployer limité, faible maitrise de ce qui tourne sur le serveur) ou organisationnelle (incapacité à gérer le changement de manière régulière)
Une forte longévité des OS, c'est un piège Les machins qui tournent depuis 7-10 ans, ce sont des pots de pus, qui n'ont pas évolué depuis des années, et dont l'évolution sera naturellement douloureuse
Alors bien sûr, avec certains OS (Debian), tu peux mettre à jour ton serveur et c'est plus facile: - modifier tes modules puppet pour intégrer la nouvelle version, incluant les nouvelles confs etc - upgrade ou rebuild ton serveur (en fonction de ce qu'il fait) - profit
Comme la mise à jour n'est pas supportée chez RHEL, bah tu l'as dans l'os et ça passe en mode "projet" avec rebuild impératif etc etc
Également, le support "LTS", c'est du bullshit (partout). Officiellement, y'a du support, oui. Dans les faits, si y'a un terrible problème, on mettra bien quelques ressources dessus. Mais croire qu'on va bichonner un vieux bousin ? De la naiveté.
Plus on s'éloigne de la release date, et plus le support du produit se détériore.
On 9/6/24 3:15 PM, Paul Rolland (ポール・ロラン) wrote:
Bonjour,
Beaucoup de reponses interessantes, et qui amenent d'autres questions. Alors, je vais reprendre un certain nombre de points ci-dessous.
D'abord, systemd. Cite plusieurs fois, il semble avoir un petit cote clivant, genre on aime/on n'aime pas du tout. J'ai rale contre lui quand il est apparu, j'aime bien init, mais surtout j'y etais habitue. Mais comme l'a ecrit Stephane :
La 'pieuvre' Systemd, c'est nettement mieux qu'initd, mais à condition de lire la doc...
et je suis assez d'accord, on finit par faire des choses bien sympa avec ;)
Mais pour revenir a la question telle que je la pensais dans mon mail initial, il semble que pas mal d'entre vous sont plutot Debian (je ne compte pas les *BSD-lovers, je pensais Linux quand j'ai redige mon premier mail... et j'ai oublie de l'ecrire). Pierre-Elliott nous a presente le cycle de vie/release de Debian, et il semble qu'une version soit "supportee" environ 10 ans si j'ai bien compris:
- 2 ans par la Release Team+Security Team
- 1 an par les meme en "oldstable"
- 2 ans de plus en "LTS"
ce qui fait un total de 5 ans, avec le passage en ELTS pour 5 ans de plus. C'est comme ca sur toutes les versions ?
Laurent de son cote a mentionne le point :
Encore disponible à l'installation pour permettre sa réinstallation, au cas où ce serait nécessaire.
De mon cote, je garde toujours dans un coin une copie des ISOs d'installation, et a ce jour, je ne suis pas encore tombe sur le cas ou une ISO serait inutilisable parce que reference a des repos qui ne sont plus dispos. Ca permet d'avoir un peu de stabilite dans les installations, mais encore faut-il etre en mesure de mettre a jour une fois installe, pour ne pas avoir une passoire.
Tiens, d'ailleurs, en parlant de passoire... On est tous ici bien au courant que les bugs de secu, ca existe, et que les distributions mettent a jour (plus ou moins vite). Mais la facon de mettre a jour n'est pas homogene et cote RH/CentOS, l'approche "patch sur la version retenue", c'est un peu casse-pieds. Je m'explique, exemple a l'appui : debut d'ete 2024, cve-2024-6387 aka RegreSSHion. Le probleme est present (entre autre) sur versions from 8.5p1 up to, but not including, 9.8p1 (source Qualys). CentOS9S, c'est une 8.7p1... mais le package est 8.7p1-43... et en cherchant, on tombe sur : https://bugzilla.redhat.com/show_bug.cgi?id=2294604 Dans le monde RedHat, c'est a partir de -38 qu'on a le fix. Donc, evidemment, avec une version 8.7, on a droit a une banner qui dit remote software version OpenSSH_8.7 et donc forcement, tous les remotes scans passent la C9s en mode "critical".
Sur les autres distris, c'est gere comment ?
Paul _______________________________________________ Liste de diffusion du %(real_name)s http://www.frsag.org/
Hello :)
(...)
Un serveur avec un OS de plus de 2-3 ans est symptomatique d'un problème technique (capacité à deployer limité, faible maitrise de ce qui tourne sur le serveur) ou organisationnelle (incapacité à gérer le changement de manière régulière)
Sans compter les patches... mais c'est une autre histoire.
(...)
Plus on s'éloigne de la release date, et plus le support du produit se détériore.
C'est valable aussi vis a vis des soft dessus... plus on prends de temps a upgrade plus la mise a jour sera difficile...
Exemple, que je suis en train de traiter en lab : migrer un gitlab-ce ... de 14 à 17.1...
Rien que ça me donne envie de bruler le soft.
Xavier
Le 06/09/2024 à 15:15, Paul Rolland (ポール・ロラン) a écrit : …
Tiens, d'ailleurs, en parlant de passoire... On est tous ici bien au courant que les bugs de secu, ca existe, et que les distributions mettent a jour (plus ou moins vite).
…
Un exemple sur un cas concret : le CVE-2021-41773 (https://blog.qualys.com/vulnerabilities-threat-research/2021/10/27/apache-ht...)
Dans les logs (/var/log/apache2/error.log), cela donne quelque chose comme ça :
AH00126: Invalid URI in request POST/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Il est apparu le 16/09/21 avec la 2.4.49 (https://www.apachelounge.com/Changelog-2.4.html).
Il a été corrigé le 07/10/21 avec la 2.4.51(https://httpd.apache.org/security/vulnerabilities_24.html)
Les serveurs sur lesquels on applique des mises à jour quotidiennes automatiques ont donc été exposés pendant 21 jours…
Bon, faut relativiser : il est très probable que les pirates n'aient pas été en mesure d'exploiter la faille dès le 16/09/21. Par contre elle est toujours régulièrement tentée d'après ce que je vois encore aujourd'hui comme attaques sur les serveurs que je gère.
On est évidemment toujours plus intelligent a posteriori mais lorsque les développeurs ont adapté la gestion des chemins de répertoire ("The path traversal vulnerability was introduced due to the new code change added for path normalization i.e., for URL paths to remove unwanted or dangerous parts from the pathname,") ils auraient pu être un peu proactif pour imaginer comment un pirate aurait pu exploiter le risque d'un chemin dangereux et faire des tests (encore des tests, toujours des tests).
Cela dit, je ne critique pas ici le travail des développeurs ni celui de l'équipe de sécurité. L'introduction involontaire d'un bug est inhérent au travail d'un développeur, quelque soit le soin qu'il mette à l'anticiper. Et débusquer un bug en seulement 21 jours (le plus dur étant de le repérer, la correction est ensuite souvent triviale) c'est déjà une belle performance.
Cependant, je reste convaincu qu'il est préférable d'attendre que d'autres prennent les risques de déployer une nouvelle évolution ; merci à eux :-)
Salut,
bah écoute merci ;)
Je met à jour mes 250 serveurs sous FreeBSD + les softs dessus 1 fois par semaine au minimum (des fois plus selon s'il y a des faille méga urgentes).
En 2 ans, je n'ai eu qu'une fois un soucis sur un logiciel, donc c'est relativement rare.
Et je préfère avoir un problème de ce genre plutôt que devoir gérer des catastrophes genre une faille exploitée.
David
On Fri, 6 Sep 2024 22:05:31 +0200 Laurent Barme 2551@barme.fr wrote:
Le 06/09/2024 à 15:15, Paul Rolland (ポール・ロラン) a écrit : …
Tiens, d'ailleurs, en parlant de passoire... On est tous ici bien au courant que les bugs de secu, ca existe, et que les distributions mettent a jour (plus ou moins vite).
…
Un exemple sur un cas concret : le CVE-2021-41773 (https://blog.qualys.com/vulnerabilities-threat-research/2021/10/27/apache-ht...)
Dans les logs (/var/log/apache2/error.log), cela donne quelque chose comme ça :
AH00126: Invalid URI in request POST/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Il est apparu le 16/09/21 avec la 2.4.49 (https://www.apachelounge.com/Changelog-2.4.html).
Il a été corrigé le 07/10/21 avec la 2.4.51(https://httpd.apache.org/security/vulnerabilities_24.html)
Les serveurs sur lesquels on applique des mises à jour quotidiennes automatiques ont donc été exposés pendant 21 jours…
Bon, faut relativiser : il est très probable que les pirates n'aient pas été en mesure d'exploiter la faille dès le 16/09/21. Par contre elle est toujours régulièrement tentée d'après ce que je vois encore aujourd'hui comme attaques sur les serveurs que je gère.
On est évidemment toujours plus intelligent a posteriori mais lorsque les développeurs ont adapté la gestion des chemins de répertoire ("The path traversal vulnerability was introduced due to the new code change added for path normalization i.e., for URL paths to remove unwanted or dangerous parts from the pathname,") ils auraient pu être un peu proactif pour imaginer comment un pirate aurait pu exploiter le risque d'un chemin dangereux et faire des tests (encore des tests, toujours des tests).
Cela dit, je ne critique pas ici le travail des développeurs ni celui de l'équipe de sécurité. L'introduction involontaire d'un bug est inhérent au travail d'un développeur, quelque soit le soin qu'il mette à l'anticiper. Et débusquer un bug en seulement 21 jours (le plus dur étant de le repérer, la correction est ensuite souvent triviale) c'est déjà une belle performance.
Cependant, je reste convaincu qu'il est préférable d'attendre que d'autres prennent les risques de déployer une nouvelle évolution ; merci à eux :-)
Salut David,
Et comment tu gères une maj 1 fois tous les 7 jours ? Ansible full auto calendriarisé ? Quand je dis gérer, je parle de gérer les serveurs PROD++ des serveurs moins PROD++ :)
Merci pour tes lumières.
David
Le sam. 7 sept. 2024 à 11:00, David Durieux david@durieux.family a écrit :
Salut,
bah écoute merci ;)
Je met à jour mes 250 serveurs sous FreeBSD + les softs dessus 1 fois par semaine au minimum (des fois plus selon s'il y a des faille méga urgentes).
En 2 ans, je n'ai eu qu'une fois un soucis sur un logiciel, donc c'est relativement rare.
Et je préfère avoir un problème de ce genre plutôt que devoir gérer des catastrophes genre une faille exploitée.
David
On Fri, 6 Sep 2024 22:05:31 +0200 Laurent Barme 2551@barme.fr wrote:
Le 06/09/2024 à 15:15, Paul Rolland (ポール・ロラン) a écrit : …
Tiens, d'ailleurs, en parlant de passoire... On est tous ici bien au courant que les bugs de secu, ca existe, et que les distributions mettent a jour (plus ou moins vite).
…
Un exemple sur un cas concret : le CVE-2021-41773 (
https://blog.qualys.com/vulnerabilities-threat-research/2021/10/27/apache-ht... )
Dans les logs (/var/log/apache2/error.log), cela donne quelque chose comme ça :
AH00126: Invalid URI in request POST/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Il est apparu le 16/09/21 avec la 2.4.49 (https://www.apachelounge.com/Changelog-2.4.html).
Il a été corrigé le 07/10/21 avec la 2.4.51(https://httpd.apache.org/security/vulnerabilities_24.html)
Les serveurs sur lesquels on applique des mises à jour quotidiennes automatiques ont donc été exposés pendant 21 jours…
Bon, faut relativiser : il est très probable que les pirates n'aient pas été en mesure d'exploiter la faille dès le 16/09/21. Par contre elle est toujours régulièrement tentée d'après ce que je vois encore aujourd'hui comme attaques sur les serveurs que je gère.
On est évidemment toujours plus intelligent a posteriori mais lorsque les développeurs ont adapté la gestion des chemins de répertoire ("The path traversal vulnerability was introduced due to the new code change added for path normalization i.e., for URL paths to remove unwanted or dangerous parts from the pathname,") ils auraient pu être un peu proactif pour imaginer comment un pirate aurait pu exploiter le risque d'un chemin dangereux et faire des tests (encore des tests, toujours des tests).
Cela dit, je ne critique pas ici le travail des développeurs ni celui de l'équipe de sécurité. L'introduction involontaire d'un bug est inhérent au travail d'un développeur, quelque soit le soin qu'il mette à l'anticiper. Et débusquer un bug en seulement 21 jours (le plus dur étant de le repérer, la correction est ensuite souvent triviale) c'est déjà une belle performance.
Cependant, je reste convaincu qu'il est préférable d'attendre que d'autres prennent les risques de déployer une nouvelle évolution ; merci à eux :-)
Liste de diffusion du %(real_name)s http://www.frsag.org/
Je lance la compilation des ports avec poudriere, ça me prend quelques minutes pour lancer et après ça compile tout seul pendant 2h à 18h (18h c'est quand on a une mise à jour majeure de l'OS et qu'il faut tout recompliler).
Une fois que c'est fait, je lance la mise à jour manuellement (faut que je fasse un script ansible) de gitlab qui prend environ 1 heure.
Une fois ça fait, je lance un pkg update && pkg upgrade -y pour tous les serveurs via ansible sur tous les serveurs, je lance, ça me prend 2 minutes max et ça se déroule tout seul en quelques minutes.
On fait cette action sur tous les serveurs, prod++ et prod--
David
On Sun, 8 Sep 2024 15:22:12 +0200 David RIBEIRO david.ribeiro76@gmail.com wrote:
Salut David,
Et comment tu gères une maj 1 fois tous les 7 jours ? Ansible full auto calendriarisé ? Quand je dis gérer, je parle de gérer les serveurs PROD++ des serveurs moins PROD++ :)
Merci pour tes lumières.
David
Le sam. 7 sept. 2024 à 11:00, David Durieux david@durieux.family a écrit :
Salut,
bah écoute merci ;)
Je met à jour mes 250 serveurs sous FreeBSD + les softs dessus 1 fois par semaine au minimum (des fois plus selon s'il y a des faille méga urgentes).
En 2 ans, je n'ai eu qu'une fois un soucis sur un logiciel, donc c'est relativement rare.
Et je préfère avoir un problème de ce genre plutôt que devoir gérer des catastrophes genre une faille exploitée.
David
On Fri, 6 Sep 2024 22:05:31 +0200 Laurent Barme 2551@barme.fr wrote:
Le 06/09/2024 à 15:15, Paul Rolland (ポール・ロラン) a écrit : …
Tiens, d'ailleurs, en parlant de passoire... On est tous ici bien au courant que les bugs de secu, ca existe, et que les distributions mettent a jour (plus ou moins vite).
…
Un exemple sur un cas concret : le CVE-2021-41773 (
https://blog.qualys.com/vulnerabilities-threat-research/2021/10/27/apache-ht... )
Dans les logs (/var/log/apache2/error.log), cela donne quelque chose comme ça :
AH00126: Invalid URI in request POST/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Il est apparu le 16/09/21 avec la 2.4.49 (https://www.apachelounge.com/Changelog-2.4.html).
Il a été corrigé le 07/10/21 avec la 2.4.51(https://httpd.apache.org/security/vulnerabilities_24.html)
Les serveurs sur lesquels on applique des mises à jour quotidiennes automatiques ont donc été exposés pendant 21 jours…
Bon, faut relativiser : il est très probable que les pirates n'aient pas été en mesure d'exploiter la faille dès le 16/09/21. Par contre elle est toujours régulièrement tentée d'après ce que je vois encore aujourd'hui comme attaques sur les serveurs que je gère.
On est évidemment toujours plus intelligent a posteriori mais lorsque les développeurs ont adapté la gestion des chemins de répertoire ("The path traversal vulnerability was introduced due to the new code change added for path normalization i.e., for URL paths to remove unwanted or dangerous parts from the pathname,") ils auraient pu être un peu proactif pour imaginer comment un pirate aurait pu exploiter le risque d'un chemin dangereux et faire des tests (encore des tests, toujours des tests).
Cela dit, je ne critique pas ici le travail des développeurs ni celui de l'équipe de sécurité. L'introduction involontaire d'un bug est inhérent au travail d'un développeur, quelque soit le soin qu'il mette à l'anticiper. Et débusquer un bug en seulement 21 jours (le plus dur étant de le repérer, la correction est ensuite souvent triviale) c'est déjà une belle performance.
Cependant, je reste convaincu qu'il est préférable d'attendre que d'autres prennent les risques de déployer une nouvelle évolution ; merci à eux :-)
Liste de diffusion du %(real_name)s http://www.frsag.org/
À la base j’étais en train de répondre à l’email «Longévité des OS»… et puis en me relisant j’ai noté que ma réponse était un peu hors sujet: désolé :-)
Voici un petit retour d’expérience de plus de 15 ans avec un parc d’environ 15 000 machines physiques actuellement réparties dans le monde entier pour du CDN vidéo.
Le problème de la gestion de la durée de vie de l’OS en production a été résolu en passant en mode «rolling release». Le concept de montée de version est donc une tâche comme une autre, surtout quand la vie de la version en production n’est que de 4 semaines maximum. Pourquoi 4 semaines ? Car on met 4 semaines à mettre l’ensemble du parc à jour, et dès qu’une version est déployée on passe à la suivante. On se permet une pause pendant les fêtes de fin d’année.
L' équipe «ops» est composée de moins de 8 personnes, mais en réalité c’est uniquement 1 seule personne (celle d’astreinte) qui gère l’ensemble du parc pendant sa semaine d’astreinte. Les 7 autres pendant ce temps, ils sont soit en vacances soit en train de coder les outils d’automatisation de leurs tâches, pour pouvoir survivre à leur prochaine semaine d'astreinte. Et donc pour la mise à jour de l’ensemble du parc, la personne «on duty» lance un script, qui va se charger de mettre l’ensemble des machines, par groupe (un seul membre de chaque cluster à la fois par exemple pour ne pas perturber le service). Et ceci va se dérouler sur environ 4 semaines, pour laisser le temps de détecter un problème et de mettre en pause le déploiement en cas de découverte de problème de dernière minute.
Pour arriver à cela, le principe KISS est prioritaire sur l’ensemble du reste (pas de documentation par exemple: un nouvel arrivé dois être capable de comprendre comment cela fonctionne en lisant le code qui doit donc rester simple.
Pour cela, voici ce qui a été choisi: - Pour l’OS il faut un truc simple qui offre tout l’outillage pour s’autoconstruire intégralement depuis ses sources: du FreeBSD; - Pour les applications, l’arbre des ports FreeBSD dispose du reste (ici c’est du nginx pour l’essentiel). - Et pour le processus de MaJ c’est la fonctionnalité Boot-Environment de ZFS est utilisée. On compile une sorte de «firmware» (OS+applications) qui est déployé sur un dataset ZFS et on indique au système de démarrer sur ce nouveau dataset. En cas de problème lors du démarrage, il va redémarrer automatiquement sur l’ancien. À par les fichiers de configuration du système (merci le concept POLA de FreeBSD), rien n’est utilisé de l’ancien dataset. Les disques qui stockent le contenu, eux, sont en UFS et ne sont pas touchés par ces mises à jour. - Et toutes les 4 semaines, on synchronise notre version interne avec les dernières versions disponibles. Pas les branches de «production», mais les branches de «dévelopement», c’est trop facile sinon. - Et tous les jours ou presque, on pousse nos contributions vers les projets open source utilisés, ce qui simplifie énormément le merge de notre branche interne lors de nos synchros.
La tâche de créer ce firmware est dédiée à l’équipe «dev OS»: Moins de 10 personnes aussi, mais c’est beaucoup car il y a un gros travail d'optimisation (cf les conférences de Drew Gallatin par exemple), mais ça, c'est pour nous permettre d’acheter les machines les moins chères, et donc de mettre plus d’argent dans la création de contenu.
Et maintenant avec ça il faut un système de test de régression aux petits ognons… ha ben cela tombe bien, c’est aussi inclus avec FreeBSD qui embarque plus de 9000 tests de régression (cela va du kernel aux outils userland). Exemple des rapports de tests FreeBSD en ligne: https://ci.freebsd.org/job/FreeBSD-main-amd64-test/lastCompletedBuild/testRe... Et si vous n’en avez pas assez ou que vous vous amusez avec une pile TCP personnalisée comme nous, il y a en plus les une «tcptest suite» de disponible pour 1000 tests de plus: https://ci.freebsd.org/job/FreeBSD-main-amd64-test_tcptestsuite/lastComplete...
Ces tests de régression sont lancés sur des VMs ici, puis tous les jours on lance un test A/B de charge réelle. Mais il nous est très compliqué de simuler en labo la diversité des équipements de nos clients et leur réseau domestique. Alors pour nous aider l’équipe «dev client», celle qui code le client qui tourne dans vos télés, smartphones, consoles, etc. a fait du bon boulot: Le logiciel ouvre et supervise plusieurs sessions vers plusieurs serveurs pour basculer le plus rapidement vers un autre serveur en cas de problème. Et grâce à cette robustesse notre domaine de jeu s’étends… à toute la production :-) On peut redémarrer un serveurs en pleine charge sans aucun problème (et on en profite). Bon, cela n’est plus très vrais avec nos prototypes 400Gb/s et 800Gb/s: L’impact est un peu trop visible sur certains liens Internet. Donc tous les soirs, on passe une partie de la production sur la version «du jour». C’est la version jeune de quelques heures qui a passée les tests de régression en VM. Cette version est déployée sur une 50aine de serveurs qui disposent d’un double pratiquement identique. C'est-à-dire à la même hauteur dans le rack d'à côté pour essayer d’avoir les températures/vibrations/etc. les plus comparables. Le lendemain, après environ 12 heures de charge, on reçoit des raports d’analyses statistiques des différences entre les 2 groupes. Et là, on compare tout ce que l’on peut: consommation électrique, température des SFP, nombre d’IO disques, charge CPU par processus, etc. En plus des données provenant des serveurs on dispose aussi de la comparaison des stats remontées par les logiciels clients qui se sont connectés sur chacun de ces 2 groupes (utile par exemple pour découvrir que l’on a cassé le TLS sur une famille de matériel clients). Et après 4 semaines d’itération la version «du jour - 1» est sélectionnée pour être la version «production» et débute son déploiement sur l’intégralité de la production. Pour le détail technique de la gestion des branches, cf une ancienne présentation du manager de l’équipe: https://papers.freebsd.org/2019/FOSDEM/looney-Netflix_and_FreeBSD.files/FOSD...
En cas de problème ou patch de sécurité à déployer rapidement, le processus est le même: On applique le patch et on reconstruit un nouveau firmware.
Bref, pour résumer: - du KISS dans les équipes (il n’existe pas de poste «chef de projet» par exemple), dans les process et dans les choix techniques ; - Quand on a peur d’une tâche comme la montée de version, le plus simple est d’en faire tous les jours ;-)
Salutations, Olivier