Reprendre le contrôle de ses données

{4 Comments}

Alors que les scandales d’écoutes illégales et d’espionnages s’accumulent au même titre que nos données numériques et notre besoin d’y avoir accès en tout temps, je me suis penchée sur le sujet, ô combien délicat et important, de reprendre le contrôle de celles-ci me concernant.

Comme beaucoup de personnes, je possède un ordinateur portable, un téléphone intelligent et une tablette numérique. Je souhaite accéder à mes contacts, mes calendriers et mes fichiers numériques depuis n’importe lequel de ces terminaux. Et comme je suis une grande flemmarde, je n’ai pas envie de connecter ces appareils à mon ordinateur pour synchroniser ces données.

L’idée était donc la suivante:
  • Utilisation d’un NAS pour stocker mes données
  • Installation d’un serveur CalDAV et CardDav pour pouvoir synchroniser le calendrier et les contacts
  • Activer le service Cloud « à la Dropbox » mis en place par le fabriquant du NAS
  • Rendre ce NAS accessible via un nom de domaine dont je suis propriétaire
  • Sécurisé la connexion entre mes appareils et mon NAS avec un certificat SSL

Le NAS est un Synology DS211+ (qui tourne sous une distribution Linux) qui a déjà quelques années au compteur mais qui est toujours vaillant. J’ai choisi comme serveur CalDAV et CardDAV, Baïkal, qui est simple d’utilisation et léger (un paquet d’installation tout prêt pour Synology est disponible).

La partie sauvegarde et synchronisation des données sera assuré par Cloud Station de Synology avec un client à télécharger sur le site officiel et à installer sur l’ordinateur (Mac – Windows – Linux). Il aura le même comportement que le service Dropbox.

C’en est terminé pour la partie « simple » et « facile ». Attaquons maintenant les étapes plus compliquées soit:

  • Faire pointer le nom de domaine sur le Synology
  • Demande et installation du certificat SSL
  • Trouver une solution de backup externe pour la sauvegarde des données synchronisées (histoire de ne pas avoir fait tout ça pour se retrouver totalement démuni si un gros incident intervient et détruit le NAS et donc les données)

Cet article n’abordera pas le sujet de la configuration à effectuer sur votre routeur ADSL pour accéder depuis l’extérieur à vos services web.

Synology NAS et nom de domaine personnel

Je possède un nom de domaine personnel chez le registrar Gandi. Pour 16€/an, j’ai un nom de domaine qui m’est propre. Ce registrar met à disposition, via son interface d’administration, la gestion des DNS pour le domaine. Et depuis 2013, il met à disposition le Gandi API XML qui nous sera fort utile.

Autre chose utile, Gandyn. C’est un script en Python écrit avec dévotion par un cerveau génial du nom de Charly Caulet et qui est gratuit. Ce script va être installé et configuré sur le Synology en suivant l’excellent guide de Gzu mais en l’adaptant à mes besoins et aux spécificités de DSM 5.0, la dernière version du manager de Synology pour ces produits DiskStation.

Il semblerait que OVH fournisse également une solution pour utiliser un nom de domaine avec une adresse IP dynamique. N’étant pas dans ce cas de figure, je ne peux donc en parler et cet article se base sur mon expérience avec Gandi.

1. Activation de l’API Gandi

Après s’être connecté sur l’interface d’administration du nom de domaine sur gandi.net, se rendre dans Gestion du compte => Gestion de l’API et demander la création d’une clé API.

La création prend quelques minutes. Ensuite, il faut activer l’API de production et relever la clé.

2. Installation de Python et Python3 sur le Synology

Après connexion à l’interface d’administration du Synology, aller dans le Centre de paquets => Utilitaires et installer Python et Python3.

Les deux versions de Python sont nécessaire pour que le script fonctionne.

3. Activation SSH sur le Synology

Toujours dans l’interface d’administration du Synology, aller dans Panneau de configuration => Terminal & SNMP et cocher Activer le service SSH

4. Récupération du script gandyn

Sur l’ordinateur, ouvrir une fenêtre Terminal ou autre et se connecter en SSH sur le Synology.

ssh root@adresse.ip.du.synology
wget -O gandyn.tar.gz https://github.com/Chralu/gandyn/tarball/master
 5. Décompression du script gandyn
