Sichere Offsite-Sicherung, auch bei Hacker-Root-Zugriff

24

Ich suche nach einer Möglichkeit, eine sicherere Methode zum Ausführen einer Offsite-Sicherung zu implementieren, die meine Daten auch vor der Situation schützt, in der ein böswilliger Hacker Root-Zugriff auf meinen Server erlangt hat. Auch wenn das Risiko geringer ist als bei anderen Arten von Risiken, wenn die SSH- und Kennwortsicherheit ordnungsgemäß eingerichtet und das System ordnungsgemäß auf dem neuesten Stand gehalten wird, ist die Menge an Schaden, die dauerhaft angerichtet werden kann, sehr hoch und daher auch ich möchte eine Lösung finden, um das zu begrenzen.

Ich habe bereits zwei Möglichkeiten für Offsite-Backups ausprobiert:

  • Ein einfaches webdav-Mount mit Root-Schreibberechtigung (und Konfiguration in fstab), in das die gesicherten Daten kopiert werden. Problem : Nicht wirklich eine Offsite-Sicherung, da die Verbindung - und darüber hinaus der Zugriff - zum Offsite-Speicherort als Ordner im Dateisystem ständig offen bleibt. Dies ist ein ausreichender Schutz gegen viele Arten von Angriffen, wenn der Mount über eingeschränkte Zugriffsrechte verfügt (Nur-Root-Lesezugriff), nicht jedoch gegen eine böswillige Person mit Root-Zugriff.

  • Borg-Backup über SSH mit Schlüsselauthentifizierung. Problem : Die Verbindung zu diesem externen Server kann mit dem auf dem Host gespeicherten Schlüssel hergestellt werden, wenn der böswillige Benutzer Root-Zugriff auf den Host hat.

Als Lösung denke ich über diese möglichen Wege nach, aber ich weiß nicht wie und womit:

  • Backups können nur geschrieben oder an das Ziel angehängt, aber nicht gelöscht werden.
  • Die Verwendung einer Sicherungssoftware, die die Offsite-Sicherungen verwaltet und das Massenlöschen der Offsite-Sicherungen vom ersten Host nicht unterstützt.

Lösungen, die in meiner Situation nicht wirklich interessant sind:

  • Ein zusätzlicher Sicherungsjob auf dem externen Host, der sie an einen Speicherort überträgt, auf den der erste Host aus technischen Gründen nicht zugreifen kann.

Kann jemand Ratschläge geben, wie eine ordnungsgemäße Offsite-Sicherung für meinen Fall implementiert werden kann?

EarthMind
quelle
7
Zuerst machen Sie ein lokales Backup auf dem Server. Anschließend laden Sie die Sicherung von einem anderen Server auf sich selbst herunter (ohne Verzeichnisse einzuhängen).
TheDESTROS
2
Vor 30 oder 40 Jahren gab es FTP-Server mit einem anonymen "eingehenden" Verzeichnis. Sie können Dateien hochladen, aber nicht überschreiben oder auflisten. Arbeitete einfach durch Festlegen der Berechtigungen des Verzeichnisses entsprechend. Also ... lokale Wurzel oder nicht, kein Unterschied.
Damon
@TheDESTROS Antworten bitte in Antworten, nicht in Kommentaren.
wizzwizz4
Ich denke nicht, dass anonymes FTP mehr verwendet werden sollte.
Lucas Ramage

Antworten:

54

Alle Ihre Vorschläge haben derzeit eines gemeinsam: Die Sicherungsquelle führt die Sicherung durch und hat Zugriff auf das Sicherungsziel. Unabhängig davon, ob Sie den Speicherort bereitstellen oder Tools wie SSH oder rsync verwenden, hat das Quellsystem irgendwie Zugriff auf die Sicherung. Daher kann ein Kompromiss auf dem Server auch Ihre Sicherungen gefährden.

Was passiert, wenn die Sicherungslösung stattdessen Zugriff auf den Server hat? Das Backup-System kann seine Aufgabe mit einem Nur-Lese- Zugriff erledigen , sodass ein Kompromiss beim Backup-System den Server wahrscheinlich nicht gefährden würde. Das Backup-System kann auch nur für diesen Zweck vorgesehen sein, sodass der Inhalt des Backups der einzige Angriffsvektor ist. Das wäre sehr unwahrscheinlich und würde einen wirklich raffinierten Angriff erfordern.

