{{tag>netadmin sysadmin sécurité application logiciel sauvergarde restic serveur}} ====== Installer le serveur REST HTTP du projet restic ====== ===== Installation et premier démarrage ===== On peut installer le serveur via le gestionnaire de paquets apt : apt install -y restic-rest-server Le service n'est pas immédiatement démarré après l'installation. Il faut faire quelques paramétrages. Dans le fichier ''/etc/default/restic-rest-server'' définir la variable ''BACKUP_DIR'' ... # Directory to store backups. # Note: the server will not start unless this variable is defined. BACKUP_DIR = /srv/restic/backups/ ... Créer le répertoire et donner les droits d'écriture à l'utilisateur exécutant le service : mkdir -p /srv/restic/backups chown -R restic-rest-server:restic-rest-server /srv/restic/ chmod -R g-w,o-rwx /srv/restic/ Ajouter un utilisateur. L'authentification auprès du serveur REST est gérée via les entrées dans le fichier .htpasswd ''/etc/restic-rest-server/users.htpasswd''. Pour ajouter des entrées dans le fichier, utiliser la commande htpasswd du paquet ''apache2-utils'' : apt install -y apache2-utils # Créer un nouvel enregistrement dans le fichier htpasswd -B /etc/restic-rest-server/users.htpasswd myUserName On peut maintenant démarrer le service : systemctl enable restic-rest-server.service --now Si firewalld : # Autoriser les connexions entrantes sur le port TCP 8000 firewall-cmd --add-port=8000/tcp ===== Test de connexion ===== export RESTIC_REPOSITORY="rest:http://user:pass@host:8000/my-test-repo/" restic init ===== Chiffrement TLS ===== Les échanges entre le serveur REST HTTP et les clients restic peuvent être chiffrés. Pour cela il faudra générer un certificat TLS pour le serveur puis paramétrer le service pour utiliser la clé privée et le certificat. # Déplacer la clé privée et le certificat mv rstore01.kvm.internal.key rstore01.kvm.internal.pem /etc/restic-rest-server/ chown restic-rest-server: /etc/restic-rest-server/rstore01.kvm.internal.* Modifier le fichier de configuration du service ''/etc/default/restic-rest-server'' # TCP or UNIX listen address. #LISTEN = unix:/run/restic-rest-server LISTEN = :8000 # Directory to store backups. # Note: the server will not start unless this variable is defined. BACKUP_DIR = /srv/restic/backups/ # Extra arguments to pass to the server. Run `restic-rest-server --help` to see # available options. By default, basic authentication is enabled. ARGS = "\ --htpasswd-file /etc/restic-rest-server/users.htpasswd \ --tls --tls-key /etc/restic-rest-server/rstore01.kvm.internal.key \ --tls-cert /etc/restic-rest-server/rstore01.kvm.internal.cert.pem \ " Redémarrer le service : systemctl restart restic-rest-server.service Depuis un poste client, valider la connexion : export RESTIC_REPOSITORY="rest:https://user:pass@host:8000/my-test-repo/" export RESTIC_CACERT="/absolute/path/to/ca-chain.cert" restic init ===== Confidentialité des identifiants ===== Pour éviter que les identifiants apparaissent sur la ligne de commande ou les variables d'environnement, on peut utiliser des fichiers avec accès restreint. mkdir -p ~/.config/restic chmod a-rwx,u+rwx ~/.config/restic echo "rest:https://user:pass@server.fqdn:8000/my-repo/" > ~/.config/restic/repo echo "my-repo-password" > ~/.config/restic/pass # Lecture seule pour l' utilisateur propriétaire chmod a-rwx,u+r ~/.config/restic/repo ~/.config/restic/pass export RESTIC_REPOSITORY_FILE="/absolute/path/to/.config/restic/repo" export RESTIC_PASSWORD_FILE="/absolute/path/to/.config/restic/pass" ===== Dépannages ===== ==== Écouter sur le port 443 ==== Impossible de démarrer le service en utilisant un port réservé (comme 80 ou 443). Après modification du fichier de configuration et redémarrage du service on obtient une erreur du type : Aug 08 12:01:00 rstore01 restic-rest-server[974]: error: unable to listen: listen on :443 failed: listen tcp :443: bind: permission denied Plusieurs solutions ont été testées : * utiliser la commande ''%%setcap 'cap_net_bind_service=+ep' /usr/bin/restic-rest-server%%'' pour autoriser le binaire : KO ; * Modifier la configuration du service systemd : KO ; * Rediriger le trafic entrer via des règles de filtrage nftables 443 -> 8000 : OK. Avec firewalld : # Déterminer les zones actives et par celle par défaut firewall-cmd --get-active-zones firewall-cmd --get-default-zone # Dans cet exemple, l'interface du serveur est dans la zone public firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=8000 # Une fois la configuration validée firewall-cmd --runtime-to-permanent ====== Références ===== * [[https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#rest-server | Utiliser un serveur HTTP REST (restic.readthedocs.io)(en)]] * [[https://github.com/restic/rest-server|Le serveur REST restic (github.com/restic/rest-server)(en)]]