Sommaire
Bonjour 😁,
Cette semaine, nous allons parler de serveur en entrepri·se...
(enfin plus serveur web en fait).
Saviez-vous que depuis janvier 2023, les mises à jour de sécurité sur 10 ans ne sont plus réservées à RedHat et à Microsoft Widows Server ?
Et oui... il y a un nouveau venu, alors, on en parle ? 😛
En tant que passionnés de technologies / développeur, nous voulons jouer avec les derniers jouets à la mode, télécharger la dernière Debian pour tester, ou encore installer un serveur web sur un Raspberry Pi.
Mais, une fois qu'on arrive dans le monde de l'entreprise, les choses ne fonctionnent pas de la même façon.
À ce jour, mes serveurs font fonctionner 5-6 services dont certains sont cruciaux pour mes clients.
De ce simple fait, j'évite les downtime le plus possible et je fais en sorte d'avoir une base solide, que je n'ai pas besoin de toucher tous les jours.`
(Ne pas déployer les mises à jour de sécurité, ce n'est pas une solution)
C'est une des raisons pour lesquels nous avons vu des solutions de PaaS (Platform as a Service) comme Heroku, Clever Cloud... etc. émergent, ces solutions permettent de ce focus uniquement sur son application et plus sur l'infrastructure derrière.
Mais dans mon cas, je suis resté sur le bon vieux cluster de serveur, simplement car au nouveau des couts, ça n'a rien à voir, et que surtout, je n'ai aucune limite dans la création.
Par exemple, cette application utilise des technologies très récentes telles que Typesense
Du coup, dans le but de développer les meilleures applications possibles, il me faut une liberté totale sur l'infra.
Rien que de pouvoir gérer les "headers" des serveurs web, peut drastiquement changer les performances de l'application.
Génial, j'ai une liberté totale, mais il faut maintenir les serveurs et surtout ne pas changer de distribution tous les deux ans (deux ans, ça passe vite).
Des technologies comme Docker tirent leurs épingles du jeu, les "libs" et "binaires" récents tourne dans des conteneurs isolés et l'hôte lui tourne sur des logiciels stables et testés plus longtemps.
Mais du coup comment garer un hôte stable et sécurisé pendant des années ?
Pour cela, il faut utiliser un système qui met à disposition de ses utilisateurs des mises à jour de sécurité pendant une longue période, dans le monde Linux, une entreprise est bien connue pour faire ça, RedHat.
En plus de ça Redhat fournit le patch du noyau à chaud avec kpatch, qui permet de patcher le noyau Linux sans reboot.
Depuis, janvier 2023, Ubuntu, via son offre Ubuntu Pro permet désormais d'avoir des patchs de sécurité pendant une période de 10 ans, et le plus beau dans tout ça ? C’est gratuit jusqu'a 5 machines...
Enfin gratuit, avec une grosse limitation, on en parle plus tard 😛.
Nous voilà dans le vif du sujet...
Voici en bref ce que propose Ubuntu Pro :
Pour cela il faudra se rendre sur la page Ubuntu Pro
Plus bas dans la page vous pourrez voir "free for personnal use"
Une fois vos choix effectués vous aurez accès à l'interface Ubuntu Pro
Vous y découvrirez votre « token » que vous pourrez activer via la commande "sudo pro attach", à noter que la commande "pro" est dans le paquet "ubuntu-advantage-tools"
Cela aura pour effet d'activer les repository ESM et de vous donner accès au livepatching... mais attention 😮.
Il est important de comprendre que le paquet mis à jour sont ceux fournis par Ubuntu et non pas ceux de parties tierces, par exemple pour docker, n'utilisez pas les repository "docker-ce", mais plutôt la version disponible dans les repository Ubuntu.
Le livepatching de la version gratuite vous met sur le canal "beta".
C'est-à-dire que les patchs à chaud appliqué sur le noyau, après avoir été testé chez Ubuntu, sont directement déployés sur vos machines, vous en conviendrez pour de la production, c'est une mauvaise idée.
Si vous utilisez la version gratuite, le mieux selon moi est de désactiver le livepatching avec la commande "sudo pro disable livepatch".
Une fois cela fait, je vous invite à vérifier que quand la machine redémarre, tous les services qu'elle assure redémarrent également sans problème particulier.
Une fois cela fait, vous pouvez utiliser le paquet "unattended-upgrades" pour appliquer en heure creuse les patchs de sécurité.
Pour cela : "sudo apt install unattended-upgrades" puis "sudo dpkg-reconfigure unattended-upgrades".
Une fois « unattended-upgrades » installé, je vous conseille de définir quand chaque action doit être effectuée, afin d'éviter les mauvaises surprises...
Pour cela, utilisez la commande "sudo systemctl edit apt-daily.timer" et ajoutez le contenu suivant :
[Timer] OnCalendar= OnCalendar=01:00 RandomizedDelaySec=5m
Cela aura pour effet de vérifier les dépôts à une 1:00 du matin (avec une variation de 5 minutes)
Ensuite, utilisez la commande "sudo systemctl edit apt-daily-upgrade.timer" et ajoutez le contenu suivant :
[Timer] OnCalendar= OnCalendar=01:30 RandomizedDelaySec=0
À 1h30, si des patchs de sécurité doivent être appliqués, alors ils le seront.
Maintenant modifions directement unattented-upgrades, pour l'autoriser à redémarrer le serveur quand c'est nécessaire (généralement quand il y a des mises à jour du noyau) :
Pour cela : "sudo nano /etc/apt/apt.conf.d/50unattended-upgrades"
Cherchez la ligne "Unattended-Upgrade::Automatic-Reboot" et modifiez la valeur de "false" à "true".
Pour définir quand redémarrer, modifier la ligne "Unattended-Upgrade::Automatic-Reboot-Time" et mettez la valeurque vous souhaitez, dans mon cas : Unattended-Upgrade::Automatic-Reboot-Time "02:00" pour 2h du matin.
Un petit redémarrage du service « unattended-upgrades », et c'est tout bon : "sudo systemctl restart unattended-upgrades"
Pour vérifier que tout a bien fonctionné le lendemain, vous pouvez vérifier les logs : "cat /var/log/unattended-upgrades/unattended-upgrades.log", vous devriez voir qu'aux heures choisies, des actions ont été effectuées, il peut s'agir uniquement de vérification de mise à jour si rien de neuf n’est à installer 😁.
Alors, oui, je sais, on aime bien avoir un gros uptime, mais...
Quand on me dit "mon serveur n'a pas redémarré depuis 3 ans", je n'ai qu'une phrase en tête : « OK, mais il se passera quoi le jour où tu redémarres ? 😛 ».
La stabilité de GNU/Linux n'est plus a prouvé, je sais très bien qu'il peut tourner des années sans reboot, du coup, me concernant, s'il redémarre de temps en temps, ça ne me pause aucun souci (enfin pas en heure d’utilisation intensive bien sûr 😛).
Je préfère savoir immédiatement qu'il y a un souci et qu'une machine ne redémarre pas plutôt que de le découvrir, « contraint et forcé », dans un moment de rush « chaud ».
Après Redhat, Ubuntu se met aux mises à jour de sa distribution sur 10 ans, cela fait plaisir pour les entreprises qui, comme moi, ne sont pas passées au cloud et aux PaaS.
Cela donne une alternative complètement viable en environnement de production, tout en restant dans un écosystème Open Source.
Linux passe partout, un CPU de la RAM et ça tourne 😍 (bon du stockage, une carte réseau ... aussi 😁)
Je n'ai rien contre les PaaS, pour certains projets de client nous sommes chez Clever Cloud qui tourne très bien, mais j'aime continuer de comprendre comment mon infra tourne.
Passez une très bonne semaine et à la semaine prochaine 😉.