~~SLIDESHOW~~
====== Sauvegardes ======
===== Avant-propos =====
**Maintenance des accès utilisateurs**
* **Prévenir** : configurer, sauvegarder, surveiller, intervenir
* **Corriger** : détecter, diagnostiquer, réparer, valider et documenter
* **Gérer** : outils des gestion de parc, gestion d'incidents, politique de maintenance, périmètre d'intervention, normes
===== Prévention =====
**Anticiper**
* **Protection du système dans l'utilisation courante**
* Qui a droit à quoi ?
* Vérifier et documenter les habilitations des utilisateurs en fonction des choix organisationnels
* Quelle politique de droits et privilèges ?
===== Prévention =====
**Anticiper**
* **Protection du système contre les malveillances**
* antivirus
* antispyware
* risques
* outils
===== Anticiper - Mises à jour =====
* **Pourquoi mettre à jour** son système ?
* failles de sécurité
* Mise à jour automatiques Oui/Non ?
* fréquence : chez Microsoft, les 2e et 4e mardi du mois
* volume : plusieurs centaines des Mo pour certains Services Pack Microsoft
* versions : changement de version majeur 2.0 => 3.0 (cf base de données)
* précautions : peuvent produire des blocages ou des plantages
* temps d'installation, avec de multiples démarrage (Windows) => indisponibilité
* types de mises à jour, chez Microsoft : **importantes**, **recommandées**, **facultatives**
===== Mises à jour : Windows =====
* Mise à jour automatiques possibles
* Service **SUS/WSUS** (Windows Software Update Service)
* service centralisé (Client/Serveur) de mise à jour avec validation
* permet de limiter les volumes de transfert
* permet la planification après les tests
===== Mises à jour : Linux =====
* Système élaborés et efficaces
* utilisation éventuelle de serveur **proxy**
* **Debian/Ubuntu** :
* **aptitude update** pour télécharger les listes de version sur un dépôt externe
* **aptitude upgrade** pour mettre à jour les paquets
* **RedHat** :
* **yum update**
===== Anticiper - Nettoyage du système =====
* Qu'est ce que le nettoyage ?
* vidage des fichiers temporaires (fichiers d'installation, cache du navigateur, paquets debian dans le cache , points de reprise windows, ....)
* Supprimer des fichiers ?
* Supprimer des applications
* Pourquoi mettre à jour son système ?
* corriger les bugs
* Supprimer un utilisateur ?
===== Anticiper - Surveillance =====
* Observer ce qui se passe sur un système
* Les **journaux système et applicatifs**
* Windows
* Linux
* Services réseaux ouverts
* port ouvert <=> un service en écoute
* TCP/UDP
* Audit d'activité :
* Pourquoi ?
* Quels objets auditer ?
* Quels évènements auditer ? (succès - échec)
===== Surveillance - Windows - 1 =====
* l'observateur d'évènements ( **eventvwr**)
c:\> eventvwr
* {{:eventvwr1.jpg|}}
===== Surveillance - Windows - 2 =====
* l'observateur d'évènements : le journal système
* {{:eventvwr2.jpg|}}
===== Surveillance - Linux - 1 =====
* les **logs**
* **les fichier de logs** sont récupérés par le démon **syslog** (**rsyslog** sous Debian) et **stockés** dans le répertoire **/var/log**
* le fichier **/var/log/syslog** est le fichier principal de logs mais il en existe d'autres (/var/log/apache2/access.log pour apache, ...)
* on peut les examiner en temps réel avec la commande **tail -f fichier** (**Ctrl-C** pour interrompre)
root@marge:~#> tail -f /var/log/syslog
Jan 26 13:49:01 marge dhcpd: DHCPDISCOVER from 00:1e:c1:06:78:60 via eth0: network 10.121.32.0/25: no free leases
Jan 26 13:49:04 marge dhcpd: DHCPDISCOVER from 00:1f:3c:4a:ca:4c (pmpor-10) via 10.121.39.254
Jan 26 13:49:04 marge dhcpd: DHCPOFFER on 10.121.39.205 to 00:1f:3c:4a:ca:4c (pmpor-10) via 10.121.39.254
Jan 26 13:49:08 marge named[22440]: client 10.121.32.42#59293: update 'ldij-lecastel.lan/IN' denied
Jan 26 13:49:08 marge named[22440]: client 10.121.32.42#58656: update '10.in-addr.arpa/IN' denied
Jan 26 13:49:13 marge dhcpd: DHCPDISCOVER from 00:1e:c1:06:78:60 via eth0: network 10.121.32.0/25: no free leases
Jan 26 13:49:14 marge dhcpd: DHCPREQUEST for 10.121.39.195 (10.121.32.22) from 0c:df:a4:84:0a:0b via 10.121.39.254
Jan 26 13:49:14 marge dhcpd: DHCPACK on 10.121.39.195 to 0c:df:a4:84:0a:0b via 10.121.39.254
Jan 26 13:49:14 marge dhcpd: DHCPREQUEST for 10.121.39.195 (10.121.32.22) from 0c:df:a4:84:0a:0b via 10.121.39.254
Jan 26 13:49:14 marge dhcpd: DHCPACK on 10.121.39.195 to 0c:df:a4:84:0a:0b via 10.121.39.254
Jan 26 13:49:25 marge dhcpd: DHCPDISCOVER from 00:1e:c1:06:78:60 via eth0: network 10.121.32.0/25: no free leases
===== Surveillance - Linux - 2 =====
* gestion des volumes
* durée de la période stockée (1 semaine ... 1 an)
* **obligations légales**
* comment faire pour limiter le volume et ne pas saturer les partitions (**logrotate**)
* compression
* mécanisme de **centralisation** : 1 serveur de log par site (cf **syslog** Castel) et plus des logs locaux
===== Surveillance - Supervision =====
* installation d'outils de supervision (Nagios, Zabbix, ...)
* scan de ports distants : **nmap** sous Linux :!: Attention aux contraintes légales
root@vm2:/home/sio# nmap ns1
Starting Nmap 5.00 ( http://nmap.org ) at 2012-01-26 14:24 CET
Interesting ports on marge.ldij-lecastel.lan (192.168.0.1):
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds
===== Anticiper - Les Sauvegardes =====
* mise en place de solutions de récupération => dispositifs de sauvegardes
* caractéristiques
* totale
* partielle
* contraintes
* volume
* débit
* historique
===== Sauvegardes - Caractéristiques - 1 =====
* **totale**
* gros volume
* long
* **partielle**
* volume limité
* incohérence potentielle
* plusieurs sauvegardes à restaurer
* 2 variantes
* **différentielle**
* **incrémentale**
===== Sauvegarde différentielle =====
* effectue une copie des fichiers** créés ou modifiés depuis la dernière sauvegarde complète**, quelles que soient les sauvegardes intermédiaires.
* En d'autres termes, la sauvegarde complète du jour J sert de référence pour identifier les fichiers créés, modifiés ou ajoutés et ainsi ne sauvegarder que ces derniers du jour J+1 au jour J+6.
* la restauration nécessite la recopie sur disque de la dernière sauvegarde complète et de la sauvegarde différentielle la plus récente.
* utilise un attribut de fichier qui passe à 1 s'il est sauvegardé
===== Sauvegarde incrémentale =====
* sauvegarde les fichiers créés ou modifiés **depuis la dernière sauvegarde** **quel que soit son type** (complète, différentielle ou incrémentielle).
* exemple : une sauvegarde complète est réalisée le jour J. Le jour J+1, la sauvegarde incrémentale est réalisée par référence au jour J. Le jour J+2, la sauvegarde incrémentale est réalisée par référence au jour J+1. Etc
* si la restauration se porte sur un disque sauvegardé le jour J+4, on doit alors restaurer la sauvegarde du jour J et les sauvegardes incrémentales des jours J+1, J+2, J+3 et J+4 afin d'obtenir la dernière version
===== Sauvegardes - Caractéristiques - 2 =====
* **stockage**
* **local** : gros volume - débit élevé (100 Mo/s)- accessible sur une seule machine
* **réseau** : accessible partout mais problème éventuel de débit => goulet d'étranglement (100 Mb/s)
* **mode**
* **image** : archive une image de partition (**/dev/sda1**) ou du disque dans sa globalité (**partclone**, **partimage**, **ntfsclone**, **dd**, ...)
* **fichiers** : archive les fichiers individuellement - plus souple (**cp**, **copy**, **rsync**, **scp**...)
* **compression**
* **compression** : permet plus de stockage - moins rapide
* **sans compression (natif)** : plus rapide - moins de pb en cas d'archive corrompue
===== Sauvegardes - Caractéristiques - 3 =====
* **machine**
* **physique** : sauvegarde en **mode fichiers** indispensable
* **virtuelle** : sauvegarde en mode fichier mais également sauvegarde de la machine virtuelle dans sa globalité (**mode image**) : plus pratique mais attention au volume global de la partition (40 Go dont 5 occupés ...)
===== Sauvegardes - Caractéristiques - 4 =====
* une sauvegarde ne peut s'effectuer que si un fichier n'est **pas ouvert** par une application (Winword ...)
* => nécessité que les utlisateur soient **déconnectés** ou que le volume soit en **lecture seule**
* une **base de donnée** ne peut être sauvegardée que si elle est **arrêtée** ou si la sauvegarde est faite par un **agent spécifique**
===== Sauvegardes - Que sauvegarder ? =====
* les **répertoires utilisateurs**
* **Linux** : **/home**
* **Windows** : **c:\Documents and Settings** pour XP, **c:\users** pour Vista et Seven
* les **répertoires système**
* fichiers de librairies système
* comptes utilisateurs
* la base de registre Windows
* sous Linux : le répertoire /**etc** qui comporte les fichiers de configuration
===== Sauvegardes - Les bases de données =====
* des outils de vidage existent
* pour **Mysql** : **mysqldump**
root@debian:~# mysqldump -u root -p mabase > mabase-dump.sql
* pour **Postgresql** : **pg_dump**
root@debian:~# pg_dump -f mabase-dump.sql -U root mabase
* ces deux logiciels fonctionnent à **chaud** (avec la base en fonctionnement)
* ces 2 commandes peuvent être éxécutées à distance à travers un tunnel sécurisé ssh au travers de l'outil de compression **gzip**
root@debian:~# ssh root@srv "mysqldump -u root -p xxxx mabase | gzip" > mabase-dump.sql.gz
===== Sauvegardes - les outils =====
* **Windows**
* BackupExec, Acronis, Arcserve, Netbackup (Symantec), Bacula, BackupPC, Cobian Backup, ntbackup (système)
* **Linux**
* système : tar, cp, scp, rsync
* BackupPC, Bacula, Unisson
* Timemachine (Mac/OS)
* partclone, partimage, ntfsclone, dd
* les **LiveCD** : Redo Backup, System Rescue CD, Clonezilla, ...
* DriveImage XL : création d'images de partitions
===== Sauvegardes - les protocoles =====
* dans le cas où l'on effectue une sauvegarde sur ou depuis une ressource qui n'est pas une ressource **locale**, on doit utiliser un protocole **réseau**
* les plus utilisés sont les suivants (couche application):
* **SMB/CIFS** (Microsoft) : le standard de fait pour le partage/transfert de fichiers en environnement Windows - utilisable avec **Samba** ou **smbclient** sous Linux
* **NFS** - Network File System (Unix/Linux) : le standard pour le partage de fichier en environnement Unix - pas adapté a l'internet
* **HTTP** : moins fréquemement utilisé - surtout pour les méthodes **get** (téléchargement)
* **FTP** : utilisé également mais ancien et peu souple - très peu sécurisé (mots de passe en clair)
* **SSH** : utilisé pour copier des fichiers avec **scp** : Secure Copy, ou comme tunnel chiffré pour **rsync** avec des clés publiques
===== Sauvegardes - exemple 1 : tar =====
* **tar** (**Tape ARchive**) est la commande de base pour l'archivage sous Unix/Linux
* elle permet de créer un fichier d'archive sur disque ou sur bande
* fonctionne en local
tar cvf /bu/home-sv.tar /home
* Archive (**c** : Creation, **v**: Verbose, **f**: File) le répertoire **/home** dans l'archive **/bu/home-sv.tar**
* on peut utiliser l'option **z**: gzip pour compresser l'archive au passage
tar cvfz /bu/home-sv.tgz /home
===== Sauvegardes - exemple 2 : scp =====
* **scp** - (**Secure Copy**) permet de copier des fichiers/répertoires dans un tunnel chiffré **ssh** de ou vers une machine distante disposant d'un serveur **ssh**
* fonctionne sous Linux, il existe **pscp** pour Windows
scp -rp root@machine:/home /sv/machine/home
* copie tous les fichiers du répertoire **/home** de la machine distante **machine** et les stocke dans le répertoire local **/sv/machine/home**
* la copie est récursive (option **-r**) et préserve (**-p**) les attributs et dates de changement des fichiers
* scp ne tient pas compte des dates relatives des fichiers
===== Sauvegardes - exemple 3 : rsync =====
* **rsync** est une **application/protocole** qui permet de **synchroniser des fichiers/répertoires** en mode **local** ou à **distance**
* rsync est le protocole le plus **économe en bande passante** car il effectue des comparaisons entre les fichiers et limite ses transferts aux seules (ou presque) différences entre les fichiers
* rsync est devenu le **standard** de fait pour la **synchronisation** des sites miroirs
rsync -av -e ssh root@distant:/home /sv
* la commande plus haut **synchronise** au travers d'un **tunnel ssh** (option **-e**) chiffré le répertoire **/home** de la machine **distant** avec son pendant dans le répertoire local **/sv** . La machine distante doit également disposer de **rsync** et d'un serveur **ssh**
* l'option **-a** correspond au mode **archive** (récursion et préservation des attributs), l'option **-v** correspond au mode verbeux ...
===== Sauvegardes - SSH et les clés publiques =====
* le système de clé publique permet de s'authentifier sans mot de passe sur un système distant qui dispose d'un serveur SSH auquel on a envoyé sa **clé publique**
* Problème : la machine Linux **C1** veut se connecter sur la machine Linux **SRV** sans utiliser de mots de passe
* depuis **C1**, on doit générer les clés RSA et DSA
root@C1~#> ssh-keygen
* ne saisir aucun mot de passe (passphrase)
* envoyer la clé publique de root sur la machine **SRV**
root@C1~#> ssh-copy-id root@srv
* la machine demande alors le mot de passe **root** de **SRV**
* on peut alors se connecter sur la machine **SRV** sans mot de passe
* le tunnel SSH peut alors être utilisé pour de l'administration distante ou une synchronisation de répertoires par **rsync**
===== Sauvegardes - Planification =====
* il est impératif de pouvoir planifier les sauvegardes pour les lancer hors des périodes d'activité et déconnecter au besoin les utilisateurs
* sous Linux, on dispose du démon **crontab** qui permet une grande souplesse dan la gestion de la programmation
# crontab
0 22 * * 1-5 /root/backup-sys
# par exemple, sauvegarde du répertoire /home
# a 5 h du matin chaque semaine:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
* la **crontab** décrite plus haut lance le script **/root/backup-sys** à 22h du lundi au vendredi
* on peut également utiliser les répertoires cron-hourly, cron-daily, cron-weekly et cron-monthly
* sous Windows, le planificateur de tâches propose un fonctionnement similaire
===== Sauvegardes - Rotation =====
* faire une sauvegarde est intéressant, mais il peut être intéressant d'effectuer plusieurs sauvegardes journalières en rotation **hebdomadaire** : la sauvegarde N remplace la sauvegarde N-7
* exemple :
DAT=`date "+%u"` # $DAT contient le No de jour de la semaine
# on compresse la base avec le filtre gzip
mysqldump -u root --password=xxxxx -B mbase | gzip > mabase-$DAT.dump.gz
* on obtient des vidages de base de données appelés //mabase-0.dump.gz//, //mbase-1.dump.gz//, ...