過去問ドリル

LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問25

アクセスおよび権限制御の強化/Linux Capabilities による権限制御

rootで動かす必要があるサービスをsystemdで管理している。このサービスが乗っ取られた場合でも、カーネルモジュールの読み込みとシステム時刻の変更は行えないようにしたい。ユニットファイルの [Service] セクションに追加する設定として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)

正解:C

解説

カーネルモジュールの読み込みには CAP_SYS_MODULE、システム時刻の変更には CAP_SYS_TIME が必要です。CapabilityBoundingSet= はサービスのバウンディングセットを決める設定で、先頭に「~」を付けると列挙したケーパビリティだけを取り除きます。バウンディングセットから外れたケーパビリティは、rootとして動くプロセスでも、その子孫でも獲得できません。「~」を付けずに列挙すると、逆に列挙したものだけを残す意味になります。

選択肢ごとの解説

  • A誤り。「~」が無いと列挙したケーパビリティだけを残す指定になり、モジュールの読み込みと時刻の変更だけが許される状態になります。
  • B誤り。アンビエントセットはUIDが0でないプロセスへケーパビリティを引き継ぐためのもので、rootのプロセスが持つ権限は減りません。
  • C正しい。バウンディングセットから2つのケーパビリティを除くため、rootで動いていてもモジュールの読み込みと時刻の変更ができなくなります。
  • D誤り。NoNewPrivileges= はexecveで新たに特権を得ることを防ぐ設定で、rootのプロセスが既に持っているケーパビリティは外しません。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く