Pokud používám poskytovatele, jako je Digital Ocean, pokud ukládám soukromé/citlivé informace na VPS, existuje způsob, jak tyto informace chránit (zabránit hostiteli VPS získat přístup) a zároveň zachovat přístup SFTP a SSH?
Přijatá odpověď:
Bohužel to vůbec nejde. Zde je několik krátkých vysvětlení:
I se šifrováním mohl poskytovatel pořídit snímek aktuálního stavu paměti a disku a naklonovat novou instanci, abyste získali tolik přístupu, jako jste měli vy. (zdroj)
I když provozujete VPS se zašifrovanými systémy souborů, všechna data v paměti RAM budou nezašifrovaná, k čemuž by měli přístup správci hostitelského systému VPS, včetně dešifrovací přístupové fráze. Pokud skutečně máte tak přísné požadavky na zabezpečení, zní to, jako byste museli provozovat své vlastní fyzicky zabezpečené systémy nebo najít specializovanou serverovou hostingovou společnost, která se na tento druh věcí specializuje. (zdroj)
…mějte na paměti, že kdokoli s přístupem k obrazu VPS může potenciálně přidat chybu vašeho kódu, aby zjistil heslo, které používáte. (zdroj)
[Šifrování] dává určitý smysl, pokud máte kontrolu nad hardwarem; když hardware ovládá někdo jiný, nemá to smysl, pokud nevěříte, že hostitel se na to opravdu nechce dívat... (zdroj)
Fyzický přístup je přístup root, takže pokud má někdo fyzický přístup k serveru, bez ohledu na to, zda se jedná o virtuální počítač nebo holý kov, má přístup root. V případě KVM má k hostovi přístup vlastník holého kovového hostitele. Data můžete vždy zašifrovat, ale to může mít omezenou výhodu, protože data budou dešifrována, když k nim přistoupíte.
To samé se sítí. Vlastník virtuálního počítače může vidět váš síťový provoz. Opět můžete zašifrovat část provozu (https, ssh atd.). (zdroj)
Zde je konkrétní řešení pro případ, že chcete na svém VPS pouze uložit nějaká citlivá data:
Jak vytvořit a používat šifrovaný adresář prostřednictvím eCryptfs a připojit jej na dálku
Předběžné požadavky
Nainstalujte balíčky ecryptfs-utils
a sshfs
a restartujte systém:
sudo apt update && sudo apt -y install ecryptfs-utils sshfs
sudo apt update && sudo systemctl reboot
Standardní nastavení a použití
Otevřete okno terminálu a spusťte tento příkaz:
ecryptfs-setup-private
Poté budete požádáni, abyste:
-
Enter your login passphrase [<user>]:
tato přístupová fráze se musí shodovat s heslem aktuálního uživatele a bude použita k odemknutí (dešifrování) vašich zašifrovaných informací. -
Enter your mount passphrase [leave blank ...]:
toto přístupové heslo bude použito automaticky, když se vaše zašifrovaná data připojují, ale potřebujete ho pro případ, že dojde k nouzové situaci a budete muset obnovit svá data, takže si je zapište na bezpečné místo.
Výše uvedený příkaz vytvoří dva adresáře:
~/.Private
kde budou uložena vaše zašifrovaná data.~/Private
kde je adresář~/.Private
bude připojen jako dešifrovaný.
Zatímco ~/.Private
není připojen v adresáři ~/Private
má dva soubory s pokyny.
Když se přihlásíte do systému pomocí uživatelského hesla (login passphrase
) adresář ~/.Private
bude automaticky připojen k ~/Private
a budete tam moci pracovat. Když se logout
nebo exit
, adresář ~/.Private
bude odmontován. Chcete-li toho dosáhnout ručně, můžete použít příkazy:ecryptfs-mount-private
a ecryptfs-umount-private
. Více o těchto možnostech lze nalézt v článku eCryptfs z ArchLinux Wiki. Viz také:jak používat ecryptfs s náhodným adresářem.
Pokud ověříte své připojení SSH/SFTP pomocí hesla, výše uvedené bude fungovat. Pokud se však ověřujete pomocí páru klíčů SSH, musíte použít ecryptfs-mount-private
pro připojení ~/.Private
. V tomto případě musíte nejprve SSH do systému a spustit ecryptfs-mount-private
pak budete moci použít SFTP do adresáře ~/Private
. Můžete přidat příkaz ecryptfs-mount-private
na konec ~/.bashrc
pro automatizaci tohoto procesu:
echo -e "\n# Mount my Private directory\necryptfs-mount-private\n" | tee -a ~/.bashrc
Připojte vzdálený zašifrovaný adresář a odemkněte (dešifrujte) jej lokálně
Na vzdáleném počítači (VPS) a na místním počítači proveďte následující příkaz a zadejte stejná data pro login passphrase
a pro mount passphrase
na obou strojích:
ecryptfs-setup-private --nopwcheck --noautomount
Na vzdáleném počítači:
-
Spusťte příkaz:
ecryptfs-mount-private
Poznámka: Zatímco jsem testoval tento přístup, musel jsem výše uvedený příkaz provést dvakrát!
-
Vytvořte jednoduchý obsah:
echo "Hello Word!" > ~/Private/hello.txt
-
Odpojit
~/.Private
:ecryptfs-umount-private
-
Dále můžete odstranit adresář
~/.ecryptfs
(z VPS), kde jsou uložena vaše dešifrovací data.
Na místním počítači:
-
Připojte vzdálenou šifrovanou složku
~/.Private
do místní složky~/.Private
přessshfs
a zamaskujte vlastnictví souborů (nahraďte<user>@<host_name_or_ip>
):sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private
Pro odpojení použijte příkaz:
fusermount -u ~/.Private
nebosudo umount -l ~/.Private
. -
Poté připojte (a dešifrujte) místní adresář
~/.Private
na~/Private
ecryptfs-mount-private
-
Zkontrolujte, zda soubor
hello.txt
je tam:$ cat ~/Private/hello.txt Hello Word!
-
Pokud narazíte na problém s příkazem
ecryptfs-umount-private
(umount.ecryptfs_private
) můžete odpojit místní~/Private
adresáře příkazemsudo umount -l ~/Private
. -
eCryptfs má chyby a někdy
ecryptfs-mount-private
aecryptfs-umount-private
nefungují správně. -
Podle výše uvedeného můžete vytvořit dvě funkce v rámci
~/.bashrc
který zautomatizuje celý proces (připojení/odpojení) (nahraďte<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
Poté
source ~/.bashrc
a budete moci použítecryptfs-remote-mount
aecryptfs-remote-umount
jako příkazy.
Odkazy a další čtení
-
Vytvořte zašifrovaný archivní soubor (tar), kde se skrývají vaše citlivá data:
- Zašifrujte soubor tar.gz při vytváření
- Jak vytvořit šifrovaný (chráněný heslem) archiv Tar nebo Zip v systému Linux
- Jak chránit heslem soubory gzip na příkazovém řádku?
- Jak mohu chránit heslem soubor .tgz pomocí tar v Unixu?.
-
Vytvořte šifrovaný adresář:
- Šifrované zálohování na server SFTP (WebSpace) pomocí ecryptfs
- Návod na bezpečný šifrovaný vzdálený svazek
- Jak šifrovat jednotlivé složky?
- Jak šifrovat adresáře pomocí eCryptfs na Ubuntu 16.04
- YouTube:Jak šifrovat složku v Ubuntu
-
Použít šifrování domovského adresáře uživatele:
- Šifrovaná domovská složka
- Jak na to zašifrovaný domovský adresář
- JAK zašifrovat svůj domovský adresář
- Přístup k zašifrovanému domovskému adresáři v Ubuntu
- Migrace do zašifrovaného domovského adresáře
- Zpráva SSH po přihlášení a poté omezení uživatele v používání účtu