Automatisches Booten und Sichern eines Linux-Servers mit einem verschlüsselten Dateisystem

16

Ich richte einige neue Ubuntu-Server ein und möchte deren Daten gegen Diebstahl sichern. Das Bedrohungsmodell sind Angreifer, die die Hardware wünschen, oder eher naive Angreifer, die die Daten wünschen.


Bitte beachten Sie diesen Abschnitt.

Das Bedrohungsmodell enthält keine intelligenten Angreifer, die die Daten wünschen. Ich gehe davon aus, dass sie eine oder mehrere der folgenden Aktionen ausführen:

  1. Verbinden Sie eine USV mit einem Netzkabel, um den kontinuierlichen Betrieb der Maschine zu gewährleisten.

  2. Fügen Sie ein Paar Ethernet-Brücken zwischen dem Computer und dem Netzwerkabschlusspunkt ein, die den Datenverkehr über ein drahtloses Netzwerk mit einer ausreichenden Reichweite überbrücken, damit der Host die Netzwerkkonnektivität aufrechterhält.

  3. Öffnen Sie die Box und verwenden Sie eine Sonde auf dem Speicherbus, um interessante Dinge zu erfassen.

  4. Verwenden Sie TEMPEST-Geräte, um zu prüfen, was der Host tut.

  5. Verwenden Sie legale Mittel (z. B. eine gerichtliche Anordnung), um mich zur Offenlegung der Daten zu zwingen

  6. Usw. usw.


Ich möchte also, dass sich einige oder im Idealfall alle Daten auf der Festplatte auf einer verschlüsselten Partition befinden, mit dem Schlüsselmaterial, das für den Zugriff auf externe Medien erforderlich ist. Zwei Methoden, die ich mir vorstellen kann, um das Schlüsselmaterial zu speichern, sind:

  1. Speichern Sie es auf einem Remote-Host, auf den über das Netzwerk zugegriffen werden kann, und konfigurieren Sie ausreichend Netzwerk, um es während des Startvorgangs abzurufen. Das Abrufen ist nur für die IP-Adresse zulässig, die dem gesicherten Host zugewiesen wurde (sodass beim Booten über eine andere Netzwerkverbindung kein Zugriff auf die verschlüsselten Daten möglich ist). Das Abrufen kann von Administratoren deaktiviert werden, wenn festgestellt wird, dass der Computer gestohlen wurde.

  2. Speichern Sie es auf einem USB-Speichergerät, dessen Diebstahl auf irgendeine Weise erheblich schwieriger ist als der des Hosts. Die Entfernung zum Host, beispielsweise am Ende eines fünf Meter langen USB-Kabels, das in eine andere Ecke des Raums oder sogar in einen anderen Raum führt, würde die Wahrscheinlichkeit, dass Angreifer darauf zugreifen, wahrscheinlich erheblich verringern. Es auf irgendeine Weise zu sichern, zum Beispiel indem man es an etwas Unbewegliches kettet oder es sogar in einen Safe legt, würde noch besser funktionieren.

Welche Optionen habe ich, um dies einzurichten? Wie ich bereits sagte, würde ich es vorziehen, alles (abgesehen von einer kleinen Boot-Partition, die / etc nicht enthält) verschlüsselt zu haben, damit ich mich nicht darum kümmern muss, wo ich Dateien ablege oder wo sie sich befinden. Sie landen versehentlich.

Wir verwenden Ubuntu 9.04, wenn es einen Unterschied macht.

Curt J. Sampson
quelle
1
Trägt Ihr Bedrohungsmodell Uniformen mit drei Buchstaben? :)
Sven
Sie tragen keine Uniformen. :-) Aber im Ernst, nein; Jede verdeckte oder nicht verdeckte Regierungsbehörde ist wahrscheinlich schlau genug, um die gesamte Hardware zu übernehmen, nicht nur das, was sie schnell abrufen kann.
Curt J. Sampson
1
Ihre Frage scheint sich zu widersprechen. Zuerst sagen Sie "Ich möchte die Daten auf ihnen gegen Diebstahl sichern", dann sagen Sie "schließt intelligente Angreifer, die die Daten wünschen, nicht ein". Interessieren Sie sich für die Daten oder nicht?
Zoredache
1
Das interessiert mich ja. Wenn Sie es zu ähnlichen Kosten sowohl gegen intelligente als auch gegen dumme Angreifer absichern können, großartig, dann werde ich das tun. Wenn nicht, vermeide ich zumindest die Situation, in der jemand in einem Recyclinggeschäft ein gebrauchtes Laufwerk kauft und alle Daten meiner Kunden darauf findet.
Curt J. Sampson
+1 für das tatsächliche Durchdenken des Bedrohungsmodells, was viele Leute mit einer ähnlichen Frage vergessen zu tun.
sleske

Antworten:

8

Ich kenne eine clevere Variante von Option 1 namens Mandos.