Führen Sie inkrementelle Sicherungen durch, um zu vermeiden, dass die Sicherungen durch manipulierten oder beschädigten Inhalt überschrieben werden. Auf diese Weise können Sie einen beliebigen vorherigen Status innerhalb des festgelegten Wiederherstellungszeitraums wiederherstellen.

Esa Jokinen
quelle
Gibt es Tipps, wo Sie nach einem Handbuch suchen können, um eine schreibgeschützte Zugriffslösung einzurichten?
EarthMind
5
So mache ich ein Backup über ssh: Der Backup-Server wird auf den zu sichernden Server übertragen.
Michael Hampton
4
rsync über ssh ist ebenfalls eine gute Option und ermöglicht inkrementelle Sicherungen. straight scp ist besser für vollständige Backups geeignet
GoFundMonica - codidact.org
10
+1 - "ziehen" statt "drücken"
Criggie
1
So funktionieren auch Sicherungslösungen wie BackupPC oder IBM Tivoli Storage Manager (auch bekannt als Spectrum Protect) .
Dubu
9

Unveränderlicher Speicher

Eine gute Option besteht darin, den Backup-Speicher unveränderlich zu machen oder zumindest eine zuverlässige Versionierung bereitzustellen, die Ihnen eine effektive Unveränderlichkeit verleiht. Um es klar auszudrücken: Unveränderlich heißt, nicht veränderbar oder dauerhaft.

Es gibt mehrere Dienste, die dies für Sie erledigen können. AWS S3, BackBlaze B2 und ich vermuten, dass Azure und Google einen ähnlichen Service anbieten. Sie könnten wahrscheinlich einen Server dafür einrichten, aber ich bin mir nicht sicher, wie.

Wenn Sie über ein unveränderliches / versionskontrolliertes Repository verfügen, können Sie Ihr Backup zu jedem Zeitpunkt wiederherstellen. Wenn Ihr Host also kompromittiert ist, können Sie es zu jedem Zeitpunkt wiederherstellen.

* AWS S3 **

Ich bin am besten mit AWS S3 vertraut. S3 bietet versionierten, verschlüsselten Speicher mit hoher Lebensdauer.

S3 unterstützt die Versionierung, wodurch Sie eine effektive Unveränderlichkeit erhalten. Sie können festlegen, dass nach einem konfigurierbaren Zeitraum mithilfe von Lebenszyklusregeln alte Dateiversionen gelöscht werden. Sie können Versionen auch im Kühlhaus (Glacier Cold Archive) archivieren, was ungefähr 1 USD / TB / Monat kostet.

Mithilfe der intelligenten Speicherebenenklasse können Sie Kosten senken. Ich entscheide mich für die Verwendung einer Lebenszyklusregel, um alle statischen Daten in eine seltene Zugriffsklasse zu verschieben. Dies ist eine dauerhafte und moderate (Hot-) Leistung, hat jedoch nicht die Skalierbarkeit oder Leistung des S3-Standards.

S3 verwendet IAM-Benutzer und -Richtlinien (Identity Access Management, dh Benutzerverwaltung). Auf diese Weise können Sie sehr genau steuern, was Ihre Sicherungssoftware mit Ihrem Speicher tun kann. Sie können dem Sicherungsbenutzer die Berechtigung zum Hochladen erteilen, das Aktualisieren und Löschen jedoch verweigern. Sie können auch eine Multi-Faktor-Authentifizierung benötigen, um Dateien zu löschen, oder sogar eine Objektsperre bereitstellen , damit Dateien nicht gelöscht werden können.

Vorgeschlagene Software

Ich erstelle inkrementelle Backups mit Restic . Restic lädt die neuen Dateien in Ihren Speicherort hoch. Ich glaube (aber ich könnte falsch sein), dass es neue Dateien erstellt, aber im Allgemeinen werden keine Dateien aktualisiert oder gelöscht.

