過去問ドリル

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

アクセスおよび権限制御の強化/システムコールの制御

systemdのサービスユニットに次の設定を記述した。このサービスがmount(2)を呼び出したときの動作として適切なものはどれか。 SystemCallFilter=~@mount @reboot SystemCallErrorNumber=EPERM

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

正解:D

解説

SystemCallFilterは、値の先頭に ~ を付けると列挙したシステムコールを禁止する拒否リストになり、付けなければ列挙したものだけを許可する許可リストになります。@mount や @reboot は、systemdが用意しているシステムコールのグループです。フィルタに違反した場合、既定ではプロセスがSIGSYSで終了させられますが、SystemCallErrorNumberを指定すると終了させずに指定したエラー番号を返すようになります。32ビットABI経由の迂回を防ぐため、SystemCallArchitectures=native を併用するのが一般的です。

選択肢ごとの解説

  • A誤り。~ は反転の意味で、列挙したシステムコールを禁止する拒否リストになります。~ を付けない場合が許可リストです。
  • B誤り。SIGSYSでの終了はSystemCallErrorNumberを指定しない場合の既定の動作です。この設定ではエラー番号が返ります。
  • C誤り。違反を記録するだけで実行を許すのは、この設定の動作ではありません。mount(2)は実行されません。
  • D正しい。SystemCallErrorNumber=EPERMにより、禁止されたシステムコールは実行されずにEPERMが返り、プロセスは続行します。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く