私はサブプロセスを生成するデーモンプロセスを持っています。場合によっては、これらのサブプロセスはデーモンに通信し直す必要があります。これらのサブプロセスだけがデーモンとの通信を許可されていることを確認したい。デーモンを保護するには、/ dev/urandomでシークレットトークンを生成するのが良いでしょうか?
私は次のようにこれを実装する:起動時に
- を、デーモンはは/ dev/urandomのを読み込むことで、ランダムな128バイトの秘密のトークンを生成します。/dev/randomは、読者を任意の時間ブロックする可能性があるため、あまり良くありません。
- デーモンはUnixドメインソケットをリッスンします。
- デーモンは、シークレットトークンとソケットのファイル名を環境変数に入れます。それが生成するすべてのサブプロセスは、ファイル名とシークレットトークンを使用してデーモンに接続できます。
- シークレットトークンが正しい場合を除いて、デーモンは接続を拒否します。
質問:
- Iでは、/ dev /ランダムでは、/ dev/urandomがより高いエントロピーを持っていることを知っています。しかし、/ dev/urandomは十分ですか?そうでない場合、私は何を使うべきですか?
- トークンのサイズは十分ですか?
- トークンが格納されているメモリをロックする必要がありますか?デーモンは起動するたびに別のトークンを生成するので、必要ではないと思うので、攻撃者がハードドライブを盗んでスワップファイルからトークンを抽出すると、それはすでに役に立たないはずです。
- シャットダウン時にトークンが格納されているメモリを無効にする必要がありますか?
- 他に何をすべきですか?
さまざまな要件のため、私はデーモンとサブプロセス間の通信を許可するために匿名パイプを使用できません。
あなたはどんな攻撃を恐れていますか? 「十分に良い」とは、その質問に対する答えに依存します。サイズは、ブルートフォース攻撃を防ぐのに十分な大きさのIMOです。 –
デーモンは一種のメモリ内データベースを保持します。私はサブプロセスがこのメモリ内のデータベースを表示して操作できるようにしたいだけです。 – Hongli
しかし、/ dev/urandomは、ブルートフォース攻撃がトークンを取得する唯一の方法であることを十分に保証したエントロピーのソースですか?攻撃者はローカルで非ルートアクセスを持つかもしれません。 – Hongli