Borg ist eine weitere Option. Früher habe ich Borg verwendet, aber ich habe festgestellt, dass meine mittelgroßen Backups mit Hunderten von MB effektiv alle meine Daten jeden Tag von EC2 auf S3 hochgeladen haben. Für mich ist das nicht inkrementell, also habe ich aufgehört, es zu verwenden. Ich habe Dokumentation dazu gefunden, aber keinen Link.

Es gibt Dutzende von Software-Komponenten, die in den Cloud-Speicher hochgeladen werden können.

Geschützter Speicher

Mit einer Sicherungssoftware können Sie versuchen, dem IAM-Benutzer die Berechtigung zum Schreiben neuer Dateien zu erteilen, vorhandene Dateien jedoch nicht zu aktualisieren. Es ist einfach, diese Einschränkung mit AWS IAM vorzunehmen, aber gemäß dem folgenden Kommentar funktioniert Restic mit diesen Berechtigungen nicht. Sie können auch eine Multi-Faktor-Authentifizierung einrichten, um Dateien aus S3 zu löschen.

Sie könnten einen anderen IAM-Benutzer haben, der von Ihrem PC aus ausgeführt wird, der die regelmäßige Bereinigung des Archivs durchführt und Versionen gemäß der von Ihnen festgelegten Richtlinie verwirft.

Tim
quelle
1
Siehe auch S3-Objektsperre . Es kann so konfiguriert werden, dass niemand, auch nicht der Root-Benutzer, ein Objekt für den festgelegten Zeitraum löschen oder überschreiben kann.
user71659
Ich vermute, dass die Objektsperre für Backups ein bisschen zu viel ist, da Sie manchmal Dateien löschen möchten. Es kann ablaufen, so dass Sie später Dateien löschen können.
Tim,
1
Restic erstellt und entfernt gerne Dateien im "locks" -Verzeichnis, um den exklusiven Zugriff zu kontrollieren. Wenn Sie also die Berechtigung zum Entfernen von Dateien im Back-End entfernen, kommt es zum Absturz. Eine hier vorgeschlagene Lösung ist die Verwendung von zwei Buckets (ein Lese- / Schreib-Bucket für Sperren und ein Append-Only-Bucket für alles andere). Anschließend wird eine lokale tinyproxy-Instanz verwendet, um Daten abhängig vom Anforderungspfad über eine von zwei Rclone-Instanzen zu senden, und jeder Rclone sendet Befehle an den entsprechenden Bucket.
Scott Dudley
8

Borg Backup unterstützt Remote-Repositorys, die nur Anhänge enthalten . Jegliche Gefährdung des zu sichernden Servers kann dazu führen, dass nur neue Sicherungen erstellt und nicht nur alte überschrieben werden.

Jacob
quelle
2
Eine Sache, die ich an Borg nicht mag, ist, dass wenn Ihr inkrementelles Backup eine bestimmte Größe unterschreitet, es bei jedem Backup einfach alles hochlädt. Ich bin zu Restic gewechselt, weil es mit der Bandbreite ineffizient war. Ich weiß nicht, was die Schwelle ist, aber genug, dass es ein bisschen nervig war.
Tim,
Also, wer entfernt die alten Backups in einem solchen System? Ich habe versucht, nur einmal Dinge auf Festplatten hinzuzufügen und nie wieder zu entfernen. Es stellte sich heraus, dass sie schnell keinen Speicher mehr haben.
Mast
7

Lösungen, die in meiner Situation nicht wirklich interessant sind:

Ein zusätzlicher Sicherungsjob auf dem externen Host, der sie an einen Speicherort überträgt, auf den der erste Host nicht zugreifen kann.

Das grundlegende Problem ist, dass der Hacker auch auf Ihre Backups zugreifen kann, wenn Sie remote auf sie zugreifen können .

(Aufgrund technischer Einschränkungen)

Technische Einschränkungen sind zu überwinden.

Kann jemand Ratschläge geben, wie eine ordnungsgemäße Offsite-Sicherung für meinen Fall implementiert werden kann?

Bandlaufwerke bieten seit fast 70 Jahren einen sicheren Schutz außerhalb des Standorts gegen alle Arten von Katastrophen - einschließlich Hacker.

