A propos de sécurité informatique
Petit outil de sauvegarde sur internet
- Sommaire :
- Exposé des motifs
- Particularités
- Exemple sous MS Windows 2000-XP
- Remarques
- Exemple sous GNU/Linux
- Script ftp et précautions sur le site internet
- Module de restauration des données
Exposé des motifs
Objectif de ce qui suit : conserver certaines données personnelles (par exemple : courrier) dans un dossier du site internet de l'utilisateur. Ceci devant se faire d'une façon aussi automatique que possible, et avec un bon degré de sécurité.
Particularités
Ce modeste outil se distingue par les traits suivants :
- Création d'archive et compression par les commandes Linux tar et gzip y compris sous Windows du simple fait que Cygwin [http://www.dg77.net/tekno/manuel/cygwin.htm] est installé sur le PC
- Avant d'être envoyé dans un répertoire particulier du site, le fichier est crypté par Gnupg [http://www.dg77.net/tekno/securite/gnupg.htm]. D'où l'utilisation de la commande gpg.
- L'envoi du fichier se fait par une commande ftp assortie de l'option -s: qui permet d'indiquer un fichier de script pour automatiser le dialogue entre le serveur et le poste client qui se connecte.
- Le fichier de script contenant le mot de passe en clair, il est conservé chiffré, et n'est décrypté que pendant la phase du transfert ftp.
Exemple sous MS Windows 2000-XP
@ECHO off ECHO Sauvegarde des données domestiques ECHO ================================== rem rem Auteur : Dominique Guebey http://exe.dg77.net/email.php rem Version du 03 mai 2005 rem rem Utilisation de commandes UNIX : rem Ce traitement suppose que CYGWIN est installé et configuré. rem Voir par exemple : rem http://exe.dg77.net/tekno/manuel/cygwin.htm rem http://exe.dg77.net/tekno/manuel/man000.htm#tar ECHO INITIALISATIONS rem - Positionnement de depart rem - Chemin d'acces au repertoire contenant le script d: cd d:\Documents and Settings SET CHE=alf\mesdoc~1\bin\ ECHO CREATION DU FICHIER ARCHIVES IF exist f02jjj33.tar DEL f02jjj33.tar rem BIN : répertoire des outils de programmation tar -cf f02jjj33.tar 'alf/Mes Documents/bin/' rem -r=ajout d'autres "dossiers" qu'on veut sauvegarder tar -rf f02jjj33.tar 'alf/Mes Documents/doc/' tar -rf f02jjj33.tar 'alf/Mes Documents/config/' tar -rf f02jjj33.tar 'Maison/Mes documents/courrier/' tar -rf f02jjj33.tar 'Maison/Mes documents/documentation/' ECHO COMPRESSION IF exist f02jjj33.tar.gz IF exist f02jjj33.tar DEL f02jjj33.tar.gz gzip f02jjj33.tar ECHO CRYPTAGE IF exist f02jjj33.tar.gz IF exist f02jjj33.tar.gz.gpg DEL f02jjj33.tar.gz.gpg gpg -r 139ca847 -e -a -o f02jjj33.tar.gz.gpg f02jjj33.tar.gz IF exist f02jjj33.tar.gz.gpg IF exist f02jjj33.tar.gz DEL f02jjj33.tar.gz ECHO ENVOI par FTP rem Dechiffrage préalable du fichier script IF not exist %CHE%f02jjj33.ftp IF exist %CHE%sauve.ftp.gpg gpg -r 139ca847 -d -o %CHE%sauve.ftp %CHE%sauve.ftp.gpg rem Commande ftp utilisant le script sauve.ftp ftp -s:%CHE%sauve.ftp perso.fournisseurdacces.fr IF exist f02jjj33.tar.gz.gpg DEL f02jjj33.tar.gz.gpg rem Chiffrage du fichier script (vite cacher le psw !) IF exist %CHE%sauve.ftp.gpg IF exist %CHE%sauve.ftp DEL %CHE%sauve.ftp IF exist %CHE%sauve.ftp gpg -r 139ca847 -e -o %CHE%sauve.ftp.gpg %CHE%sauve.ftp IF exist %CHE%sauve.ftp.gpg IF exist %CHE%sauve.ftp DEL %CHE%sauve.ftp
Remarques
- La variable CHE contient le chemin d'accès au répertoire où se trouve le script.
- Les parties "INITIALISATIONS" et "CREATION DU FICHIER ARCHIVES" sont à adapter aux besoins et implantation des données de chacun.
- Dans la commande ftp, on adaptera les coordonnées du serveur (dans l'exemple : "perso.fournisseurdacces.fr") en fonction des informations données par le fournisseur d'accès internet.
- Il n'est pas nécessaire que le script ait été chiffré préalablement au premier lancement.
- "f02jjj33" est un exemple de nom préférable à, par exemple, "mesdossiers" ou "documents", trop faciles à découvrir par des programmes de force brute. La même recommandation s'applique à l'emplacement où est transmise la sauvegarde sur le site distant (cf infra).
- "139ca847" est un UID OpenPGP imaginaire. Indiquez le vôtre.
Exemple sous GNU/Linux
#!/bin/bash echo Sauvegarde des données domestiques echo ================================== # # Auteur : Dominique Guebey http://exe.dg77.net/email.php # Version du 08 mai 2005 echo INITIALISATIONS # - Positionnement de depart cd '/mnt/win_c2/Documents and Settings' echo CREATION DU FICHIER ARCHIVES if [ -f f02jjj33.tar ]; then rm f02jjj33.tar ; fi # BIN : répertoire des outils de programmation tar -cf f02jjj33.tar 'alf/Mes Documents/bin/' # -r=ajout d'autres "dossiers" qu'on veut sauvegarder tar -rf f02jjj33.tar 'alf/Mes Documents/courrier/' tar -rf f02jjj33.tar '/home/Jeannot/Documentation/' echo COMPRESSION if [ -f f02jjj33.tar.gz ]; then if [ -f f02jjj33.tar ]; \ then rm f02jjj33.tar.gz ; fi ; fi gzip f02jjj33.tar echo CRYPTAGE if [ -f f02jjj33.tar.gz ]; then if [ -f f02jjj33.tar.gz.gpg ]; \ then rm f02jjj33.tar.gz.gpg ; fi ; fi gpg -r 139ca847 -e -a -o f02jjj33.tar.gz.gpg f02jjj33.tar.gz if [ -f f02jjj33.tar.gz.gpg ]; then if [ -f f02jjj33.tar.gz ]; \ then rm f02jjj33.tar.gz ; fi ; fi echo ENVOI par FTP # Dechiffrage préalable du fichier script if [ -f f02jjj33.ftp ]; then echo ; else if [ -f sauve.ftp.gpg ]; \ then gpg -r 139ca847 -d -o sauve.ftp sauve.ftp.gpg ; fi ; fi # Commande ftp utilisant le script sauve.ftp ftp -s:sauve.ftp perso.fournisseurdacces.fr if [ -f f02jjj33.tar.gz.gpg ]; then rm f02jjj33.tar.gz.gpg ; fi # Chiffrage du fichier script (vite cacher le psw !) if [ -f sauve.ftp.gpg ]; then if [ -f sauve.ftp ]; then rm sauve.ftp ; fi ; fi if [ -f sauve.ftp ]; then gpg -r 139ca847 -e -o sauve.ftp.gpg sauve.ftp ; fi if [ -f sauve.ftp.gpg ]; then if [ -f sauve.ftp ]; then rm sauve.ftp ; fi ; fi
Script ftp et précautions sur le site internet
Ci-dessous le fichier sauve.ftp. Il s'agit du script utilisé par la commande ftp dans le batch qui précède. Chacun adaptera les codes utilisateurs et mot-de-passe en fonction des indications fournies par le fournisseur d'accès (ou provider).
id_utilisateur mot_de_passe cd zorglb2834 put f02jjj33.tar.gz.gpg close quit
zorglb2834 est un exemple de nom de répertoire à utilisation réservée. Bien entendu aucune page WEB au monde ne doit contenir un lien pointant vers lui (ex.: http://www.monsite.tld/zorglb2834/ ). Pour rendre non affichable le contenu du répertoire de sauvegarde ("zorglb2834" dans l'exemple) par connexion http, il suffit d'y placer un fichier index.html qui peut être réduit au strict minimum. On pourra récupérer l'exemple suivant, par "copier-coller" :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://ns.dg77.net/XML/" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <title>ERROR 403</title> </head> <body> <h1>ERROR 403</h1> <dl> <dt>Entrée interdite - Forbidden - Prohibido - Verboten</dt> <dd>Je regrette, mais le lien que vous avez choisi est strictement réservé.</dd> <dd>We're sorry but the link you tried to access is forbidden.</dd> <dd>Lo sentimos mucho. El servidor no tiene acceso al documento que usted solicitó.</dd> <dd>Achtung ! Sie haben nicht die erforderlichen Zugriffsrechte um auf die von Ihnen gewünschte Ressource zuzugreifen !</dd> </dl> </body> </html>
Module de restauration des données
Voici maintenant le nécessaire pour redescendre automatiquement les données sauvegardées par ce qui précède. Quand le fichier archive .tar est prêt à être extrait, son contenu est affiché, puis un prompt demande si on veut exécuter la restauration. Refuser permet de sélectionner ensuite manuellement les objets qu'on veut récupérer.
@ECHO off ECHO Recuperation des données domestiques ECHO ==================================== ECHO VER rem rem Auteur : Dominique Guebey http://exe.dg77.net/email.php rem Version du 05 mai 2005 rem rem Utilisation de commandes UNIX : rem Ce traitement suppose que CYGWIN est installé et configuré. rem Voir par exemple : rem http://exe.dg77.net/tekno/manuel/cygwin.htm rem http://exe.dg77.net/tekno/manuel/man000.htm#tar ECHO INITIALISATIONS rem - Positionnement de depart rem - Chemin d'acces au repertoire contenant le script d: cd d:\Documents and Settings SET CHE=alf\mesdoc~1\bin\ ECHO Telechargement par FTP rem Dechiffrage préalable du fichier script IF not exist %CHE%restore.ftp IF exist %CHE%restore.ftp.gpg gpg -r 139ca847 -d -o %CHE%restore.ftp %CHE%restore.ftp.gpg rem Commande ftp utilisant le script restore.ftp ftp -s:%CHE%restore.ftp perso.fournisseurdacces.fr rem Chiffrage du fichier script (vite cacher le psw !) IF exist %CHE%restore.ftp.gpg IF exist %CHE%restore.ftp DEL %CHE%restore.ftp IF exist %CHE%restore.ftp gpg -r 139ca847 -e -o %CHE%restore.ftp.gpg %CHE%restore.ftp IF exist %CHE%restore.ftp.gpg IF exist %CHE%restore.ftp DEL %CHE%restore.ftp ECHO DECRYPTAGE gpg -r 139ca847 -d -o f02jjj33.tar.gz f02jjj33.tar.gz.gpg ECHO DECOMPRESSION gzip -d f02jjj33.tar.gz IF exist f02jjj33.tar.gz IF exist f02jjj33.tar DEL f02jjj33.tar.gz ECHO AFFICHAGE - DISPLAY ARCHIVE tar -tf f02jjj33.tar CHOICE /C:YN /N /T:N,30 Restauration generale Y=OUI, N=NON : IF errorlevel 2 goto :EOF ECHO EXTRACTION - RESTAURATION tar -xf f02jjj33.tar
Ci-dessous le script restore.ftp utilisé par la dernière commande ftp. On fait un get au lieu du put qui avait servi à l'envoi.
id_utilisateur mot_de_passe cd zorglb2834 get f02jjj33.tar.gz.gpg close quit