OpenVPN サーバー - 特権を放棄すると、実行時のファイルへのアクセスに影響しますか?

OpenVPN サーバー - 特権を放棄すると、実行時のファイルへのアクセスに影響しますか?

OpenVPN の強化に関する記事Linux では、起動後にサーバー デーモンの権限を削除することが推奨されます。

OpenVPN は、初期化後にルート権限を削除できるように非常に注意深く設計されており、Linux/BSD/Solaris では常にこの機能を使用する必要があります。ルート権限がないと、実行中の OpenVPN サーバー デーモンは、攻撃者にとって魅力的なターゲットではなくなります。

彼らは、以下の指令を設定することを推奨しています。

user nobody
group nobody

これは、起動が完了した後にデーモンが実行されることを意味すると想定しますnobody

しかし、OpenVPNが実行時にアクセスするファイルはいくつかあります。特にCRLファイル:

OpenVPN で crl-verify オプションを使用すると、新しいクライアントが接続するか、既存のクライアントが SSL/TLS 接続を再ネゴシエートするたびに (デフォルトでは 1 時間に 1 回)、CRL ファイルが再度読み込まれます。つまり、OpenVPN サーバー デーモンの実行中に CRL ファイルを更新し、新しく接続するクライアントに対して新しい CRL をすぐに有効にすることができます。

したがって、当然、これら 2 つの機能に互換性がないのではないかと心配しています。デーモンが起動後に権限を削除する場合、実行時に/etc/openvpn/server/crl.pem(所有者root:root、モード0600、SELinux の適用) をどのように読み取ることができるのでしょうか。

  • デーモンが実行時に CRL ファイルにアクセスできない場合、この問題を回避する良い方法はありますか?
  • デーモンが実行時に CRL ファイルにアクセスできる場合、それがどのように可能なのかを知りたいです。

関係があるなら、OS は RHEL8.5 x86_64 です。

答え1

権限を放棄する多くのアプリケーションと同様に、OpenVPN はルート権限がある間にさまざまなファイル ハンドルを開き、それが保持されます。権限を放棄すると、プロセスは、ハンドルが開いている限り、それらのハンドルが開かれたときと同じモードでそれらのハンドルにアクセスできます。

この場合、プロセスが侵害されてopenvpnも、ファイルは変更されることはありません。なぜなら、ファイルは (おそらく、確認していませんが) 読み取り専用で開かれているからです。書き込みモードで開くには新しいファイル ハンドルが必要ですが、プロセスがファイル ハンドルを作成できなくなるため、これは失敗します。

関連情報