Sauvegarde hors site sécurisée, même dans le cas d'un accès root pirate

24

Je cherche un moyen de mettre en œuvre un moyen plus sûr de faire une sauvegarde hors site qui protégera également mes données contre la situation où un pirate malveillant a obtenu un accès root à mon serveur. Même si le risque que cela se produise est plus faible que d'autres types de risques si la sécurité SSH et par mot de passe est correctement configurée et que le système est correctement mis à jour, le montant des dommages qui peuvent être causés de manière permanente est vraiment élevé et donc je J'aimerais trouver une solution pour limiter cela.

J'ai déjà essayé deux méthodes de sauvegarde hors site:

  • un simple montage webdav accessible en écriture (et configuré dans fstab) sur lequel les données sauvegardées sont copiées. Problème : pas vraiment une sauvegarde hors site car la connexion - et en plus l'accès - à l'emplacement hors site est constamment laissée ouverte en tant que dossier dans le système de fichiers. C'est une protection suffisante contre de nombreux types d'attaques si le montage a des privilèges d'accès limités (accès en lecture seule), mais ne protège pas contre une personne malveillante avec un accès root.

  • Sauvegarde Borg via SSH avec authentification par clé. Problème : la connexion à ce serveur hors site peut se faire avec la clé stockée sur l'hôte si l'utilisateur malveillant a un accès root à l'hôte.

En tant que solution, je pense à ces moyens potentiels, mais je ne sais pas comment et avec quoi:

  • Les sauvegardes peuvent uniquement être écrites ou ajoutées à la destination mais pas supprimées.
  • L'utilisation d'un logiciel de sauvegarde qui gère les sauvegardes hors site et ne prend pas en charge la suppression en masse des sauvegardes hors site du premier hôte.

Des solutions qui ne sont pas vraiment intéressantes dans ma situation:

  • Un travail de sauvegarde supplémentaire sur l'hôte hors site qui les transfère vers un emplacement qui n'est pas accessible par le premier hôte (en raison de limitations techniques).

Quelqu'un peut-il donner des conseils sur la façon de mettre en œuvre une sauvegarde hors site appropriée pour mon cas?

EarthMind
la source
7
Vous effectuez d'abord une sauvegarde locale à l'intérieur du serveur. Ensuite, à partir d'un autre serveur, vous téléchargez la sauvegarde (sans monter de répertoires).
TheDESTROS
2
Il y a 30 ou 40 ans, il existait des serveurs FTP avec un répertoire "entrant" anonyme. Vous pouvez télécharger des fichiers mais pas les écraser ni les répertorier. Fonctionne simplement en définissant les autorisations du répertoire en conséquence. Donc ... racine locale ou non, pas de différence.
Damon
@TheDESTROS Répondez aux réponses, s'il vous plaît, pas aux commentaires.
wizzwizz4
Je ne pense pas que le FTP anonyme devrait être utilisé.
Lucas Ramage

Réponses:

54

Toutes vos suggestions ont actuellement un point commun: la source de sauvegarde effectue la sauvegarde et a accès à la destination de sauvegarde. Que vous montiez l'emplacement ou que vous utilisiez des outils comme SSH ou rsync, le système source a en quelque sorte accès à la sauvegarde. Par conséquent, un compromis sur le serveur peut également compromettre vos sauvegardes.

Que faire si la solution de sauvegarde a accès au serveur à la place? Le système de sauvegarde peut faire son travail avec un accès en lecture seule , donc tout compromis sur le système de sauvegarde ne compromettrait probablement pas le serveur. De plus, le système de sauvegarde pourrait être dédié uniquement à cette fin, faisant du contenu de la sauvegarde le seul vecteur d'attaque. Ce serait très peu probable et nécessiterait une attaque vraiment sophistiquée.

Pour éviter d'écraser les sauvegardes avec du contenu falsifié ou endommagé, effectuez des sauvegardes incrémentielles qui vous permettent de restaurer tout état précédent pendant la période de restauration définie.

Esa Jokinen
la source
Avez-vous des conseils sur la recherche d'un guide pour configurer une solution d'accès en lecture seule?
EarthMind
5
C'est comme ça que je sauvegarde les choses sur ssh: le serveur de sauvegarde va ssh dans le serveur à sauvegarder.
Michael Hampton
4
rsync sur ssh est également une bonne option et permet des sauvegardes incrémentielles. scp droit est mieux adapté pour les sauvegardes complètes
GoFundMonica - codidact.org
10
+1 - "tirer" au lieu de "pousser"
Criggie
1
C'est également ainsi que fonctionnent les solutions de sauvegarde comme BackupPC ou IBM Tivoli Storage Manager (alias Spectrum Protect) .
Dubu
9

Stockage immuable

Une bonne option consiste à rendre votre stockage de sauvegarde immuable, ou au moins à fournir des versions fiables qui vous offrent une immuabilité efficace. Pour être clair: immuable signifie non modifiable ou permanent.

