Faire un mirroir de backup « blindé » (come on NSA, come on !)
Ouais, bon le titre est peut être un peu présomptueux et pompeux …
Le Raid, c'est bien, mais c'est pas une sauvegarde !
La sauvegarde c'est bien, mais pas infaillible : le disque dur peut être piqué/tombé HS, votre maison brûle (!) et le pc de la petite soeur aussi avec toutes les sauvegardes qui vont avec …
Reste la sauvegarde à distance : le cloud me direz vous ?
Allez tous sur Drop machin, cloud chose et deux semaines après vous trouver vos photos de chat sur des forums douteux (je sais, suis un poil parano !).
Bon là encore c'est pas top !
Vous comprenez, j'ai pas de chat, mais si jamais j'en avait un, j'aimerais que ses photos soient dans un endroit sûr !
J'ai donc cogité un peu, et mis en place ça :
Le principe : sauvegarder ses données, sur un serveur distant se trouvant dans un datacenter.
Par le bias de connexions SSH en passant par un rebond sur une passerelle SSH.
Le serveur distant :
C'est un serveur, tout ce qu'il y a de plus banale : alimentation redondante, Xeon, ram ECC, carte raid matériel, stockage en raid 5 (sur des partitions cryptées avec LUKS) …
Rien d'extraordinaire en somme !
Il est sous Wheezy, n'est pas accéssible d'Internet, il à son propre firewall (un Iptable + fail2ban), la communication se fait uniquement via SSH et des clés dédiées.
La passerelle SSH :
Un serveur virtuel en DMZ, disposant lui aussi d'un couple Iptable + fail2ban, derrière le firewall d'entré de site (pour l'accès extérieur), et un SSH dans un environnement chrooté.
Le principe :
Le serveur @ home, ouvre un tunnel SSH à travers la passerelle SSH, pour ouvrir une connexion SSH sur le serveur distant (INCEPTION !!).
Evidemment, avec des clés SSH et des utilisateurs différents à chaque fois
Ce tunnel ouvert, il permet de monter la partition cryptés en en SSHFS.
Et derrière il me reste plus qu'à faire un rsync
Le fonctionnement :
Je ne vais pas rentrer dans l'installation du serveur distant ou de la passerelle SSH, c'est pas le but ici !
Sur votre client (mon serveur @ home), vous aurez besoin de :
apt-get install ssh rsync sshfs fuse-utils
pensez à générer toutes vos clés SSH avec:
ssh-keygen -i rsa
et à les copier entre les serveurs :
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
Le montage :
mkdir /media/montagedistant
sshfs -o ssh_command="ssh -t -A user1@passerellessh ssh -l user2" user2@serveurdistant:/data /media/montagedistant
Si vous voulez faire le montage automatique, il faut passer par fuse.auto
Ou alors vous pouvez attaquer direcement en rsync :
rsync -e "ssh -t -A user1@passerellessh ssh -l user2" -avz --progress /media/montagedistant/ user2@serveurdistant:/data
Dans le cas du montage fuse ça donne :
root@Sheldon:/# mount tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) [...] fusectl on /sys/fs/fuse/connections type fusectl (rw) user2@serveurdistant:/data on /media/montagedistant type fuse.sshfs (rw,nosuid,nodev,max_read=65536)
En résumé :
– montage d'une partition cryptée en SSHFS
– en passant 2 tunnels SSH avec des clés privés/publiques différentes
– à travers 4 firewall et 3 fail2ban
Ce qui peut être amélioré :
– mes connaissances pour faire mieux
– un système anti incendie sur le datacenter (et oui … ^^ )
– un chat de combat pour protéger le serveur distant
– …