Dedicated Server komplett verschlüsseln? Macht das sinn?

Haha, ihr denkt alle so wahnsinnig kompliziert.

Wartungsarbeiten ankündigen und "durchführen", dabei den Kernel austauschen, die Leute das Entschlüsselungspasswort eintippen lassen und schon hat man alle Daten.

Ist also totaler Schwachsinn, seinen Dedicated Server zu verschlüsseln, da wir doch eh alle auf der Abschussliste der NSA stehen und jederzeit die Hölle losbrechen kann und wir dann in Guantanamo landen!
 
Wie tauschst du denn bei einer Festplatten-Vollverschlüsselung den Kernel?
(Ganz davon abgesehen das es erschreckend genug ist wenn man den bei Linux einfach gegen einen selber-mit-Hintertüre-compilierten tauschen kann ...)
 
@drfuture: Der Kernel muss entschlüsseln, also muss er startbar sein, bevor die erste Verschlüsselung geöffnet wird. Das macht ihn zu einem Ziel, und diese Schwachstelle ist de facto nicht lösbar, außer man macht direkt beim Boot nen diff auf eine Sicherungskopie auf der zuerst entschlüsselten Festplatte, so dass man noch während des Bootvorgangs Manipulationen sofort erkennt.
 
Klar ist das "theo." lösbar in dem aller Code der im Startvorgang ausgeführt wird / der zum System gehört Mit einer Prüfsumme und Zertifikat signiert ist und die Signatur in einem Hardware-Store liegt.
Zum entschlüsseln reicht ein minimal-Programm im Bootloader - welches wenn keine Zertifikate im Spiel sind natürlich gegen ein anderes getauscht werden könnte, wobei mich nun durchaus mal ein Schema interessieren würde was bei HDD-Vollverschlüsselung unter Linux nun noch Unterschlüsselt im Dateisystem liegt - bzw. ob da wirklich was "Tauschbar" ist.
 
@drfuture: Grub2 (bzw. Bootloader), Kernel und das Kernelmodul dmcrypt. Kurzum: das komplette /boot-Verzeichnis. Und nein, ein Minimalprogramm reicht nicht, das Minimalprogramm muss mindestens die Hardware ansprechen können. Und jetzt rate mal, wie dieses Ding bei Linux (oder Betriebssystemen allgemein) heißt...

Was deine Zertifikate angeht: Was prüft sie und kann man das tauschen? Wenn ja, hast du das gleiche Problem wieder. Es gibt nicht umsonst die Regel: Wenn ein Angreifer physikalischen Zugriff auf dein Gerät hat, ist es nicht mehr dein Gerät.
 
der TPM-Chip prüft die Zertifikate, tauschbar nur nach gültiger Validierung mit gültigem Zertifikat.
Klar der Hersteller kann was dran drehen - Platte ausbauen oder im laufenden Betrieb als "Angreifer" Code einschleusen aber nicht.
Ob nun die NSA und ähnliche an ein gültiges Zertifikat kommen oder das passende US-Unternehmen dazu verpflichtet haben ihnen Zugang zu gaben steht natürlich auf einem anderen Papier - 100%ige Sicherheit gibt es nicht da bin ich ja voll und ganz dabei.