Il existe plusieurs services qui peuvent le faire pour vous. AWS S3, BackBlaze B2 et je soupçonne qu'Azure et Google proposent tous deux un service similaire. Vous pourriez probablement configurer un serveur pour ce faire, mais je ne sais pas comment.

Lorsque vous avez un référentiel immuable / contrôlé par version, vous pouvez restaurer votre sauvegarde à tout moment, donc si votre hôte est compromis, vous pouvez toujours restaurer comme à tout moment.

* AWS S3 **

Je connais le mieux AWS S3. S3 fournit un stockage chiffré et versionné, avec un haut niveau de durabilité.

S3 prend en charge la gestion des versions, ce qui vous donne une immuabilité efficace. Vous pouvez choisir d'utiliser des règles de cycle de vie pour supprimer l'ancienne version des fichiers après une période de temps que vous pouvez configurer. Vous pouvez également archiver des versions dans une chambre froide (glacier cold archive), ce qui coûte environ 1 $ / To / mois.

Vous pouvez utiliser la classe de hiérarchisation du stockage intelligent pour réduire les coûts. J'ai choisi d'utiliser une règle de cycle de vie pour déplacer toutes les données statiques vers une classe d'accès peu fréquente, qui est des performances durables et modérées (chaudes) mais n'a pas l'évolutivité ou les performances de la norme S3.

