Wie verwalte ich einen Webserver mit SSL-Schutz für private Schlüssel (Passwort vs. kein Passwort)?

18

In der Sicherheitsgruppe meines Unternehmens wird diskutiert, welche der folgenden Optionen zur Verwaltung des privaten SSL-Schlüssels die schlechteste ist.

Der Webserver benötigt Zugriff auf den privaten Schlüssel für den Verschlüsselungsvorgang. Diese Datei sollte vor unbefugtem Zugriff geschützt werden. Gleichzeitig sollte der Server automatisch ohne menschliches Eingreifen gestartet werden (sofern dies sicher genug ist).

Wir diskutieren drei Optionen:

  1. Schützen Sie den Schlüssel mit Dateisystem-Berechtigungen.

  2. Verwenden Sie einen kennwortgeschützten Schlüssel und geben Sie ihn bei jedem Neustart manuell ein.

  3. Verwenden Sie einen kennwortgeschützten Schlüssel und speichern Sie den Schlüssel im Dateisystem, um den Neustart zu automatisieren.

Unsere Anliegen sind die folgenden:

  1. Bei Option 1 erfolgt der Neustart automatisch, ein Kompromiss könnte jedoch den privaten Schlüssel kopieren und, da dieser nicht geschützt ist, zum Entschlüsseln der Kommunikation oder zum Identifizieren unserer Server verwendet werden.

  2. Option 2 scheint sicherer zu sein, erfordert jedoch menschliches Eingreifen, und Sysadmins sind besorgt, wenn dies außerhalb der Geschäftszeiten geschieht. Außerdem sollte das Kennwort mit mehreren Sysadmins geteilt werden, und Sie wissen, dass ein geteiltes Geheimnis kein Geheimnis mehr ist.

  3. Option 3 hat das Beste aus beiden vorherigen Optionen, aber wenn jemand Zugriff auf den Schlüssel hat, kann er auch Zugriff auf das Kennwort haben :(, daher scheint es überhaupt nicht so sicher zu sein.

Wie verwalten Sie die Sicherheit der privaten Schlüssel Ihrer Server? Gibt es andere (sicherere) Optionen?

chmeee
quelle

Antworten:

10

Option 1 ist meiner Meinung nach der akzeptierte Standard.

Wenn Sie jedoch wirklich die zusätzliche Sicherheit wünschen, warum haben Sie keinen sicheren Server (nicht in Ihrer DMZ) eingerichtet, um Ihren Webserver zu überwachen, und wenn Apache ausfällt, kann er sich automatisch aus der Ferne anmelden und Apache neu starten und versorgen die Passphrase.

Die Passphrase wird also auf einem Computer gespeichert, aber nicht auf dem, auf dem Apache ausgeführt wird, und nicht in Ihrer DMZ. Sie erhalten die zusätzliche Sicherheit, eine Passphrase zu verwenden, und können einen automatischen Neustart durchführen.

Brent
quelle
5

Wenn jemand ausreichend Zugriff auf den Server hat, um den Schlüssel zu lesen, hat er höchstwahrscheinlich auch ausreichend Zugriff, um einen Debugger anzuhängen und den Schlüssel aus dem Speicher abzurufen.

Wenn Sie nicht gerne mitten in der Nacht aufgewacht sind, um Kennwörter einzugeben, wählen Sie Option 1. Wenn Sie über viele Server verfügen, möchten Sie bei einem Fehler automatisch neu starten, und Option 2 lässt dies nicht zu.

Brian-Brazil
quelle
1

Eine Möglichkeit für eine höhere Sicherheit als 1., aber eine geringere Ausfallzeit als 2. besteht darin, private Schlüssel mit kurzer Gültigkeit zu erstellen und regelmäßig zu recyceln. Auf diese Weise können Sie sie ohne Passphrase speichern, aber das Schwachstellenfenster verringern.

Wie Sie erkannt haben, bietet Option 3 keine zusätzliche Sicherheit über 1.

David Schmitt
quelle
1

Aus praktischen Gründen müssen Sie in fast allen Situationen die Option (1) verwenden. Dateisystem-Perms sind der beste Weg, um in den meisten Sicherheits- und praktischen Szenarien erfolgreich zu sein.

Auf einem * nix-System können Sie den privaten Schlüssel nur auf root beschränken, da die meisten guten Webserver (wie Apache) als root starten, ihre Privilegien jedoch auf einen eingeschränkten Benutzer herabstufen, sobald sie über die erforderlichen privilegierten Ports verfügen (80, 443 usw.). .

Wie Sie bereits erwähnt haben, entspricht Option (3) aus Sicherheitsgründen Option (1).

Neobyte
quelle