Klar braucht die Entschlüsselung Zugriff auf die Hardware - der Zugriff erfolgt dann aber je nach Verschlüsselung (z.B. Bei Sophos Enterprise - die Software ist aus anderen Gründen mist... aber dort bootet auch nicht der Windows-Kernel sondern ein minimaler Linux-Kernel der mit eigenen generischen Treibern auf ata-Geräte Zugreifen kann bzw. bei komplett neuen Chipsätzen ab und an um ein paar Hex-Zahlen erzänzt werden muss die vom Hersteller kommen damit der Zugriff funktioniert.
Das Programm zur PW-Eingabe validiert dann die Intigrität der restlichen Systemdateien die zum Produkt gehören und nicht verschlüsselt vorliegen. Also müsste man schon auch noch das Programm zur PW-Eingabe und Entschlüsselung umpatchen um die Prüfroutinen auszubauen / die Hashwerte zu ändern.

Versteh mich nicht falsch - ich sage nicht das es nicht möglich ist - ich mache das lange genug das ich weiß das es 100%ige Sicherheit nicht gibt - Die erste Frage die man sich stellen sollte ist immer gegen *wen* möchte ich mich absichern... Wenn dann die Antwort *alles* heißt ist das Resultat schlicht ein sehr eng gestecktes Nutzungs-Fenster des Gerätes - was mit gewohnter Benutzungs nicht mehr viel gemein hat.
 
der TPM-Chip prüft die Zertifikate, tauschbar nur nach gültiger Validierung mit gültigem Zertifikat...

Dein Problem ist ein Folgendes: Du vertraust auf Geräte und Software, die manipulierbar vorliegt, um dir einen unverschlüsselten Kernel zu validieren, der die Entschlüsselung übernimmt. Das erste Glied der Kette ist Mist, eben weil es ein erstes Glied ist (das man, als Nutzer bei einem Hoster, nichtmal selbst bestimmen kann).

Um derartige Manipulation weitestgehend auszuschließen, musst du Tricks anwenden, und das wäre sogar gar nicht so schwer:

Part. 1 (plain): /boot
Part. 2 (LUKS): /
Part. 3 (LUKS): /home bzw. Daten

Partition 2 hat eine komplette Kopie von /boot in - z. B. /opt liegen. Diese Kopie ist de facto durch einen Angreifer nicht manipulierbar, weil das den Zugriff auf die entschlüsselte Partition erfordert. Sie wird angelegt, kurz nachdem ein Systemupdate gefahren wird (also quasi ein post-postinst-Script). Zu Beginn des Bootvorgangs entschlüsselst du Part 2. Noch bevor /home entschlüsselt wird, gibst du systemd eine Dependency, dass ein binärer Diff zwischen der verschlüsselten Kopie von /boot und /boot keine Unterschiede aufweisen darf. Gibt es welche, bricht der Bootvorgang mit einem Systemfehler ab. Wir erinnern uns: Die Kopie von /boot ist vom Angreifer nicht manipulierbar. Auch der Check ist nicht umgehbar, denn /etc/systemd mit der Dependency sowie /usr/bin mit dem Diff-Script liegen auf der verschlüsselten, d. h. offline nicht manipulierbaren Partition. Egal was der Angreifer macht, eine unentdeckte Manipulation der plaintext-Partition 1 ist nicht möglich, wenn er nicht direkten Zugriff auf die entschlüsselte Partition 2 bekommt. Partition 3, welche die tatsächlich zu schützenden Daten enthält, wird erst entschlüsselt, wenn keine Manipulation vorlag. Darüber hinaus ist es einem Angreifer initial nicht möglich, das Vorhandensein dieses Checks zu erkennen (ein bisschen Security through Obscurity, aber halt als one-shot-Lösung wirksam).
Wir verbrennen also im Manipulationsfall den LUKS-Key für Partition 2, auf der liegen aber, abgesehen von deiner Dependency und dem Diff-Script, keinerlei Daten, die der Angreifer nicht ganz normal von einem Linux-Repository holen könnte. Der Key für Partition 3 hingegen verbleibt geheim, bis du die Integrität des Systems über den Ringschluss überprüft hast.

Angriffsszenario 2: manipulierter SSH-Server.
Grundsätzlich musst du ja, um die Festplatten zu entschlüsseln, einen SSH-Server laufen haben (oder einen Terminalserver, der dir den Bildschirm streamt - wobei du da wahrscheinlich verkackt hast). Der muss ja auch in /boot liegen, um dir Login und Entschlüsselung für Partition 2 zu ermöglichen. Weiß nicht, ob das so einfach geht, aber wir nehmen es mal an. Aufgebläht auf / ist das Ding ja sofort.
Um die Integrität des Gegenübers zu prüfen, wird ein PrivateKey auf dem unverschlüsselten Teil der Festplatte nötig. Den kann ein Angreifer kopieren, um dir quasi eine Umgebung zu schaffen, in der du ohne dein Prüfscript den Key für Partition 3 übergibst (die verschlüsselten Partitionen gibt es aber dann nicht, die Frage ist eine Attrappe ohne Wirkung). Also er lässt dich in ein Standard-Debian booten, das Kennwörter frägt, die es nicht braucht. Die Manipulation würdest du erst bemerken, wenn deine Daten auf dem System nicht existieren. Dem kannst du entgegenwirken, indem dein Diff-Script dir eine sichtbare Meldung ausgibt, dass keine Manipulation entdeckt wurde. Da der Angreifer zumindest beim ersten Mal nichts von deinem Check weiß, kann er diese Meldung nicht fälschen. Deine Daten auf Partition 3 bleiben also sicher.

Also ja, man kann gewisse Gegenmaßnahmen treffen, aber sie müssen zwingend darauf aufbauen, dass die Integrität des Systems durch Maßnahmen überprüft wird, die sich hinter einer Verschlüsselung verbergen, deren Schlüssel nur du kennst. Loggst du dich über einen Terminalserver ein (z. B. VNC), kann dieser einen Keylogger haben - du arbeitest nicht an einem System, das du selbst prüfen kannst, damit bist du schutzlos.
 
Sag ja *irgendwas* kann *irgendwer* immer Manipulieren ....
In deinem Fall kann auch in Fall 1 die Eingabe des Passworts in einer "Fake" Oberfläche erfolgen - und danach schlicht ein *Systemfehler* kommen und das PW wurde abgefangen.

Klar selbst wenn die gesamte Boot-Kette Signiert ist kann theo. etwas eingeschleust werden - nur damit hat dann der Provider nichts zu tun und meiner Meinung nach schaffen das Maximal Staatliche Stellen - und das nur wenn vorher passende Hintertüren eingebaut wurden. Diesen Fall kann man nicht ausschließen - nur die "normale" Polizei hat darauf keinen Zugriff.
Schutzlos ist man damit definitiv nicht.
Die Frage ist meiner Meinung nur gegen wen und was man sich schützen möchte.
Es macht für mich auch einen großen Unterschied ob ein *gelangweilter* Admin eines Hosters theo. auf die Daten meiner Platte kommen kann - oder nicht.
Auch wird zu 99,99999% jede Beschlagnahmung des BKA / LKA so ablaufen das der Server abgesteckt und mitgenommen wird.
Eine geplante Aktion - und Keylogger auf VNC-Servern usw. sind schlicht eine komplett andere Hausnummer.

Davon ausgehen das es 100%ige Sicherheit gegenübr Allem unmöglich gibt und daraus resultierend alle Computer (Egal ob Server in einem RZ, Laptops, Handy, Tablet, Desktop) unverschlüsselt lassen - weil *sind ja eh manipulierbar* Und klar trifft das auch auf deinem Desktop-PC im Wohnzimmer zu - finde ich nun irgendwie den Falschen Weg.
 
@drfuture: Richtig, der Keyslot von Part 2 ist dann verbrannt. Das ist mir schon klar, und ist auch so beabsichtigt, diese Partition trägt ja keine relevanten Daten. Sie dient rein der Überprüfung (und trägt das restliche System). Ist in diesem Schritt ein Systemfehler vorgefallen, bleibt Partition 3 geschlossen, darf aber remote nicht mehr geöffnet werden, d. h. die Daten sind sicher, aber sie zu bekommen erfordert physische Präsenz bzw. ein zugeschicktes Image.
 
Ich kann doch mit dem gerade eingegebenen Schlüssel am *falschen* System hin gehen und das echte entschlüsseln - das hab ich ja gar nicht modifiziert?
Bzw lässt sich die Änderung ja schlicht Rückgängig machen
 
@drfuture: Richtig. Kannst du. Dann hast du ein Standard-Debian-System ohne /home und mit zwei zusätzlichen Dateien. Glückwunsch. Mission verbockt.

Lies nochmal, was ich genau oben vorgeschlagen hab.
 
Virtualisierungsplattform -> Container verschlüsseln

wäre jetzt auch noch eine ziemlich einfache Möglichkeit seine Daten sicher zu schützen.
 
Ich mag mich jetzt katastrophal irren, aber bei einem virtualisierten System hat derjenige, der das Hostsystem kontrolliert (in dem Fall also der Hoster), vollständigen Zugriff auf den Arbeitsspeicher, und kann sich diesen (mittels volatility, oder irgendeinem anderen Stück Software) einfach dumpen, und sich aus diesem dann so saftige Dinge wie private Schlüssel und dergleichen ziehen. Was die Verschlüsselung des Containers relativ sinnfrei machen würde, weil sie ja eigentlich genau davor schützen sollte, einem unbefugten Zugriff durch einen physisch externen Angreifer.
 
Klär mich bitte auf. Nach dem kurzen bisschen Recherche, dass ich jetzt in Bezug auf KVM betrieben habe, hat der Host vollen Zugriff auf den Speicher des Gastsystemes. Und wenn ich mir so ansehe, wie funktioniert, dann sehe ich kein Indiz dafür, dass meine Annahme falsch ist.
 
Ok, ich ging davon aus, wir sprechen davon auf einem dedizierten Server selbst zu virtualisieren. Da gibt es unzählige Möglichkeiten, welche auch sicher sind. Und solche Geschichten wie unbekannte USB-Geräte zu ignorieren, funktionieren da OutOfTheBox. Ist quasi mit mein täglich Brot.
Da ich dich aber anscheinend missverstanden habe, einfach weitermachen. :)
 
Nein, nein - es ging um wie von angesprochen um virtuelle Maschinen oder Container, die ich mir bei einem Hoster einkaufe, das was klassischerweise unter "vServer" geführt wird. Ich hab dich aber ebenfalls missverstanden. Es ist definitiv zu spät hier. :D
 
Zurück
Oben