Wenn ich einen Anbieter wie Digital Ocean verwende und private/sensible Informationen auf dem VPS speichere, gibt es eine Möglichkeit, diese Informationen zu schützen (indem verhindert wird, dass der VPS-Host Zugriff erhält), während der SFTP- und SSH-Zugriff weiterhin erhalten bleibt?
Akzeptierte Antwort:
Leider ist es überhaupt nicht möglich. Hier sind einige kurze Erklärungen dazu:
Selbst mit Verschlüsselung könnte der Anbieter den aktuellen Zustand von Arbeitsspeicher und Festplatte erstellen und eine neue Instanz klonen, um so viel Zugriff wie möglich zu erhalten. (Quelle)
Selbst wenn Sie einen VPS mit verschlüsselten Dateisystemen betreiben, werden alle In-RAM-Daten unverschlüsselt, auf die die Systemadministratoren des VPS-Hosts Zugriff hätten, einschließlich der Entschlüsselungs-Passphrase. Wenn Sie wirklich diese strengen Sicherheitsanforderungen haben, scheint es, als müssten Sie Ihre eigenen physisch gesicherten Systeme betreiben oder ein dediziertes Server-Hosting-Unternehmen finden, das auf solche Dinge spezialisiert ist. (Quelle)
… denken Sie daran, dass jeder mit Zugriff auf das VPS-Image potenziell Fehler in Ihren Code einfügen kann, um die von Ihnen verwendete Passphrase zu erkennen. (Quelle)
[Verschlüsselung] macht Sinn, wenn Sie die Kontrolle über die Hardware haben; Wenn jemand anderes die Hardware kontrolliert, hat es wenig Sinn, es sei denn, Sie vertrauen darauf, dass der Host es nicht wirklich sehen will … (Quelle)
Physischer Zugriff ist Root-Zugriff. Wenn also jemand physischen Zugriff auf den Server hat, unabhängig davon, ob es sich um eine VM oder Bare Metal handelt, hat er Root-Zugriff. Im Fall von KVM kann der Besitzer des Bare-Metal-Hosts auf den Gast zugreifen. Sie können die Daten immer verschlüsseln, aber das kann nur von begrenztem Nutzen sein, da die Daten entschlüsselt werden, wenn Sie darauf zugreifen.
Das gleiche mit dem Netzwerk. Der Eigentümer der VM kann Ihren Netzwerkdatenverkehr sehen. Auch hier können Sie einen Teil des Datenverkehrs verschlüsseln (https, ssh usw.). (Quelle)
Hier ist eine spezielle Lösung, falls Sie nur einige sensible Daten auf Ihrem VPS speichern möchten:
Wie man ein verschlüsseltes Verzeichnis über eCryptfs erstellt und verwendet und es aus der Ferne einbindet
Voraussetzungen
Installieren Sie die Pakete ecryptfs-utils
und sshfs
und starten Sie das System neu:
sudo apt update && sudo apt -y install ecryptfs-utils sshfs
sudo apt update && sudo systemctl reboot
Standardeinrichtung und -nutzung
Öffnen Sie ein Terminalfenster und führen Sie diesen Befehl aus:
ecryptfs-setup-private
Dann werden Sie aufgefordert:
-
Enter your login passphrase [<user>]:
Diese Passphrase muss mit dem Passwort des aktuellen Benutzers übereinstimmen und wird zum Entsperren (Entschlüsseln) Ihrer verschlüsselten Informationen verwendet. -
Enter your mount passphrase [leave blank ...]:
Diese Passphrase wird automatisch verwendet, wenn Ihre verschlüsselten Daten gemountet werden, aber Sie brauchen sie, falls es eine Notsituation gibt und Sie Ihre Daten wiederherstellen müssen, also notieren Sie sie an einem sicheren Ort.
Der obige Befehl erstellt zwei Verzeichnisse:
~/.Private
wo Ihre verschlüsselten Daten gespeichert werden.~/Private
wobei das Verzeichnis~/.Private
wird entschlüsselt gemountet.
Während ~/.Private
nicht im Verzeichnis ~/Private
gemountet ist hat zwei Dateien mit Anweisungen.
Wenn Sie sich über das Benutzerpasswort (login passphrase
) das Verzeichnis ~/.Private
wird automatisch unter ~/Private
gemountet und Sie können dort arbeiten. Wenn Sie sich logout
oder exit
, das Verzeichnis ~/.Private
wird ausgehängt. Um dies manuell zu erreichen, können Sie die Befehle verwenden:ecryptfs-mount-private
und ecryptfs-umount-private
. Mehr zu diesen Optionen finden Sie im Artikel eCryptfs aus dem ArchLinux-Wiki. Siehe auch:wie man ecryptfs mit einem zufälligen Verzeichnis verwendet.
Wenn Sie Ihre SSH/SFTP-Verbindung per Passwort authentifizieren, funktioniert das oben Genannte. Wenn Sie sich jedoch über ein SSH-Schlüsselpaar authentifizieren, müssen Sie ecryptfs-mount-private
verwenden um ~/.Private
zu mounten . In diesem Fall müssen Sie zuerst eine SSH-Verbindung zum System herstellen und ecryptfs-mount-private
ausführen dann können Sie SFTP zum Verzeichnis ~/Private
verwenden . Sie können den Befehl ecryptfs-mount-private
hinzufügen am Ende von ~/.bashrc
um diesen Vorgang zu automatisieren:
echo -e "\n# Mount my Private directory\necryptfs-mount-private\n" | tee -a ~/.bashrc
Mounten Sie ein verschlüsseltes Remote-Verzeichnis und entsperren (entschlüsseln) Sie es lokal
Führen Sie auf dem entfernten Rechner (VPS) und auf dem lokalen Rechner den folgenden Befehl aus und geben Sie identische Daten für login passphrase
ein und für mount passphrase
auf beiden Rechnern:
ecryptfs-setup-private --nopwcheck --noautomount
Auf dem Remote-Rechner:
-
Führen Sie den Befehl aus:
ecryptfs-mount-private
Hinweis: Während ich diesen Ansatz testete, musste ich den obigen Befehl zweimal ausführen!
-
Erstellen Sie einige einfache Inhalte:
echo "Hello Word!" > ~/Private/hello.txt
-
Unmounten Sie
~/.Private
:ecryptfs-umount-private
-
Außerdem können Sie das Verzeichnis
~/.ecryptfs
entfernen (vom VPS), wo Ihre Entschlüsselungsdaten gespeichert sind.
Auf dem lokalen Rechner:
-
Mounten Sie den verschlüsselten Remote-Ordner
~/.Private
in den lokalen Ordner~/.Private
übersshfs
, und maskieren Sie den Besitz der Dateien (ersetzen Sie<user>@<host_name_or_ip>
):sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private
Verwenden Sie zum Unmounten den folgenden Befehl:
fusermount -u ~/.Private
odersudo umount -l ~/.Private
. -
Mounten (und entschlüsseln) Sie dann das lokale Verzeichnis
~/.Private
zu~/Private
ecryptfs-mount-private
-
Überprüfen Sie, ob die Datei
hello.txt
ist da:$ cat ~/Private/hello.txt Hello Word!
-
Bei Problemen mit dem Befehl
ecryptfs-umount-private
(umount.ecryptfs_private
) können Sie den lokalen~/Private
aushängen Verzeichnis durch den Befehlsudo umount -l ~/Private
. -
eCryptfs hat Fehler und manchmal
ecryptfs-mount-private
undecryptfs-umount-private
funktionieren nicht richtig. -
Entsprechend dem Obigen können Sie zwei Funktionen innerhalb von
~/.bashrc
erstellen Dadurch wird der gesamte Prozess (mounten/unmounten) automatisiert (ersetzen Sie<user>@<host_name_or_ip>
):function ecryptfs-remote-mount { sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private > /dev/null 2>&1 sudo keyctl clear @u sudo ecryptfs-insert-wrapped-passphrase-into-keyring $HOME/.ecryptfs/wrapped-passphrase # Attempt to mount, and loop the function unless it is true - due to CLI usage bug ecryptfs-mount-private && echo "Done!" || ecryptfs-remote-mount } function ecryptfs-remote-umount { ecryptfs-umount-private > /dev/null 2>&1 || sudo umount -l $HOME/Private fusermount -u $HOME/.Private > /dev/null 2>&1 || sudo umount -l $HOME/.Private echo "Done!" } export -f ecryptfs-remote-mount ecryptfs-remote-umount
Dann
source ~/.bashrc
und Sie könnenecryptfs-remote-mount
verwenden undecryptfs-remote-umount
als Befehle.
Referenzen und weiterführende Literatur
-
Erstellen Sie eine verschlüsselte Archivdatei (tar), in der sich Ihre sensiblen Daten verstecken:
- tar.gz-Datei beim Erstellen verschlüsseln
- Wie man ein verschlüsseltes (kennwortgeschütztes) Tar- oder Zip-Archiv unter Linux erstellt
- Wie schütze ich gzip-Dateien auf der Kommandozeile mit einem Passwort?
- Wie schütze ich eine .tgz-Datei mit einem Passwort unter Unix mit tar?.
-
Erstellen Sie ein verschlüsseltes Verzeichnis:
- Verschlüsseltes Backup auf einen SFTP-Server (WebSpace) mit ecryptfs
- Anleitung zum sicheren verschlüsselten Remote-Volume
- Wie kann ich einzelne Ordner verschlüsseln?
- Verschlüsseln von Verzeichnissen mit eCryptfs unter Ubuntu 16.04
- YouTube:Ordner in Ubuntu verschlüsseln
-
Verschlüsselung des Home-Verzeichnisses des Benutzers verwenden:
- Verschlüsselter Home-Ordner
- Anleitung zum verschlüsselten Home-Verzeichnis
- HOW-TO-Verschlüsselung Ihres Home-Verzeichnisses
- Zugriff auf Ihr verschlüsseltes Home-Verzeichnis in Ubuntu
- Migration zu einem verschlüsselten Home-Verzeichnis
- SSH-Nachricht nach Anmeldung, dann Nutzung des Kontos durch den Benutzer einschränken