S3 utilise les utilisateurs et les politiques IAM (gestion des accès aux identités, c'est-à-dire la gestion des utilisateurs). Cela vous donne un contrôle très granulaire de ce que votre logiciel de sauvegarde peut faire avec votre stockage. Vous pouvez autoriser l'utilisateur de sauvegarde à télécharger, mais refuser la mise à jour et la suppression. Vous pouvez également exiger une authentification multifacteur pour supprimer des fichiers, ou même fournir un verrou d'objet afin que les fichiers ne puissent pas être supprimés.

Logiciels suggérés

Je crée des sauvegardes incrémentielles à l'aide de Restic . Restic télécharge les nouveaux fichiers sur votre emplacement de stockage. Je crois (mais je peux me tromper) qu'il crée de nouveaux fichiers, mais en général, il ne met à jour ni ne supprime aucun fichier.

Borg est une autre option. J'avais l'habitude d'utiliser Borg, mais j'ai trouvé qu'avec mes sauvegardes de taille moyenne de centaines de Mo, il téléchargeait efficacement toutes mes données chaque jour d'EC2 vers S3. Pour moi, ce n'est pas incrémentiel, j'ai donc cessé de l'utiliser. J'ai trouvé de la documentation à ce sujet, mais je n'ai pas le lien.

Il existe des dizaines de logiciels pouvant être téléchargés sur le stockage cloud.

Stockage protégé

Avec certains logiciels de sauvegarde, vous pouvez essayer d'accorder à l'utilisateur IAM la permission d'écrire de nouveaux fichiers mais pas de mettre à jour les fichiers existants. Il est facile de faire cette restriction avec AWS IAM, mais selon le commentaire ci-dessous, Restic ne fonctionnera pas avec ces autorisations. Vous pouvez également avoir une authentification multifacteur requise pour supprimer des fichiers de S3.

Vous pouvez avoir un autre utilisateur IAM, exécuté depuis, disons, votre PC, qui effectue le nettoyage périodique de l'archive, en rejetant les versions conformément à la stratégie que vous définissez.

Tim
la source
1
Voir aussi S3 Object Lock . Il peut être configuré de telle sorte que personne, pas même l'utilisateur root, ne puisse supprimer ou écraser un objet pendant la période définie.
user71659
Je pense que le verrouillage d'objet peut être un peu trop pour les sauvegardes, car parfois vous voudrez supprimer des fichiers. Il peut expirer afin que vous puissiez supprimer des fichiers plus tard.
Tim
1
Restic aime créer et supprimer des fichiers dans le répertoire "locks" pour contrôler l'accès exclusif, donc si vous enlevez la permission de supprimer des fichiers sur le back-end, ça casse. Une solution proposée ici consiste à utiliser deux compartiments (un compartiment en lecture / écriture pour les verrous et un compartiment en ajout uniquement pour tout le reste). Il utilise ensuite une instance locale tinyproxy pour envoyer des éléments via l'une des deux instances Rclone en fonction du chemin de demande, et chaque Rclone envoie des commandes au compartiment approprié.
Scott Dudley
8

Borg Backup prend en charge les référentiels distants avec ajout uniquement . Tout compromis sur le serveur en cours de sauvegarde ne peut entraîner que la création de nouvelles sauvegardes, et non le remplacement des anciennes uniquement.

Jacob
la source
2
Une chose que je n'aime pas à propos de Borg est que si votre sauvegarde incrémentielle est inférieure à une taille donnée, elle télécharge tout simplement chaque sauvegarde. J'ai déménagé vers Restic car il était inefficace avec la bande passante. Je ne sais pas quel est le seuil, mais assez pour que ce soit légèrement ennuyeux.
Tim
Alors, qui supprime les anciennes sauvegardes dans un tel système? J'ai essayé d'ajouter et de ne jamais supprimer des éléments sur les disques durs une fois, il s'avère qu'ils manquent rapidement de stockage.
Mât
7

Des solutions qui ne sont pas vraiment intéressantes dans ma situation:

Un travail de sauvegarde supplémentaire sur l'hôte hors site qui les transfère vers un emplacement qui n'est pas accessible par le premier hôte.

Le problème fondamental est que si vous pouvez accéder à distance à vos sauvegardes , le pirate peut également le faire .

(En raison de limitations techniques)

Les limites techniques sont faites pour être surmontées.

Quelqu'un peut-il donner des conseils sur la façon de mettre en œuvre une sauvegarde hors site appropriée pour mon cas?

Les lecteurs de bande offrent une protection sécurisée hors site contre toutes sortes de catastrophes - y compris les pirates - depuis près de 70 ans.

RonJohn
la source
1
Je ne comprends pas pourquoi cette réponse n'est pas plus élevée. La meilleure façon de prévenir une attaque en ligne est de la mettre hors ligne. La bande est simple et éprouvée.
Greg
@Greg Ce n'est pas une solution pour tout le monde, comme dans mon cas en raison des limitations du service que j'utilise, qui n'autorise que les connexions webdav, Borg, SMB et NFS. De plus, c'est une solution très coûteuse (par rapport à des alternatives décentes) et pas intéressante dans tous les cas. Je ne me vois pas sauvegarder mon VPS à 10 € / m avec une solution de sauvegarde hors ligne coûteuse. Si les données disparaissaient, ce n'est pas la fin du monde pour moi. C'est bien de voir des recommandations de différentes gammes de prix ici, mais cette solution est la moins intéressante pour mon cas d'utilisation.
EarthMind
Cette. Sauvegardez sur des supports physiques et faites pivoter les supports physiques dans un emplacement hors site sécurisé, idéalement avec un profil de risque différent pour les catastrophes naturelles.
arp
@asp deux de mes administrateurs système (je suis un DBA) ont gardé les bandes dans leurs coffres de voiture ... L'un d'eux était en retard pour travailler au WTC le 11 septembre (ces systèmes étaient sur différents DC), ainsi de suite 9 / Le 12 ou le 9/13 (j'oublie lequel), il s'est rendu au DC de secours avec ses bandes vieilles d'une semaine.
RonJohn
3

Vous pouvez utiliser des services de stockage comme AWS S3 (ou probablement l'équivalent de Google ou d'Azure) où vous pouvez donner à votre compte racine des autorisations PUT sur votre compartiment, mais pas des autorisations DELETE. De cette façon, vous pouvez utiliser un modèle push et l'attaquant ne pourra pas supprimer la sauvegarde.

Il existe d'autres mesures de sécurité que vous pouvez prendre avec AWS, comme exiger que MFA effectue des SUPPRESSIONS sur le compartiment, mais autorise les PUT et GET sans MFA. De cette façon, vous pouvez à la fois sauvegarder vos données et les récupérer pour restaurer vos services sans utiliser votre appareil MFA, ce qui pourrait être utile dans certains cas extrêmes (et probablement trop obscurs pour être mentionnés) où l'accès à l'appareil MFA pourrait le compromettre.

En outre, un commentaire hors de portée que vous pourriez trouver intéressant / utile, il existe plusieurs façons de configurer S3 et des services similaires pour le basculement automatique dans le cas où la source de données principale est hors ligne.

Blueriver
la source
1
Je recommanderais de créer un client "push" dédié avec un accès en écriture et sans suppression dans IAM. En outre, activez le contrôle de version sur le compartiment, afin que les versions antérieures soient toujours disponibles. Pour réduire les coûts, retirez les anciennes versions de Glacier.
Criggie
3

Sauvegarde Borg via SSH avec authentification par clé. Problème: la connexion à ce serveur hors site peut être effectuée avec la clé stockée sur l'hôte si l'utilisateur malveillant a un accès root à l'hôte.

Vous pouvez utiliser la commande d'option dans vos clés autorisées. Vous corrigez la commande autorisée dans la télécommande.

comment ajouter des commandes dans ssh authorized_keys

Même si un attaquant récupère la racine de connexion, il ne pourra rien faire d'autre que la commande définie.

Snorky
la source
1

Une technique que vous pouvez configurer consiste à utiliser la synchronisation entre votre serveur et un serveur de sauvegarde distant et à laisser le serveur de sauvegarde distant effectuer des instantanés ou quoi que ce soit de son côté afin que le côté serveur d'effacement n'entraîne pas d'effacement hors site.

John
la source