tar xvzf gandyn.tar.gz
6. Déplacement du script et installation de celui-ci

Pour ne pas avoir besoin de réinstaller le script à chaque fois après une mise à jour de DSM, j’ai créé un dossier partagé via l’interface d’administration du Synology et qui contiendra ce script et d’autres au besoin.

cd Chralu-gandyn-xxxxx
mv src /volume1/scripts/gandyn
cd ..
rm -R Chralu-gandyn-xxxx
rm -R gandyn.tar.gz
cd /volume1/scripts/gandyn
python setup.py install
7. Installation d’IPKG (Bootstrap) et installation de l’éditeur nano

Parce que l’éditeur vi ne correspond pas à ma logique, je préfère utiliser l’éditeur nano. Mais il n’est pas installé par défaut. Il faut donc installer IPKG sur le Synology pour pouvoir installer d’autres paquets.

Deux sources forts utiles:

Une autre source fort utile si un message disant qu’ipkg n’existe pas lors du lancement de la commande:

ipkg update

Pour lancer l’installation de nano:

ipkg install nano
8. Configuration du script gandyn
nano /volume1/scripts/gandyn/gandyn.conf

Et y inscrire les informations suivantes:

#API key generated by Gandi
API_KEY = ''
#Name of the domain to update
DOMAIN_NAME = 'mydomain.net'
#Time to live of the updated record
TTL = 300
#Filters used to find the record to update.
#By default, the updated record is "@   A   xxx.xxx.xxx.xxx"
#Where 'xxx.xxx.xxx.xxx' is the updated value
RECORD = {'type':'A', 'name':'@'}
#Log level of the script. Values are :
#   logging.DEBUG
#   logging.INFO
#   logging.WARNING
#   logging.ERROR
#   logging.CRITICAL
LOG_LEVEL = logging.DEBUG
#Path of the log file
LOG_FILE = '/volume1/scripts/gandyn/gandyn.log'

Les lignes suivantes sont à adapter:

API_KEY = ' '  <-- à inscrire la clé API de Gandi
DOMAIN_NAME = 'mydomain.net'  <-- à inscrire le nom de domaine
LOG_FILE = '/volume1/scripts/gandyn/gandyn.log'  <-- à inscrire le chemin absolu vers le fichier log
9. Test du script
/volume1/scripts/gandyn/gandyn.py --config /volume1/scripts/gandyn/gandyn.conf

Si le test a été un succès, aucune information n’est retournée.

10. Création d’une tâche planifiée

Étrangement, il m’a été impossible d’utiliser crontab sur le Synology pour faire exécuter ce script à une fréquence définie. Après avoir inscrit l’entrée des les deux fichiers adéquats, le script semble ne pas s’exécuter du tout car je n’ai aucun retour dans le fichier log. J’ai donc utiliser le planificateur de tâches du Synology.

Dans l’interface d’administration du Synology, dans Panneau de configuration => Planificateur de tâches => Créer => Script défini par l’utilisateur.

Onglet Général:

  • Tâche: gandyn
  • Utilisateur: root
  • Script défini par l’utilisateur: /volume1/scripts/gandyn/gandyn.py –config /volume1/scritps/gandyn/gandyn.conf

Ensuite, dans l’onglet Programmer:

  • Exécuter les jours suivants: Quotidienne
  • Première heure d’exécution: 00:00
  • Fréquence: Toutes les 1 heure(s)
  • Dernière heure d’exécution: 23:00

Voilà, la configuration du Synology avec son propre nom de domaine est terminé.

Certificat SSL

Le cerficiat SSL va permettre d’authentifier et utiliser une connexion HTTP sécurisée (HTTPS) et ainsi garantir la confidentialité et l’intégrité des données échangées.

Le Synology permet la création d’un certificat auto-signé, qui est totalement fonctionnel, mais celui-ci sera toujours signalé comme non-conforme par les navigateurs internet.

Profitant des services proposés par Gandi, j’ai donc fait l’acquisition d’un certificat SSL standard pour mon nom de domaine et qui me revient à 12€HT/an. Une fois commandé, la création du certificat va prendre un peu de temps (de l’ordre d’une journée). Un email de confirmation sera envoyé par Gandi pour les différentes étapes de validation. Lorsque le certificat est prêt, Gandi nous indique les étapes à effectuer pour activer celui-ci.

