Yunohost firewall, ip dynamique et nom de domaine

Bonjour,

Je cherche en ce moment différente options pour pouvoir réaliser des sauvegardes de mon NAS Synology (en local chez moi) vers mon serveur Yunohost (hébergé chez OVH).

L’application HyperBackup me permet de réaliser des sauvegardes via rsync.
J’aimerai donc pouvoir faire communiquer mon NAS avec mon serveur Ynh sur le port 873.
(Note: j’utilise le port 873 en exemple puisque c’est le port rsync par défaut, mais je pense plutôt utiliser un autre port aléatoire)

Jusque là, tout semble simple, il me suffirait de faire:

yunohost firewall allow TCP 873

Mais, j’aimerai pouvoir faire en sorte que seul mon IP puisse s’y connecter.
Évidemment, j’ai une IP dynamique pour compliquer un peu les choses.

Sachant que j’ai déjà un nom de domaine qui me permet de récupérer cette ip dynamique, y a-t-il moyen de faire quelque chose du genre ?

yunohost firewall allow TCP 873 -s ipdynamique.mondomaine.tld

Et si ça n’est pas le cas, est-il envisageable de simplement faire un script qui, en tournant sur un CRON, puisse faire (en pseudo code)

IP_a_fermer = recup_ancienne_IP()
IP_a_ouvrir = recup_ip(ipdynamique.mondomaine.tld)

yunohost firewall disallow TCP 873 --no-reload -s $IP_a_fermer 
yunohost firewall allow TCP 873 --no-reload -s $IP_a_ouvrir
yunohost firewall reload

Merci bien !
MT

Et pourquoi ne pas juste faire sur rsync via SSH :

  • c’est conçu pour
  • c’est sécurisé
  • et personne d’autre ne pourra s’y connecter, quelque soit son IP.
rsync -e ssh -avz /chemin/vers/source admin@serveur_ip_ou_nom:/chemin/vers/cible

Et le port 22 est ouvert par défaut.

Cette commande te demandera le mot de passe admin à chaque rsync.
Tu peux contourner ceci en créant un couple de clef SSH et en ajoutant la clef publique dans ton yunohost pour que seule la clef privée puisse être utilisée sans mot de passe.

Tu peux aussi créer un utilisateur backup sur Yunohost qui sera autorisé à s’y connecter sans lui attribuer des droits admin.
Mais là c’est de la bricole, on sort du cadre de l’usage standard de Yunohost.

Salut !

Très bonne question: pourquoi ne pas utiliser ssh?
Le soucis vient d’HyperBackup, qui permet de faire sa sauvegarde via rsync derrière ssh, mais qui semble faire des choses qui ne me conviennent pas tout à fait (démarrer un daemon rsync après connection, puis chroot, etc.).
Les forums synology sont remplis de gens ayant ce genre de problème, et ça ne semble pas simple à résoudre.

Mon premier test a été d’utiliser l’app ssh_chroot_dir de manière a avoir un utilisateur ssh qui ne puisse faire que la sauvegarde rsync, mais cela ne parait pas bien fonctionner.
Je souhaite un utilisateur spécifique, car je ne veux pas laisser traîner la clé privée d’admin sur mon NAS.

C’est pourquoi je m’orientais vers une solution avec uniquement rsync, en essayant d’utiliser le yunohost firewall, de manière à rester quand même dans le cadre de Yunohost.

Évidemment, ma dernière solution sera de créer un utilisateur unix classique, avec accès ssh, et de faire ma sauvegarde via celui ci.
Cela serait entièrement en dehors de yunohost, c’est pourquoi je veux tenter, auparavant, toutes les possibilités qui tournent autour de ynh.

Merci pour ton aide !

Par contre je ne comprends pas comment tu comptes accéder au contenu du yunohost sans ssh. Il te faut un protocole de partage de fichiers (SMB, SFTP, NFS). Tu ne peux pas faire de rsync directement vers un système distant, même en ouvrant les bons ports.
Je ne suis pas expert mais ça ne parait contraire à ce que j’ai déjà pratiqué avec rsync. Pour moi rsync se faire vers un système de fichier monté, pas vers une machine brute.
Chroot ne permet à mon sens, pas de faire ce que tu veux. D’ailleurs cette appli utilise le partage via SSH ou SFTP et te permet de lancer des commandes distantes depuis un client (interagir sur le système serveur avec cette appli).

Tout ceci ne me semble pas très clair.

Tu veux bien pouvoir lancer des backups avec rsync en cli ?

Ce que je souhaite c’est utiliser l’appli HyperBackup de synology pour envoyer mes sauvegardes sur mon serveur debian-yunohost.
Hyperbackup peut envoyer ses donnés vers différents services (Amazon S3, Dropbox, etc.) et peut également communiquer avec d’autres machines avec rsync.
Leur manuel de configuration se trouve par ici.

La configuration de la connexion, sans ssh, se fait comme ceci:

Quand le “Transfer encryption” est coché, la connexion passe par ssh. Sinon, elle semble passer directement par rsync.
N’ayant jamais utilisé rsync moi-meme, ce que je dis est peut-etre faux, ou en tout cas confus.

Je cherchais donc un moyen d’ouvrir le port 873 sur mon serveur debian-yunohost spécialement pour l’IP de mon NAS, afin de pouvoir continuer mes tests.

Je ne connaissais pas non plus ce process d’usage de rsync.


Par contre, si on suppose que les usages se font via un utilisateur existant sur ton yunohost, tu n’es pas obligé de limiter l’IP à ton IP (en espérant que tu aies une IP fixe chez toi).
Et comme ce besoin est spécifique à ta méthode de sauvegarde, tu ne pourras le faire qu’avec un outil indépendant de yunohost comme iptables.
Je ne sais pas si le firewall de yunohost le fait, mais tu peux regarder sa documentation avec :
yunohost firewall -h
MaIs je ne crois pas qu’il fasse ça de ce que j’ai pu en lire.
Je pense que cette page doit pouvoir t’aider à faire des tests :

A toi de l’adapter à ton IP et ton port.
Ca fonctionne aussi avec des hostnames, mais la commande ne résout l’IP du hostname qu’au lancement de iptables, elle ne la réactualise pas.
Donc prévoir de la relance régulièrement.
Attention, en cas de mauvaise manip, tu peux perdre l’accès à ton Yunohost, si tu venais à bloquer certains ports ou ne plus autoriser ton IP.

Attention, ces règles ne seront pas permanentes, il faudra les ajouter dans un service au démarrage pour qu’elles le soient.

Cette interface te permettra de tester si le port est bien fermé depuis une autre IP : https://ports.yunohost.org/