Auteur Sujet: Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS  (Lu 2775 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS

Voici un tutoriel un peu plus complexe : les opérations à faire lors de mise à jour d'Ubuntu dans une version supérieure.

Tout d'abord, je vais expliquer la méthode que j'utilise pour les mises à jour : un certain nombre de fichiers de configuration que vous avez modifiés manuellement sont mis à jour.
Pour ces fichiers, le process de mise à jour vous propose soit de ne pas toucher à la configuration que vous avez fait, soit de mettre la configuration mise-à-jour, mais en perdant vos modifications.
Personnellement, j'accepte systématiquement les nouveaux fichiers de configuration (et donc de perdre mes modifications). Cela permet d'être sûr que le système va fonctionner (quand un fichier de configuration évolue pas mal, garder la configuration que vous avez faite peut s'avérer problématique). À noter que le process de configuration ne détruit pas votre configuration : il la sauvegarde dans un fichier qui porte le même nom avec un suffixe rajouté -old.
Lors de la mise à jour, je note (dans un bloc note) chaque fichier de configuration où j'ai perdu les modifications manuelles. AU premier reboot, je vais ensuite examiner fichier -old par fichier -old les modifications que j'avais réalisées et réappliquer ces modifications dans le nouveau fichier de configuration. Ce n'est peut-être pas le plus rapide, mais vous avez un fichier à jour, avec des fichiers de configuration correspondant parfaitement aux nouvelles versions logicielles.

Si vous avez ce type de message (ici pour phpMyAdmin), je vous invite fortement à accepter la mise à jour proposée :


vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #1 le: 11 mars 2023 à 17:05:24 »
Ce qu'il faut faire avant la mise à jour :

1/ Bien connaitre le contenu du serveur et vérifier qu'on a bien les sauvegardes à jour

Exécuter ls /etc/cron.d et vérifier que l'on connait les différents services lancés sur le serveur.
Scripts inutiles au lancement à supprimer, autant le faire avant la mise à jour.

Exécuter sudo certbot certificates pour voir l'ensemble des certificats Let's Encrypt.
Pour chaque domaine, vérifier qu'on a une sauvegarde des données, mais aussi de la base de donnée associée.

Si vous faites du ménage, ne pas oublier de supprimer proprement les certificats Let's Encrypt inutilisés :
Si le certificat est encore valide : sudo certbot revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem --reason cessationofoperation
Si le certificat n'est plus valide : sudo certbot delete --cert-name example.com


2/ Récupérer le serveur DNS à utiliser

Ubuntu 22.04 (et les versions suivantes) utilisent systemd-resolved
- Si vous utilisez NetPlan pour l'adressage IP : aucun problème.
- Si vous utilisez /etc/network/interfaces avec une configuration DHCP : aucun problème.
- Si vous utilisez /etc/network/interfaces pour l'adressage IP avec une IP fixe : vous allez perdre la résolution DNS de votre serveur, il faudra la remettre en place au premier reboot et vous aurez besoin de connaitre le serveur DNS pour le configurer dans systemd-resolved. C'est moins de stress si c'est préparé avant la mise à jour.


3/ Lever les sécurité sur SSH et s'assurer que le port 22 n'est pas utilisé.

Si vous avez mis des sécurités sur SSH, je recommande de les désactiver lors de la mise à jour.
On les remettra en place au premier reboot.

Si pour une raison ou une autre SSH change de port pour revenir sur le port par défaut, c'est bien qu'il soit disponible pour ne pas se retrouver sans SSH.
Si ce n'est pas le cas, commenter les services tiers sur le port 22.


4/ Créer un dossier de sauvegarde pour les anciens fichiers de configurations

Le process de mise à jour va sauvegarder dans un fichier qui porte le même nom avec un suffixe rajouté -old vos fichiers de configuration modifiés manuellement. Au premier reboot, je vais étudier ces fichiers -old pour remettre la configuration personnalisée, mais je déconseille de laisser ces fichiers dans leur dossier d'origine ou cela peut provoquer une confusion lors des prochaines mise à jour : je déplace donc les fichiers -old dans un dossier spécifique.

Pour limiter le temps où le système ne fonctionne pas parfaitement, je crée le dossier avant la mise à jour. Cela fera une action de moins à faire après.
sudo mkdir /root/sav_conf_maj_ubuntu


5/ Appliquer les mises à jour de sécurité proposées et faire un dernier reboot

sudo apt update : permet de mettre à jour le catalogue de logiciels
sudo apt full-upgrade : permet de mettre tous les logiciels à jour.
sudo apt autoremove : Supprime les éventuelles dépendances devenues inutiles
sudo apt clean : permet de supprimer les paquets .deb téléchargés, toujours bien de faire de la place avant une mise à jour
sudo reboot : redémarre le serveur pour être sûr que les paquets utilisés soient bien dans leur dernière version

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #2 le: 11 mars 2023 à 17:05:31 »
Lancer la mise à jour

sudo do-release-upgrade : Lance l'outil de mise à jour.
Il faut suivre ce qui est proposé.
Ne pas oublier de noter chaque fichier de configuration où le système de mise à jour vous demande s'il faut installer le paquet du responsable du paquet (accepter systématiquement la configuration proposée par le mainteneur).
Une fois la mise à jour réalisée, il va vous proposer de supprimer les paquets obsolètes : je recommande de répondre favorablement avec "o" pour Oui.


Le choix entre la mise à jour vers une version LTS ou une version non-LTS se fait dans le fichier /etc/update-manager/release-upgrades
Par défaut, la mise à jour d'une version LTS se fait uniquement vers la version LTS suivante.

Pour permettre de sortir de cas de plantage, le système de mise à jour rajoute un port d'écoute de SSH supplémentaire : le port 1022
Si vous avez un firewall qui bloque tous les ports par défaut, il est donc préférable d'ouvrir ce port le temps de la mise à jour via iptables -I INPUT -p tcp --dport 1022 -j ACCEPT
Ce port ssh sera à utiliser en cas de plantage du process de mise à jour si le port ssh de votre système ne répond plus.
Au démarrage suivant, ssh n'écoutera plus sur ce port, c'est exclusivement pendant l'opération de mise à jour.

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #3 le: 11 mars 2023 à 17:09:58 »
Les actions à faire au premier redémarrage du serveur


Vérifier que la résolution DNS fonctionne.

Si ping lafibre.info fonctionne, c'est bon.

Si cela échoue, il faut savoir que la ligne #dns-nameservers 2001:860:b0ff:1::1 2001:860:b0ff:1::2 dans /etc/network/interfaces n'est plus utilisable.
Je recommande de supprimer / commenter cette ligne pour éviter de penser qu'elle sert à quelque chose.

Éditer le fichier de configuration principal de systemd-resolved : nano /etc/systemd/resolved.conf

Remplacer la ligne

#DNS=par les DNS à utiliser :

Exemple pour un serveur Scaleway :
DNS=62.210.16.6 62.210.16.7
Exemple pour un serveur sur une connexion Bouygues IPv6 :
DNS=2001:860:b0ff:1::1 2001:860:b0ff:1::2
Je recommande un reboot pour la prise en compte des nouveaux paramètres.



Vérifier qu'APT fonctionne, faire le ménage et vérifier la présence de mises à jour de sécurité

sudo apt update : permet de mettre à jour le catalogue de logiciels (normalement, c'est déjà fait).
sudo apt full-upgrade : permet de mettre tous les logiciels à jour  (normalement, c'est déjà fait).
sudo apt autoremove : Supprime les éventuelles dépendances devenues inutiles. Quelques paquets peuvent être à supprimer.
sudo apt clean : permet de supprimer les paquets .deb téléchargés par la mise à jour, vous allez gagner environ 1 Go.

Si vous avez des dépôts tiers, au moment de la mise à jour, vous avez eu le message suivant :

Citer
Mise à jour des informations sur les dépôts

Sources provenant de tiers désactivées

Certaines entrées de votre fichier sources.list, concernant des tierces parties, ont été désactivées. Vous pouvez les réactiver après la mise à niveau avec l'outil « Logiciels & mises à jour » ou avec votre gestionnaire de paquets.
il faut les réactiver manuellement :
cd /etc/apt/sources.list.d : Aller dans le dossier où les dépôts tiers sont ajoutés
ls : vérifier (si c'est vide, il n'y a rien à faire)

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #4 le: 11 mars 2023 à 17:15:55 »
Vérifier que tout est ok avec le serveur SSH :

On remet SSH en place. Si le port a été modifié (car directement configuré dans /etc/ssh/sshd_config ce que je ne recommande pas, parce que la mise à jour peut mettre à jour ce fichier)

Si pendant la mise à jour, vous avez eu ce message (où je vous invite à installer la version du responsable du paquet) :

mv /etc/ssh/sshd_config.ucf-old /root/sav_conf_maj_ubuntu/ : déplacement de l'ancien fichier de configuration de sshd vers le dossier de sauvegarde

nano /etc/ssh/sshd_config.d/client_alive.conf

Copier / coller le texte ci-dessous dans le fichier :
# Spécifie le port sur lequel le serveur écoute les connexions entrantes à la place du port par défaut 22
Port 2222
# Forcer un échange toutes les 4 secondes, pour éviter la déconnexion derrière un CG-NAT
ClientAliveInterval 4
ClientAliveCountMax 22
La connexion au reboot se fera avec ssh [login]@[nom de domaine] -p 2222

Optionnel : ne faire écouter SSH que sur les IPv6 : rajouter

AddressFamily inet6Optionnel : ne faire écouter SSH que sur une IPv6 dédiée (qu'il faudra configurer dans netplan), rajouter :
AddressFamily inet6
ListenAddress [2103:b860:de01:1100:2200:abcd:ef01:1100]

Si vous avez des comptes SFTP configurés dans /etc/ssh/sshd_config et que ce fichier a été mis à jour, il faut les remettre en place. Pour ce faire, on va ouvrir l'ancien fichier de configuration sauvegardé pour récupérer les lignes ajoutées et les mettre dans le nouveau fichier :
nano /root/sav_conf_maj_ubuntu/sshd_config.ucf-old

# adduser / deluser => adduser --home /home/newftp newftp
# Pour nommer plusieurs utilisateurs, séparez leur login par une virgule
Match User vivien1,vivien2,vivien3
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    PermitTunnel no
    ForceCommand internal-sftp



Mise à jour Ubuntu 18.04 ⇒ 20.04 : Attention iptables a changé de chemin !

Cela peut affecter fortement vos scripts iptables.
- Ubuntu 16.04 et 18.04 : /sbin/iptables
- Ubuntu 20.04 et 22.04 : /usr/sbin/iptables

Voir tutoriel :
5/ Limitation du nombre de connexions TCP simultanées par IP :
15/ Vérification les règles IPtables :

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #5 le: 11 mars 2023 à 17:25:14 »
Ensuite, il faut regarder votre bloc-note pour voir les fichiers de configuration qui ont été modifiés.

Je donne quelques exemples ci-dessous.

Optimisations réseaux
Je recommande aussi de mettre à jour le fichier pour les optimisations réseau et swappiness évoqué dans mon tutoriel d'installation :
3/ Optimisations réseau et swappiness :
Ce fichier a tendance à évoluer après quelques années... (je mets à jour mon tutoriel)

Configuration TLS
Un autre point qui peut évoluer avec les années, c'est la configuration TLS d'Apache
Ne pas hésiter à relancer Mozilla SSL Configuration Generator : https://ssl-config.mozilla.org/

La configuration du tutoriel peut avoir évolué :
6/ Configuration du configuration SSL de Apache 2.4, pour avoir un https qui respecte les bonnes pratiques :

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #6 le: 11 mars 2023 à 17:34:09 »
Optimisation pour réduire les écritures des SSD : /etc/logrotate.d/*

Cette petite astuce qui vise à réduire l'usure du SSD avec des écritures inutiles est mis à mal par la mise à jour qui va de nouveau activer la compression des log, entrainant des écritures inutiles sur un SSD.

1/ Déplacer les fichiers "-old" qui ont été mis à jour dans le dossier de sauvegarde
mv /etc/logrotate.d/*-old /root/sav_conf_maj_ubuntu

2/ Aller dans le dossier de la conf logrotate : cd /etc/logrotate.d/

3/ Chercher les fichiers de conf avec compress : grep compress *

4/ Supprimer delaycompress : sed -i '/delaycompress/d' /etc/logrotate.d/*

5/ Remplacer compress par nocompress : sed -i -e "s/compress/nocompress/g" /etc/logrotate.d/*

6/ Chercher les fichiers avec nonocompress : grep nonocompress *

7/ Remplacer nonocompress par nocompress : sed -i -e "s/nonocompress/nocompress/g" /etc/logrotate.d/*

8/ Vérification : la ligne suivante ne doit rien retourner : grep nonocompress *

Version manuelle : Pour chaque fichier dans le dossier /etc/logrotate.d/ :
A/ Supprimer la ligne delaycompress si présente
B/ Modifier la ligne compress par nocompress

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #7 le: 11 mars 2023 à 17:34:14 »
/etc/systemd/system.conf => Watchdog

Si vous avez un Watchdog sur votre serveur, la mise à jour l'aura probablement désactivé par la mise à jour de /etc/systemd/system.conf.
Pour en savoir plus sur l'installation, cf le tutoriel à l'étape 13/ Optionnel : Installation du Watchdog.

mv /etc/systemd/system.conf.dpkg-old /root/sav_conf_maj_ubuntu : On déplace l'ancien fichier de configuration en -old dans notre dossier de sauvegarde.

On va maintenant modifier le nouveau fichier de configuration :
sed -i -e "s/#RuntimeWatchdogSec=0/RuntimeWatchdogSec=120/g" /etc/systemd/system.conf

Ubuntu 18.04 => 20.04 : sed -i -e "s/#ShutdownWatchdogSec=10min/ShutdownWatchdogSec=10min/g" /etc/systemd/system.conf
Ubuntu 20.04 => 22.04 : sed -i -e "s/#RebootWatchdogSec=10min/RebootWatchdogSec=10min/g" /etc/systemd/system.conf

Vérification de la configuration : sed -e '/^#\|^$/d' /etc/systemd/system.conf

[Manager]
RuntimeWatchdogSec=120
RebootWatchdogSec=10min




/etc/watchdog.conf => Watchdog

C'est le second fichier modifié pour activer le Watchdog. On suit toujours le même principe avec déplacement du fichier original et modificaiton du nouveau.
mv /etc/watchdog.conf.dpkg-old /root/sav_conf_maj_ubuntu

sed -i -e "s/#watchdog-device/watchdog-device/g" /etc/watchdog.conf


Vérification de la configuration : sed -e '/^#\|^$/d' /etc/watchdog.conf

watchdog-device = /dev/watchdog
realtime = yes
priority = 1

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #8 le: 11 mars 2023 à 17:40:13 »
/etc/apache2/apache2.conf => Apache2

mv /etc/apache2/apache2.conf.dpkg-old /root/sav_conf_maj_ubuntu

Puis appliquer le tutoriel 5/ Sécurisation d'Apache contre les attaques :



/etc/logrotate.d/apache2 => Rotation des log Apache2

mv /etc/logrotate.d/apache2.dpkg-old /root/sav_conf_maj_ubuntu
nano /root/sav_conf_maj_ubuntu/apache2.dpkg-old

bien mémoriser le nb de jour et les dossiers de log si multiples

sed -i -e "s/rotate 14/rotate 4/g" /etc/logrotate.d/apache2
sed -i '/delaycompress/d' /etc/logrotate.d/apache2
sed -i -e "s/compress/nocompress/g" /etc/logrotate.d/apache2
sed -i -e "s/create 640 root adm/create 644 root adm/g" /etc/logrotate.d/apache2


Vérification : nano /etc/logrotate.d/apache2

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #9 le: 11 mars 2023 à 18:03:30 »
Les actions suite à la mise à jour de PHP 7.4 (Ubuntu 20.04) => PHP 8.1 (Ubuntu 22.04)

Ubuntu maintient à jour des anciennes versions de PHP en intégrant des correctifs de sécurité sans faire de montée en version. Par exemple, en 2023, Canonical a poussé un correctif de sécurité pour PHP 7.0 qui est en version PHP: 7.0.33-0ubuntu0.16.04.16+esm5

Configuration du php.ini
La mise à jour a installé un nouveau fichier de configuration de php.ini
Il faut remettre en place les paramètres modifiés.

Suivre les sections
- Configuration de php.ini
- Configuration de pool.d/www.conf
dans le tutoriel Base: Installation et sécurisation d'Apache2

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #10 le: 11 mars 2023 à 18:06:14 »
Voici où regarder pour bien supprimer les fichiers des versions de PHP précédentes :

Il est malheureusement fréquent qu'il reste des fichiers d'ancienne version de PHP.

Les versions de PHP selon les versions d'Ubuntu :
- Ubuntu 22.04 LTS : PHP 8.1
- Ubuntu 20.04 LTS : PHP 7.4
- Ubuntu 18.04 LTS : PHP 7.2
- Ubuntu 16.04 LTS : PHP 7.0

Supprimer le fichier de rotation de l'ancienne version de PHP :
Ubuntu 18.04 => 20.04 : mv /etc/logrotate.d/php7.2-fpm /root/sav_conf_maj_ubuntu
Ubuntu 20.04 => 22.04 : mv /etc/logrotate.d/php7.4-fpm /root/sav_conf_maj_ubuntu

Supprimer le mode PHP dans Apache :
Ubuntu 18.04 => 20.04 : rm /etc/apache2/mods-available/php7.2.*
Ubuntu 20.04 => 22.04 : rm /etc/apache2/mods-available/php7.4.*

Dans le dossier /etc/php/ :
Ubuntu 18.04 => 20.04 : rm -r /etc/php/7.2
Ubuntu 20.04 => 22.04 : rm -r /etc/php/7.4

Dans le dossier /etc/cron.d
il peut rester un fichier d'une ancienne version

vivien

  • Administrateur
  • *
  • Messages: 47 397
    • Twitter LaFibre.info
Mettre à jour un serveur d'Ubuntu 20.04 LTS vers Ubuntu 22.04 LTS
« Réponse #11 le: 11 mars 2023 à 18:12:02 »
Client Let's Encrypt : Passage du client en version Snap

Il est recomandé de passer le client Let's Encrypt, certbot ( https://certbot.eff.org/ ) en version Snap.
Si c'est déja fait, il n'y a rien à faire.
Si c'est lors de cette mise à jour que l'opération est effectuée :

apt-get remove certbot
apt autoremove
rm /etc/apt/sources.list.d/certbot-ubuntu*
rm /etc/apt/trusted.gpg.d/certbot_ubuntu_certbot.gpg
rm /etc/apt/trusted.gpg.d/certbot_ubuntu_certbot.gpg~
rm /etc/cron.d/certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot renew --dry-run
=> affiche les certificats qui seront renouvelés.