# Faire ses mises à jour Faire ses mises à jour régulièrement est un des meilleurs moyens de protéger ses outils informatiques des cyberattaques. C'est cependant quelque chose qui est souvent négligé ou fait à une fréquence beaucoup trop faible. Pour ne pas oublier et garder un système frais et dispos, il est possible de les automatiser, du moins en bonne partie. Cependant, pour ce qui est des serveurs web, il faut faire attention parce qu'elles peuvent compromettre la disponiblité des services. Il est alors recommandé d'envoyer des alertes à l'administrateur plutôt que tout mettre à jour automatiquement. ## Sur GNU/Linux Sur GNU/Linux, il n'y a pas de mécanisme uniforme pour effectuer les mises à jour. Chaque famille de distribution a son propre système de gestion de paquetages. Mais, pour simplifier les choses, je vais vous en montrer 2: Debian et Arch. ### Debian Sur Debian, les mises à jour sont effectuées en deux étapes: - mettre à jour l'index des paquetages - installer les nouvelles versions disponibles des paquetages Il est possible de combiner ces deux actions avec cette commande: ```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} sudo apt update && sudo apt upgrade ``` Si on veut aller plus loin dans l'automatisation, il est possible de programmer les mises à jour de sécurité avec UnattendedUpgrades pour qu'elles s'effectuent en arrière-plan selon un calendrier précis sans avoir à s'en occuper. ### Arch Sur Arch, il y a deux systèmes de gestion de paquetages: - `pacman`, pour ce qui est officiellement supporté - AUR, pour ce qui est développé par la communauté Il y a plusieurs clients disponibles pour AUR, mais ce que je préfère utiliser, c'est `yay`, qui a exactement la même syntaxe que `pacman`. Vous avez déjà vu ce dernier précédemment, car c'est aussi `pacman` qui est utilisé dans MSYS2 sur Windows. Pour faire une mise à jour avec un de ces deux utilitaires, les commandes sont les suivantes: ```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} pacman -Syyu yay -Syyu ``` ## Sur macOS Il est possible d'activer les mises à jour automatiques dans les préférences du App Store. Aussi simple que ça ! ## Sur Windows Sur Windows, il faut installer une petite extension à PowerShell pour avoir accès aux fonctionnalités de mises à jour. Cette extension se nomme `PSWindowsUpdate`. Voici le code pour installer cette extension ```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} Install-Module PSWindowsUpdate ``` Une fois installée, vous pouvez obtenir la liste des mises à jour à installer comme suit: ```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} Get-WindowsUpdate ``` Et pour les installer, c'est comme suit (les commandes ont le mérite d'avoir des noms faciles à comprendre !): ```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} Install-WindowsUpdate ``` Si vous voulez automatiser le tout (sur Windows c'est beuacoup moins risqué comme les mises à jour ne sont que pour le système d'exploitation), alors il suffit de dire à l'ordinateur de tout accepter et qu'il peut redémarrer au besoin (important de faire les mises à jour la nuit alors !) ```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} Get-WindowsUpdate -AcceptAll -Install -AutoReboot ``` Plus qu'à utiliser ce que tu as vu au chapitre 1 et mettre cette tâche dans le planificateur de tâches. Nous allons configurer les mises à jour pour qu'elles s'installent chaque jour à 2h du matin. ```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} $action = New-ScheduledTaskAction -Execute 'Get-WindowsUpdate -AcceptAll -Install -AutoReboot' $trigger = New-ScheduledTaskTrigger -Daily -At 2am Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "mise-a-jour-nocturne" ``` ## Conclusion ~~ TODO ~~