Digital Oceanのようなプロバイダーを使用して、プライベート/機密情報をVPSに保存する場合、SFTPおよびSSHアクセスを維持しながら、その情報を保護する(VPSホストがアクセスできないようにする)方法はありますか?
承認された回答:
残念ながら、それはまったく不可能です。これについての簡単な説明がいくつかあります:
-
暗号化を使用している場合でも、プロバイダーはメモリとディスクの現在の状態をスナップショットし、新しいインスタンスのクローンを作成して、ユーザーが行ったのと同じ量のアクセスを取得できます。 (出典)
-
暗号化されたファイルシステムでVPSを実行している場合でも、RAM内のすべてのデータは暗号化されません。これには、復号化パスフレーズを含め、VPSホストのシステム管理者がアクセスできます。このような厳しいセキュリティ要件がある場合は、物理的にセキュリティで保護された独自のシステムを実行するか、この種のことを専門とする専用サーバーホスティング会社を見つける必要があるようです。 (出典)
-
…VPSイメージにアクセスできる人は誰でも、使用するパスフレーズを検出するためにコードにバグを追加する可能性があることに注意してください。 (出典)
-
[暗号化]は、ハードウェアを制御できる場合に意味があります。他の誰かがハードウェアを制御している場合、ホストが実際にハードウェアを見たくないと信頼しない限り、ハードウェアにはほとんど意味がありません…(ソース)
-
物理アクセスはルートアクセスであるため、サーバーがVM上にあるかベアメタル上にあるかに関係なく、誰かがサーバーに物理的にアクセスできる場合は、ルートアクセスがあります。 KVMの場合、ベアメタルホストの所有者がゲストにアクセスできます。データはいつでも暗号化できますが、データにアクセスするとデータが復号化されるため、メリットが限られている場合があります。
ネットワークと同じです。 VMの所有者は、ネットワークトラフィックを確認できます。ここでも、トラフィックの一部(https、sshなど)を暗号化できます。 (出典)
機密データをVPSに保存したい場合の特定のソリューションは次のとおりです。
eCryptfsを介して暗号化されたディレクトリを作成および使用し、リモートでマウントする方法
前提条件
パッケージecryptfs-utils
をインストールします およびsshfs
システムを再起動します:
sudo apt update && sudo apt -y install ecryptfs-utils sshfs
sudo apt update && sudo systemctl reboot
標準のセットアップと使用法
ターミナルウィンドウを開き、次のコマンドを実行します:
ecryptfs-setup-private
次に、次のことを求められます:
-
Enter your login passphrase [<user>]:
このパスフレーズは、現在のユーザーのパスワードと一致する必要があり、暗号化された情報のロックを解除(復号化)するために使用されます。 -
Enter your mount passphrase [leave blank ...]:
このパスフレーズは、暗号化されたデータがマウントされるときに自動的に使用されますが、緊急事態が発生した場合に必要であり、データを回復する必要があるため、安全な場所に書き留めてください。
上記のコマンドは2つのディレクトリを作成します:
-
~/.Private
暗号化されたデータが保存される場所。 -
~/Private
ここで、ディレクトリ~/.Private
復号化された状態でマウントされます。
~/.Private
ディレクトリ~/Private
内にマウントされていません 手順が記載されたファイルが2つあります。
ユーザーのパスワード(login passphrase
)を使用してシステムにログインする場合 )ディレクトリ~/.Private
~/Private
に自動的にマウントされます そしてあなたはそこで働くことができるでしょう。 logout
するとき またはexit
、ディレクトリ~/.Private
マウントが解除されます。これを手動で実現するには、次のコマンドを使用できます:ecryptfs-mount-private
およびecryptfs-umount-private
。これらのオプションの詳細については、ArchLinuxWikiのeCryptfsの記事を参照してください。参照:ランダムディレクトリでecryptfsを使用する方法。
パスワードを使用してSSH/SFTP接続を認証する場合、上記は機能します。ただし、SSHキーペアを介して自分自身を認証する場合は、ecryptfs-mount-private
を使用する必要があります ~/.Private
をマウントします 。この場合、最初にシステムにSSHで接続し、ecryptfs-mount-private
を実行する必要があります。 そうすれば、ディレクトリ~/Private
へのSFTPを使用できるようになります。 。コマンドecryptfs-mount-private
を追加できます ~/.bashrc
の下部に このプロセスを自動化するには:
echo -e "\n# Mount my Private directory\necryptfs-mount-private\n" | tee -a ~/.bashrc
リモートの暗号化されたディレクトリをマウントし、ローカルでロックを解除(復号化)します
リモートマシン(VPS)とローカルマシンで次のコマンドを実行し、login passphrase
に同じデータを入力します mount passphrase
の場合 両方のマシンで:
ecryptfs-setup-private --nopwcheck --noautomount
リモートマシンの場合:
-
コマンドを実行します:
ecryptfs-mount-private
注: このアプローチをテストしている間、上記のコマンドを2回実行する必要がありました!
-
簡単なコンテンツを作成する:
echo "Hello Word!" > ~/Private/hello.txt
-
~/.Private
のマウントを解除します :ecryptfs-umount-private
-
さらに、ディレクトリ
~/.ecryptfs
を削除できます (VPSから)復号化データが保存される場所。
ローカルマシンの場合:
-
リモート暗号化フォルダ
~/.Private
をマウントします ローカルフォルダに~/.Private
sshfs
経由 、ファイルの所有権を偽装します(<user>@<host_name_or_ip>
を置き換えます ):sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private
アンマウントするには、次のコマンドを使用します:
fusermount -u ~/.Private
またはsudo umount -l ~/.Private
。 -
次に、ローカルディレクトリ
~/.Private
をマウント(および復号化)します~/Private
へecryptfs-mount-private
-
ファイル
hello.txt
かどうかを確認します あります:$ cat ~/Private/hello.txt Hello Word!
-
コマンド
ecryptfs-umount-private
で問題が発生した場合 (umount.ecryptfs_private
)ローカルの~/Private
をアンマウントできます コマンドsudo umount -l ~/Private
によるディレクトリ 。 -
eCryptfsにはバグがあり、場合によっては
ecryptfs-mount-private
およびecryptfs-umount-private
正しく機能しません。 -
上記によると、
~/.bashrc
内に2つの関数を作成できます これにより、(マウント/アンマウント)プロセス全体が自動化されます(<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
次に、
source ~/.bashrc
ecryptfs-remote-mount
を使用できるようになります およびecryptfs-remote-umount
コマンドとして。
参考資料と参考資料
-
機密データが隠されている暗号化されたアーカイブファイル(tar)を作成します:
- 作成時にtar.gzファイルを暗号化する
- Linuxで暗号化された(パスワードで保護された)tarまたはZipアーカイブを作成する方法
- コマンドラインでgzipファイルをパスワードで保護するにはどうすればよいですか?
- Unixでtarを使用して.tgzファイルをパスワードで保護するにはどうすればよいですか?
-
暗号化されたディレクトリを作成します:
- ecryptfsを使用したSFTPサーバー(WebSpace)への暗号化されたバックアップ
- 安全な暗号化されたリモートボリュームのハウツー
- 個々のフォルダを暗号化する方法は?
- Ubuntu16.04でeCryptfsを使用してディレクトリを暗号化する方法
- YouTube:Ubuntuでフォルダを暗号化する方法
-
ユーザーのホームディレクトリの暗号化を使用する:
- 暗号化されたホームフォルダ
- 暗号化されたホームディレクトリのハウツー
- ホームディレクトリを暗号化する方法
- Ubuntuで暗号化されたホームディレクトリにアクセスする
- 暗号化されたホームディレクトリへの移行
- ログイン後のSSHメッセージ、次にユーザーによるアカウントの使用を制限する