RonJohn
quelle
1
Ich verstehe nicht, warum diese Antwort nicht weiter oben steht. Die beste Möglichkeit, einen Online-Angriff zu verhindern, besteht darin, ihn offline zu schalten. Tape ist einfach und bewährt.
Greg
@ Greg Es ist nicht für jeden eine Lösung, wie in meinem Fall, da der von mir verwendete Dienst nur Webdav-, Borg-, SMB- und NFS-Verbindungen zulässt. Außerdem ist es eine sehr teure (im Vergleich zu anständigen Alternativen) Lösung und nicht in jedem Fall interessant. Ich sehe mich nicht dabei, meine 10 € / m VPS mit einer teuren Offline-Backup-Lösung zu sichern. Wenn die Daten weg wären, wäre das für mich nicht das Ende der Welt. Es ist gut, hier Empfehlungen verschiedener Preisklassen zu sehen, aber diese Lösung ist für meinen Anwendungsfall am wenigsten interessant.
EarthMind
Dies. Sichern Sie auf physischen Datenträgern und drehen Sie die physischen Datenträger an einem sicheren Ort außerhalb des Standorts, idealerweise mit einem anderen Risikoprofil für Naturkatastrophen.
3.
@asp Zwei meiner Sysadmins (ich bin ein DBA) haben die Bänder in ihren Autokoffern aufbewahrt. Einer von ihnen war am 11. September zu spät im WTC (diese Systeme befanden sich in verschiedenen DCs). 12 oder 9/13 (ich vergesse welche) fuhr er mit seinen einwöchigen Bändern zum Backup-DC.
RonJohn
3

Sie können Speicherdienste wie AWS S3 (oder möglicherweise das Äquivalent von Google oder Azure) verwenden, um Ihrem Stammkonto PUT-Berechtigungen für Ihren Bucket zu erteilen, aber keine DELETE-Berechtigungen. Auf diese Weise können Sie ein Push-Modell verwenden und der Angreifer kann das Backup nicht löschen.

Es gibt weitere Sicherheitsmaßnahmen, die Sie mit AWS ergreifen können, z. B. die Anforderung, dass MFA DELETEs für den Bucket ausführt, aber PUTs und GETs ohne MFA zulässt. Auf diese Weise können Sie Ihre Daten sichern und abrufen, um Ihre Dienste wiederherzustellen, ohne Ihr MFA-Gerät zu verwenden. Dies kann in extremen Fällen (und möglicherweise zu dunkel, um dies auch nur zu erwähnen) hilfreich sein, in denen der Zugriff auf das MFA-Gerät zu einer Gefährdung führen kann.

Außerdem gibt es verschiedene Möglichkeiten, S3 und ähnliche Dienste für das automatische Failover zu konfigurieren, falls die Hauptdatenquelle offline ist.

Blueriver
quelle
1
Ich würde empfehlen, einen dedizierten "Push" -Client mit Schreib- und keinem Löschzugriff in IAM zu erstellen. Aktivieren Sie außerdem die Versionsverwaltung im Bucket, damit frühere Versionen weiterhin verfügbar sind. Um Kosten zu sparen, sollten Sie alte Versionen auf Glacier "zurückziehen".
Criggie
3

Borg-Backup über SSH mit Schlüsselauthentifizierung. Problem: Die Verbindung zu diesem externen Server kann mit dem Schlüssel hergestellt werden, der auf dem Host gespeichert ist, wenn der böswillige Benutzer Root-Zugriff auf den Host hat.

Sie können den Befehl option in Ihren authorized_keys verwenden. Sie korrigieren den in remote zulässigen Befehl.

wie man Befehle in ssh authorized_keys hinzufügt

Selbst wenn ein Angreifer den Anmeldestamm wiederherstellt, kann er nur den definierten Befehl ausführen.

Schnorchelig
quelle
1

Eine Technik, die Sie einrichten können, besteht darin, die Synchronisierung zwischen Ihrem Server und einem Remote-Backup-Server zu verwenden und den Remote-Backup-Server Snapshots oder was auch immer an seinem Ende ausführen zu lassen, damit das Löschen des Servers nicht zum Löschen außerhalb des Standorts führt.

John
quelle