GNU/Linux >> Linux の 問題 >  >> Ubuntu

Vpsサービスを使用して、Vpsホストがデータにアクセスできないようにすることはできますか?

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を使用する方法。

関連:1つの列から複数の列にデータを分離しますか?

パスワードを使用して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メッセージ、次にユーザーによるアカウントの使用を制限する
関連:ネットワークマネージャーインジケーターがありませんか?
Ubuntu
  1. Gnome Boxの仮想マシンからインターネットにアクセスするにはどうすればよいですか?

  2. ユーザーがルートディレクトリにアクセスできないようにする方法は?

  3. GUI とコマンドラインを使用して Ubuntu のホスト名を変更する

  1. イカが検出されないようにするにはどうすればよいですか?

  2. SSH:プライベート ネットワークで、ssh 公開鍵を使用せずにソース マシンからリモート マシンにアクセスする方法

  3. Windows ホストで実行されている Postgres に WSL2 内から接続するにはどうすればよいですか?

  1. サービスで画像のみをホストできますか?

  2. CentOS / RHE 7 :ユーザーが過去 10 個のパスワードを使用できないようにする方法

  3. CentOS / RHEL :無効なリポジトリが yum キャッシュにダウンロードされないようにする方法