Ensuite, il faut importer ce certificat dans le Synology en passant par Panneau de configuration => Services web => Service HTTP. Ne pas oublier d’activer l’option Activer la connexion HTTPS pour les services web.

Solution de backup externe

Ouf. On a bien travaillé ! On a un service de synchronisation « à la Dropbox » personnel et où on met tous nos fichiers importants. On a un service de synchronisation de contacts et de calendriers qui fonctionne du feu de dieu. Mais la grande question arrive:

Et si ma maison/appartement prend feu ? Que vont devenir mes données ? Ou si un voleur me dérobe mon Synology, je fais quoi ?

Et bien, il faut trouver une solution de backup externe. Et pour ça, j’avais des pré-requis bien précis (et c’est pour cela que ça m’a pris du temps)

  • Serveurs situés physiquement en Europe
  • Compagnie de services non américaine
  • Garantie de la sécurité de mes données

Je suis tombée sur  Strato HiDrive. Strato appartient à Deutsche Telekom et ils ont trois offres de sauvegardes:

  1. HiDrive Free: gratuit pour 5GB
  2. HiDrive 100: CHF 8.41/mois pour 100GB
  3. HiDrive 500: CHF 18.06/mois pour 500GB

Comme Strato rempli à 100% mon cahier des charges (ils sont également certifiés ISO 27001 et ça c’est un gros point positif surtout pour une entreprise proposant un service de sauvegarde externe), j’ai choisi l’offre HiDrive 100 qui sera suffisant pour le volume de données que j’ai à sauvegarder.

Un client existe pour Mac et Windows (pas vraiment utile puisqu’on peut accéder au HiDrive par WebDAV ou FTP) ainsi que pour Android, iOS, Windows Phone et Windows 8. Il existe également une application pour le Synology, et c’est là tout l’intérêt. Une fois l’application installé sur le Synology, on configure les sauvegardes et le tour est joué !

Conclusion

Pour moins de CHF 150.–/an, j’ai pu avoir une solution très intéressante de partage, sauvegarde et synchronisation de données tout en ayant un contrôle absolu sur celles-ci.

Bien sûr, ce type de solution n’est valable que dans le cadre privé. Dans un cadre professionnel, il faut choisir des solutions plus solides et adaptés.

J’ai pris l’exemple de stockage sur Synolgy, parce que c’est ce que j’avais à disposition. Mais j’imagine que ceci peut être fait sur d’autres systèmes.

Il existe également un produit tout-en-un qui s’appelle OwnCloud. Pour ma part, il n’a pas retenu mon attention car trop gourmand en ressources systèmes ce qui mettait mon Synology sur les genoux.

Le mot de la fin sera pour Decio qui a accepté que je squatte son blog pour vous proposer ce très loooong article. Un grand merci à toi 🙂

4 Comments…

 Share your views
  1. Très bon article.
    Petite coquille au point 9 :
    /volume1/scripts/gandyn/gandyn.py –config /volume1/scritps/gandyn/gandyn.conf
    dans le chemin du fichier de config scritps au lieu de scripts …
    Cheers, Jérôme.

  2. Merci!
    c’est corrigé.

  3. merci pour ce post qui m’a bien aidé il y 1 an.

    je viens de passer sous DSM 6.0 et la tache planifiée ne s’exécute plus en arrière plan. (statut Interrupted).
    quand l’execute normallement, aucun pb.

  4. Bonjour emmanuel,

    Avec la nouvelle version DSM6, Synology semble avoir fait une sorte de désactivation du compte root. Afin de respecter ces nouvelles règles de sécurité, je vous suggère de changer l’utilisateur de cette tâche planifiée par l’utilisateur « admin ».

    Ensuite, pour que tout puisse s’exécuter sans message d’erreurs, il faut vous connecter en ssh sur votre synology avec votre compte admin et changer les droits d’accès sur le fichier gandyn.log au moyen de la commande suivante:

    sudo chmod 777 /chemin/vers/le/fichier/gandyn.log

    Ceci donnera à l’utilisateur « admin » l’autorisation d’écrire dans ce fichier log. Normalement, le reste devrait pouvoir rester la même chose.

Leave a Comment

Your email address will not be published.

*

{ 1 Trackback }

  1. Reprendre le contrôle de ses donné... (Pingback)