Cours RechercherCtrl K

Sécuriser un serveur Leçon 5

Mises à jour et sauvegardes

Laisser Debian installer seul les correctifs de sécurité, et sauvegarder le site chaque nuit.

25 min

À la fin de cette leçon, tu sauras

  • Activer les mises à jour de sécurité automatiques
  • Créer et lire une archive avec tar
  • Programmer une sauvegarde chaque nuit

Les failles se corrigent vite… si on installe les correctifs

Quand une faille est découverte dans OpenSSL, PHP ou le noyau Linux, Debian publie un correctif en quelques heures ou quelques jours. Les attaques automatiques arrivent tout aussi vite. Un serveur qu'on oublie de mettre à jour devient une cible facile en quelques semaines.

Le paquet unattended-upgrades installe tout seul, chaque jour, les mises à jour de sécurité (et seulement elles, par défaut : pas de changement de version risqué).

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades    # répondre « Oui » : crée 20auto-upgrades
cat /etc/apt/apt.conf.d/20auto-upgrades
sudo unattended-upgrade --dry-run                  # essai à blanc : ce qui serait installé

Astuce : certaines mises à jour (le noyau) demandent un redémarrage. Le fichier /var/run/reboot-required apparaît alors : un petit script de surveillance peut te prévenir par e-mail.

Pour les conteneurs Docker, c'est différent : il faut retélécharger les images (docker compose pull) puis recréer les conteneurs (docker compose up -d). On le voit dans le cours Docker.

Sauvegarder : la règle 3-2-1

Un disque peut lâcher, un hébergeur peut fermer, une commande peut tout effacer. La règle classique : 3 copies des données, sur 2 supports différents, dont 1 hors du serveur (sur ton PC, par exemple).

tar rassemble des dossiers dans une seule archive compressée :

sudo tar -czf /var/backups/site.tar.gz /var/www/monsite /etc/nginx   # c = créer, z = compresser, f = fichier
tar -tzf /var/backups/site.tar.gz                                    # t = lister le contenu
sudo tar -xzf /var/backups/site.tar.gz -C /tmp/restauration          # x = extraire, ailleurs
sudo chmod 600 /var/backups/site.tar.gz                              # elle contient des mots de passe !

Chaque nuit, automatiquement

cron lance des commandes à heure fixe. Un fichier dans /etc/cron.d/ contient une ligne par tâche : minute, heure, jour du mois, mois, jour de la semaine, utilisateur, commande.

# m  h  jour mois jsem utilisateur commande
30  23  *    *    *    root  tar -czf /var/backups/site.tar.gz /var/www/monsite

* veut dire « tous » : ici, tous les jours à 23 h 30. Les machines récentes utilisent aussi les timers de systemd, qui font la même chose avec plus d'options.

Attention : une sauvegarde qu'on n'a jamais essayé de relire n'est qu'un espoir. Liste au moins son contenu avec tar -tzf de temps en temps.

À retenir

  • unattended-upgrades installe chaque jour les correctifs de sécurité de Debian.
  • Activation : sudo dpkg-reconfigure -plow unattended-upgrades ; essai : sudo unattended-upgrade --dry-run.
  • Règle 3-2-1 : 3 copies, 2 supports, 1 hors du serveur.
  • tar -czf crée, tar -tzf liste, tar -xzf … -C dossier extrait.
  • cron : minute heure jour mois jour-semaine utilisateur commande dans /etc/cron.d/.

Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)

Exercice 1 · Les correctifs en automatique

Facile
  1. installe unattended-upgrades ;
  2. active-le avec dpkg-reconfigure (priorité basse, -plow) ;
  3. vérifie le contenu de /etc/apt/apt.conf.d/20auto-upgrades ;
  4. fais un essai à blanc pour voir ce qui serait installé.
commandes.sh
eleve@cours: ~

Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.

Consignes à réussir

  • À faire : unattended-upgrades est installé
  • À faire : Les mises à jour automatiques sont activées
  • À faire : Le fichier 20auto-upgrades est vérifié
  • À faire : Un essai à blanc est lancé
Toujours bloqué ? Voir une solution
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /etc/apt/apt.conf.d/20auto-upgrades
sudo unattended-upgrade --dry-run

Exercice 2 · Une archive du site

Moyen
  1. crée l'archive compressée /var/backups/monsite.tar.gz qui contient /var/www/monsite et /etc/ssh (certains fichiers ne sont lisibles qu'en administrateur) ;
  2. liste son contenu pour vérifier que config.php y est ;
  3. elle contient un mot de passe : mets-lui les droits 600.
commandes.sh
eleve@cours: ~

Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.

Consignes à réussir

  • À faire : L'archive /var/backups/monsite.tar.gz existe
  • À faire : Elle contient le site, config.php compris
  • À faire : Elle contient la configuration SSH
  • À faire : Son contenu est listé
  • À faire : Elle est en 600
Toujours bloqué ? Voir une solution
sudo tar -czf /var/backups/monsite.tar.gz /var/www/monsite /etc/ssh
tar -tzf /var/backups/monsite.tar.gz
sudo chmod 600 /var/backups/monsite.tar.gz

Exercice 3 · Chaque nuit à 2 h 15

Pour aller plus loin

Programme la sauvegarde : crée le fichier /etc/cron.d/sauvegarde avec une ligne qui lance, en root, tous les jours à 2 h 15 :

tar -czf /var/backups/monsite.tar.gz /var/www/monsite

Affiche ensuite le fichier pour vérifier.

commandes.sh
eleve@cours: ~

Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.

Consignes à réussir

  • À faire : /etc/cron.d/sauvegarde existe
  • À faire : La tâche tourne à 2 h 15 tous les jours
  • À faire : Elle est lancée en root
  • À faire : Elle crée la bonne archive
  • À faire : Le fichier est affiché
Toujours bloqué ? Voir une solution
echo "15 2 * * * root tar -czf /var/backups/monsite.tar.gz /var/www/monsite" | sudo tee /etc/cron.d/sauvegarde
cat /etc/cron.d/sauvegarde

Quiz

1Que fait unattended-upgrades par défaut ?
2Que veut dire le « t » de tar -tzf ?
3Que signifie 30 23 * * * dans cron ?