Es verwendet eine Kombination aus einem GPG-Schlüsselpaar, Avahi, SSL und IPv6, die alle zu Ihrer ursprünglichen RAM-Festplatte hinzugefügt wurden, um das Schlüsselkennwort der Root-Partition sicher abzurufen. Wenn der Mandos-Server nicht im LAN vorhanden ist, handelt es sich bei Ihrem Server um einen verschlüsselten Baustein, oder der Mandos-Server hat für einen bestimmten Zeitraum keinen Heartbeat von der Mandos-Client-Software erhalten. In diesem Fall werden zukünftige Anforderungen für dieses Schlüsselpaar und den Server ignoriert ist ein verschlüsselter Baustein, wenn er das nächste Mal gestartet wird.

Mandos Homepage

Mandos README

Haakon
quelle
1
Interessante Idee. Ich gehe davon aus, dass Sie die Clients über PXE booten würden, damit sich das öffentliche / private Schlüsselpaar nicht auf der Festplatte befindet. Sie können jedoch das Schlüsselpaar aus dem Kabel ziehen und dieses in Kombination mit einem Sniff der Übertragung des Massenverschlüsselungsschlüssels durch den Server-Computer zum Entschlüsseln des Laufwerks verwenden. Der ganze "Server wird keinen Schlüssel verteilen, wenn er im xxx-Zeitfenster keinen Herzschlag gehört hat" klingt nach einer tollen Möglichkeit, einen Menschen in die Schleife zu bringen. Ordentliches Projekt. Nicht zu schwer zu besiegen, wenn Sie physischen Zugriff haben, aber ordentlich.
Evan Anderson
2
Evan, du willst die FAQ in der Mandos README lesen, denke ich ...
Curt J. Sampson
Hm. Mir ist nicht klar, warum Mandos nur über ein LAN läuft. Liegt es daran, dass keine IP-Adresse und Routen für die Nutzung des Internets eingerichtet werden können?
Curt J. Sampson
1
Curt, Mandos verwendet lokale IPv6-Linkadressen für die Kommunikation, die auf das lokale LAN beschränkt sind. Dies bedeutet jedoch, dass keine externe Konfiguration (DHCP) erforderlich ist oder Konflikte mit anderen Servern im selben LAN auftreten. en.wikipedia.org/wiki/…
Haakon
1
Als Mitautor von Mandos kann ich Haakon nur zustimmen. Es gibt tatsächlich eine Möglichkeit für Mandos, globale IPv4-Adressen mithilfe des Kernels ip=und der mandos=connectParameter zu verwenden. Weitere Informationen finden Sie in dieser E-Mail: mail.fukt.bsnet.se/pipermail/mandos-dev/2009-February/… Clients versucht , nur an den angegebenen Server zu verbinden , sobald und unwiderruflich anders ausfallen. Die empfohlene Konfiguration erfolgt über das LAN. Ich kann auch erwähnen, dass Mandos seit 9.04 in Ubuntu verfügbar ist (und auch in Debian-Tests)
Teddy
6

Wenn Sie sich nur vor nicht-technischen Angreifern schützen möchten, ist die physische Sicherheit Ihrer Meinung nach die beste Wahl.

Mein Denken ist also:

Wenn Sie nach einem Schuh suchen, für den keine menschlichen Eingriffe erforderlich sind, um Schlüsselmaterial einzugeben, dann werden Sie keine Lösung finden, die selbst vor zufälligem Diebstahl durch einen Anhanger mit irgendwelchen technischen Fähigkeiten (oder besser gesagt, den) sicher ist Fähigkeit, jemanden mit technischen Fähigkeiten zu bezahlen).

Das Einfügen von Schlüsselmaterial in so etwas wie ein USB-Stick würde keine wirkliche Sicherheit bieten. Der Angreifer konnte den Schlüssel einfach vom USB-Stick ablesen. Der USB-Stick kann nicht erkennen, ob es sich bei dem Computer, an den er angeschlossen ist, um den Servercomputer oder den Laptop des Angreifers handelt. Der Angreifer muss sich nur vergewissern, dass er entweder alles mitnimmt oder im Falle eines USB-Sticks am Ende eines 3 m langen USB-Verlängerungskabels, das sich in einem Safe befindet, das Verlängerungskabel in seinen PC einstecken und lesen der Schlüssel.

Wenn Sie den Schlüssel über das Netzwerk übertragen, werden Sie ihn wahrscheinlich "verschlüsseln". Der Angreifer muss lediglich den Verschlüsselungsprozess abhören, den Server stehlen und anschließend die "Verschlüsselung", die Sie beim Senden des Schlüssels über das Netzwerk vorgenommen haben, rückentwickeln. Per Definition muss der Servercomputer, der einen "verschlüsselten" Schlüssel über das Netzwerk empfängt, diesen Schlüssel "entschlüsseln" können, um ihn zu verwenden. Sie verschlüsseln den Schlüssel also nicht - Sie verschlüsseln ihn nur.

