Clonage HHD externe avec Yunohost et Raspberry Pi 4

Bonjour à tous,

Depuis 18 mois j’utilise un raspberry pi comme NAS à la maison avec un SSD pour Raspberry Pi OS et un HDD externe pour le stockage (films, photos, documents…).

Ça a toujours bien fonctionné, jusqu’au jour où j’ai eu l’idée saugrenue (mea culpa) d’ouvrir le port 22 pour de l’accès SSH afin d’accéder à mon serveur depuis l’extérieur. “Protégeons cela avec fail2ban, ça fera l’affaire” que je me suis dit !! Ni fait, ni à faire, au bout de 48 h et un petit ransomware dans le baba, j’avais tout perdu.

Bon, j’ai réussi à récupérer le plus important (photos familiales) avec “photorec”. Le reste tant pis, rien que je ne puisse récupérer ailleurs.

Bref, j’ai agi naïvement, mais bon, on apprend de ses erreurs !

Aujourd’hui, je voudrais remettre en route un NAS, toujours avec mon Rpi 4, installation de Yunohost sur SSD et stockage des données sur HDD externe.
Afin de ne pas réitérer cette déconvenue, et si jamais j’avais encore l’idée bizarre de jouer à des choses dangereuses, j’aimerais pouvoir sauvegarder mes données sur un second HDD externe, clone du premier. J’aimerais pouvoir synchroniser les deux disques automatiquement avec 48h interval. De cette manière, si jamais je devais attraper un nouveau ransomware, je pourrai simplement brancher le second disque dur et je n’aurai perdu “que” 48h de données, ce qui dans mon cas personnel ne représenterait pas grand chose.

Je ne souhaite pas mettre en place quelque chose de compliqué avec des sauvegardes BORG à l’extérieur. Ca restera chez moi, pas de cryptage, et tant pis pour ma pomme s’il y a un incendie un jour.

Pensez-vous que je puisse mettre cela en place facilement avec Yunohost? Si oui, avec quel type d’application ? (Timeshift ou autre?)

Pensez-vous que je fasse fausse route, qu’il faudrait fonctionner totalement autrement?

Autre point de ma réflexion: sur mon Rpi4 je n’ai que 2 port USB 3. Si je branche les deux HDD dessus, je serai obligé de brancher le SSD avec Yunohost sur un port USB 2. Est-ce suffisant pour Yunohost? Dois-je envisager un Hub USB 3 pour brancher les 3?

Merci de m’avoir lu, je suis ouvert à tout conseil et critique.

Je suis vraiment désolé que ça te soit arrivé, et en même temps tu dois bien être le premier utilisateur à rapporter un tel hack. Ton mot de passe admin était… simple? A noter que maintenant (YunoHot >11.1), il n’y a plus d’utilisateur admin, ce qui réduit un chouïa la surface d’attaque.

Tu avais quelles applications installées sur ton serveur ?

Pour de l’archivage une fois tous les deux jours, ça devrait suffire. Attention à utiliser des disques durs externes avec alimentation dédiée, un RPi4 ne sort pas assez de courant par ses ports USB.

Un simple script rsync programmé avec cron fera l’affaire.

(exemple inspiré de How do you backup your YunoHost server? - #5 by tituspijean, ça ne sauvegarde que yunohost.app vers un hdd monté sur /media/hdd):

# crontab -e

0 */48 * * * rsync -a /home/yunohost.app/ /media/hdd/backup/
1 Like

Merci pour ta réponse :slight_smile:

J’utilisais quelques applications en docker (syncthing, jdownloader, qbitorrent), et je partageais mes vidéos en smb. Récemment j’avais aussi installé Jellyfin pour faire quelques essais pour pouvoir regarder mes vidéos à l’extérieur.

Sinon je pensais utiliser un dock HDD de ce type : lien

Comme ça je n’utiliserai qu’une seule prise USB sur le rasberry pi et je pourrai utiliser la seconde pour le SSD qui supportera Yunohost. Qu’en penses-tu?
Je n’utiliserai pas la fonction “clonage hors ligne”.

Merci pour l’info. Plus simple que je ne pensais, en fait. Est-il possible de synchroniser à partir de la racine du 1er HDD vers celle du second? (pour être sûr d’avoir une copie complète et exacte).

Merci d’avance de ta réponse :grinning:

Une autre solution est d’avoir le HDD (et le backup) en BTRFS et d’utiliser les snapshots pour synchroniser les disques. ça peut se faire dans un script comme rsync avec les commandes btrfs-send (et btrfs-receive à l’autre bout). BTRFS permet aussi de faire un découpage logique en sous-volumes pour contrôler les choses un peu finement.
Il y a aussi des outils simples qui font ça comme celui-là.

Comme tituspijean, je suis un peu étonné de ce qui t’arrive.
Je veux pas remuer le couteau dans la plaie mais tu es sur que 1) c’était un ransomware 2) qu’il est arrivé par une connections ssh non voulue ?

Personnellement, sauf si tu avais un mot de passe du genre “azerty”, je pencherais plutôt par l’utilisation d’une image docker non officielle ou un document arrivé par mail/courriel (pour le cas d’un réel ransomware ( tu as une une demande de rançon?)).
Ou corruption de la carte sd lors de son utilisation normale (ca peut arriver, les coupures de courant brutales n’aide pas), ou …

Concernant le btrfs, pourquoi pas, Timeshift peut se baser sur se système de fichier pour faire ces snapshots (rsync pour les autres système de fichier).

Merci pour ces indications, mais de prime abord ça me semble un peu plus compliqué avec l’outil proposé. Je ferai certainement un essai avec la solution de tituspijean dans un premier temps :wink:

Ah oui, c’était bien un ransomware. Tous mes fichiers avaient changé d’extension (.X000) et j’avais un fichier texte dans chaque répertoire avec une adresse mail russe pour communiquer avec l’attaquant et une demande de 500€ en bitcoins. Et pour la connection ssh, pas de doute non plus, j’ai fait n’importe quoi… mon mot de passe faisait 8 caractères avec un mot du dictionnaire et un nombre à 3 chiffres. Autant dire que ça n’était pas assez costaud… J’ai donné le bâton pour me faire battre.

Je ferai l’essai d’installation de Yunohost dans une dizaine de jours lorsque je serai rentré de vacances.

Je l’ai pas écris clairement mais, btrfs/timeshift est possible mais clairement dasn un context Yunohost le « mieux » est ce que recomande tituspijean.

Ok, je note. Merci :+1:

Bonjour à tous,
Merci de votre aide. J’ai réussi à installer Yunohost avec mes deux HDD et synchronisation par rsync.
Belle journée à tous!

1 Like

clore la discussion :wink:

Je veux bien mais je ne trouve pas le bouton pour clore. Comment faire? :face_with_peeking_eye:

1 Like