TP3 (2h)

Sauvegardes

Nous allons tester différentes méthodes de sauvegardes. Pour cela nous allons utiliser la commande qui effectuera 2 sauvegardes de /etc vers avec la commande , pour chaque, en mesurera le temps et la place pris.
[L] En interne, il utilise les commandes suivantes :
ajouter test-save + disque /SAVE dans VM.
  1. Quelle ligne de commande permet d'obtenir le volume utilisé de /Save/ ?
Vous remplirez le tableau suivant :
Nom Commande Save 1 Save 2
Durée Taille Durée Taille
Coloration syntaxique

Copie du volume

  1. Identifiez le disque correspondant à Data (lsvol)
  2. Sauvegardez en copiant le disque de Data avec cd
  3. Vous remarquerez que la seconde sauvegarde plante, pourquoi ?
  4. Retestez avec l'option --sparse, qu'observez-vous ?
  5. Sachant qu'on copie l'intégralité du disque, que sauvegarde-t-on de plus que les fichiers ?
  6. Malgré tout, pourquoi est-ce peu adapté pour faire des sauvegardes régulières ?

Copie simple

Sauvegardez /Data en copiant le dossier /Data.

Archive

Sauvegardez /Data en créant une archive compressée .tar.gz
Mount archive

Rsync

  1. Utilisez rsync
  2. Parcourrez 2 dossiers de sav, tous les fichiers, mais taille petite.
  3. Quel est l'intérêt des sauvegardes incrémentales ?
Exercices sur les liens physiques (après rsync, comprendre le fonctionnement) -> 2 fichiers, même inode, faire idem avec ln.
  1. Quel est l'intérêt d'un lien physique pour une sauvegarde incrémentales ?
install rsync

Gestionnaire de version (git)

  1. git-init & git-save fournir
  2. git add -A && git commit -m && git -C /Save pull // git clone --bare . /Save
utilisation/fonctionnement vu plus tard. En gros : - git init / clone : créer (--bare pour les sauvegardes - pas parcourir fichiers) - git add + commit (ajouter des fichier dans un nouveau 'commit' = version) - git pull/push : récup/pousser les commits. - et plein de commandes marrantes, en réalité depuis le début /etc/ avait un dépôt git (🤯). - diff - log - blame - quelques commandes pour voir ce qu'ils ont fait.

Gérer les volumes

Sauvegarde distante

Sauvegardes locales, possible copies over SSHFS ou transfert over rsync ou rsync directement (compresse). TODO SSHFS distant /Data ? + démonter

RAID

Pour le moment /Save sauvegardé sur un seul disque, mais s'il plante, on est triste.
Pré-créer le disque
  1. lsvol : identifier les différents disque
  2. on a un disque inutilisé, sacré coincidence, même taille que celui de /Save
  3. Utilisez cfdisk pour créer une partition prennant tout le disque
    [A] N'oubliez d'écrire la table des partitions avant de quitter.
  4. Vérifiez que la partition apparaisse dans lsvol
  5. Démontez /Save
  6. Formattez les 2 disques pour LVM puis créer un vg nommé vg-SAVE
  7. Créez un volume logique nommé SAVE prenant l'intégralité de vg-SAVE et avec raid1
  8. Formattez le volume en ext4
  9. regardez fstab, comment /Save monté ? Que faire pour monter le volume RAID ?
  10. Donnez au volume RAID le label.
  11. Testez en montant LABEL=X puis démontez.
  12. Testez fstab en montant via mount /Save

Chiffrer

  1. Chiffrez le volume RAID avec cryptsetup (SAVE-crypt) + toutes les op nécessaires pour monter sur /Save
  2. Retestez fstab en montant via mount /Save
Pour chiffrer home, cf adduser --encrypt-home. -> impossible de créer dossier chiffré en tant qu'user. -> chiffrer/déchiffrer un fichier zip (meh) -> ecryptfs : only ~/Private (meh) sinon (user space): - udisksctl loop-setup -f iso (récupérer) - si fichier - udisksctl loop-delete -b /dev/loop0 - udisksctl mount -b /dev/dm-0 - udisksctl unmount -b /dev/dm-0 - udisksctl unlock -b /dev/loop13 (récupérer) - udisksctl lock -b /dev/loop0 - ne peut pas formatter !!! (sudoers ou un fichier type à c/c ?).

Snapshots

  1. Démontez /Data.
  2. Chiffrez le volume.
  3. Créez le groupe de volume vg-DATA qui contiendra la première partition du disque.
  4. Créez le volume logique DATA formatté en ext4 qui occupera 90% de vg-DATA
  5. Donnez lui le bon label puis montez le.
  6. Créez un instantané via la commande lvcreate -s -l 100%FREE --name DATA-snap /dev/vg-DATA/DATA
  7. Modifiez les fichiers
  8. Montez l'instantané et comparez son contenu à /Data, que remarquez-vous ?
  9. Démontez l'instanté puis supprimez-le grâce à lvremove $VOL
  10. Pourquoi ne faut-il pas trop tarder avant de supprimer l'instantané ?

Déverrouillage à distance

Déchiffrer au démarrage.
  1. /etc/crypttab : $NAME $VOL none luks,discard
  2. Clef dans /etc/cryptsetup-keys.d/$NAME ou donné au démarrage.
  3. Pourquoi est-ce que stocker la clefs de déchiffrement de /Save (grâce à un lien symbolique) sur /Data ne pose a priori pas de problème de sécurité ?
À chaque redémarrage du serveur il faudra alors déchiffrer /Data, c'est à dire saisir sur place le mot de passe. Les serveurs pouvant être loin, déverrouiller à distance. Pour cela nous allons installer un serveur SSH sur l'initramfs, nous permettant de nous connecter au serveur via SSJ lors du processus de démarrage (boot) du serveur.
[!] Nous allons modifier l'initramfs, en cas d'erreurs nous ne pourrons plus redémarrer le serveur ! Pour éviter cela, nous allons sauvegarder l'initramfs et créer une nouvelle entrée GRUB afin de pouvoir utiliser l'ancienne version en cas de problèmes.
[L] Encore mieux, nous profiterons que le serveur soit en réalité sur une VM (cf W4) pour prendre un instantané du serveur, afin de pouvoir revenir en arrière en cas de problèmes.
  1. Sur le poste de travail créez un instanté grâce à la commande ?.
  2. Dupliquez les fichiers /boot (config-*, initrd-*, System.map-*, vmlinuz-*) en les renommant de sorte à ce que la version du kernel soit 0.
  3. update-grub pour mettre à jour, redémarrez et vérifiez que ça marche.
  1. installez dropbear-initramfs
  2. /etc/initramfs-tools/initramfs.conf : modifier DEVICE pour l'interface réseau (tester si nécessaire)
  3. Ajoutez la clef publique SSH dans /etc/dropbear-initramfs/authorized_keys.
  4. update-initramfs -u + upgrade-grub
  5. Croisez les doigts
  6. Redémarrez puis SSH en tant que root + cryptroot-unlock (une seule cmd ssh ?)
  7. Poussez un énorme soupir de soulagement de ne pas avoir planté votre serveur.
  8. Créez un alias SSH pour cela.