Letztendlich benötigen Sie eine (künstliche?) Intelligenz, um den Schlüssel in den Server einzugeben. Einer, der sagen kann: "Ich weiß, dass ich den Schlüssel nur an den Server-Computer weitergebe, und ich weiß, dass er nicht gestohlen wurde." Ein Mensch kann das tun. Ein USB-Stick kann nicht. Wenn Sie eine andere Intelligenz finden, die das kann, haben Sie vermutlich etwas Marktfähiges. > lächeln <

Es ist sehr wahrscheinlich, dass Sie den Schlüssel verlieren und Ihre Daten zerstören, ohne Sicherheit zu erlangen. Anstelle Ihrer Strategie bei Verschlüsselungsspielen ist es meines Erachtens besser, eine stärkere physische Sicherheit zu haben.

Bearbeiten:

Ich denke, wir arbeiten vielleicht an unterschiedlichen Definitionen des Begriffs "Bedrohungsmodell".

Wenn es sich bei Ihrem Bedrohungsmodell um Hardwarediebstahl handelt, wird bei der vorgeschlagenen Lösung für die Festplattenverschlüsselung meines Erachtens nichts unternommen, um der Bedrohung entgegenzuwirken. Ihre vorgeschlagene Lösung sieht aus wie eine Gegenmaßnahme gegen den Diebstahl der Daten und nicht gegen den Diebstahl der Hardware.

Wenn Sie verhindern möchten, dass die Hardware gestohlen wird, müssen Sie sie verriegeln, verschließen, in Beton einschließen usw.

Ich habe bereits gesagt, was ich zu Diebstahl der Daten sagen wollte, daher werde ich nicht noch einmal darauf zurückgreifen, außer zu sagen: Wenn Sie den Schlüssel in ein physisches Gerät stecken und nicht schützen können Wenn der Server vor Diebstahl geschützt ist, können Sie das Schlüsselgerät auch nicht vor Diebstahl schützen.

Ich denke, Ihre beste "billige" Lösung besteht darin, eine Art netzwerkbasierten Schlüsselaustausch zu manipulieren. Ich würde einen oder mehrere Personen in die Schleife einbinden, um die "Freigabe" des Schlüssels im Falle eines Neustarts zu authentifizieren. Es würde Ausfallzeiten verursachen, bis der Mensch den Schlüssel "freigegeben" hat, aber zumindest könnten Sie herausfinden, warum ein Schlüssel "freigegeben" angefordert wurde, und entscheiden, ob Sie dies tun oder nicht.

Evan Anderson
quelle
Dies ist eine gute Ergänzung zur Sicherheitsanalyse, daher habe ich sie positiv bewertet, aber es ist keine Antwort auf meine Frage, da Sie ein anderes Bedrohungsmodell verwenden. Beachten Sie, was ich in der Frage gesagt habe, gegen wen ich mich verteidige und nicht.
Curt J. Sampson
1
Um die physische Sicherheit zu verbessern, möchte ich zunächst auf kostengünstigere Optionen eingehen. In unserer gegenwärtigen Umgebung würde es uns viele tausend Dollar kosten, etwas zu installieren, das nicht schnell von jemandem mit einem Paar Bolzenschneidern besiegt werden kann.
Curt J. Sampson
Wenn Sie dies noch einmal lesen, sind Sie sich nicht sicher, ob es sich bei meinem Bedrohungsmodell nicht um Hardwarediebstahl an sich handelt , was im Grunde genommen nur eine Unannehmlichkeit ist, sondern um den damit einhergehenden Datendiebstahl. Genau deshalb ist meine vorgeschlagene Lösung eine Gegenmaßnahme gegen Datendiebstahl und nicht gegen Hardwarediebstahl.
Curt J. Sampson
Es ist interessant, einen Kommentar zu einer fast 8-jährigen Frage zu sehen. Wenn Ihre Lösung für Sie funktioniert, bin ich sicherlich froh darüber.
Evan Anderson
Ich dachte nur "Ich sollte nicht nekrotisieren", dann sah ich diese letzten Kommentare. Ich denke, Curt 'Bedrohungsmodell ist dasselbe wie meines ... um die Daten vor einem Diebstahl der Hardware zu schützen. Mehrere Kommentare zu diesem und ähnlichen Beiträgen besagten, dass die Leute den Schlüsselprozess einfach "belauschen" und später herausfinden könnten. Nur ein wirklich lächerlich schlechter Prozess könnte durch jede Art von Wiederholung unterbrochen werden. Außerdem ... "muss der Angreifer nur" ... "die von Ihnen vorgenommene Verschlüsselung rückentwickeln" ... Von wem sprechen wir? Wie hoch sind die Chancen, dass ein gewöhnlicher Dieb eine solche Fähigkeit besitzt ... oder sogar den Wunsch hat, dies zu tun?
Darron