セッション中にデータ(特にジャンプボックスのパスワード)を安全に保存する方法を見つけようとしています。したがって、ユーザーはジャンプボックスセッションで特定の宛先のパスワードを1回入力するだけです。理想的には、ルートディレクトリからデータを非表示にしたいと思います。
私はrootアクセス権を持つ人を信頼しますが、データを公開できるバックアップなど、rootとして実行されるすべてのプログラムを必ずしも信頼するわけではありません。
SELinuxではない - RHELで利用可能なポリシーには多くの作業が必要であり、移植性がなく、もちろんSELinuxは迷惑です。
暗号化が機能しません。次に、キーが保存されている場所を探す必要があります。
デーモンを実行し、ソケット資格情報転送を使用してそこにデータを保存/認証しますが、それを実装するには少しの労力が必要で、セッションの終わりにデータが消去されたことを確認したいと思います(常にきれいではないかもしれません)。終わり))。
O_TMPFILEを使用して名前のないファイルを作成すると、セッションの終わりにデータを入力してクリーンアップする多くの問題を解決しているようです。しかし、他のプロセスはどのようにデータにアクセスしますか?答えは、所有プロセスもリスニングソケットを開き、そのように要求を処理することです。しかし、もっと簡単な解決策はありますか?
これを完全に考え直す必要がありますか?
ベストアンサー1
カーネルキーリング(特にkeyctl
コマンド)を使用して、安全な方法でデータを保存できます。
カーネルキーリングは、特定のユーザーまたは特定のセッションが使用できるキーを保存できるほど細かく分類されています。したがって、コンソールでSSHを使用するか、2つの異なるシステムでSSHを使用して接続すると、セッションは互いに接続されます。
使用例は次のとおりです。
$ keyctl add user mypassword supersecret @s
543456789
カーネルは、セッション内の値が「supersecret」の「mypassword」というキーのみを保存します(ユーザーキーリング@s
も考慮)。@u
padd
次のコマンドを使用してstdinから読み取ることができます。
$ echo -n supersecret | keyctl padd user mypassword @s
543456789
それからそれを検索する必要がある場合:
$ keyctl print 543456789
supersecret
説明(「mypassword」)でこれを見つけるには、次のコマンドを使用できますsearch
。
$ keyctl search @s user mypassword
543456789
(その後、キーのIDを使用して印刷しますkeyctl print
。)
キーチェーンにはより多くの機能があります...使用したい場合は、まずお読みくださいkeyctl のマニュアルページこれにより、サポートされているタスクと使用するキーリングの良いアイデアを得ることができます。