LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問38
アクセスおよび権限制御の強化/システムコールの制御本番サーバー上で、PID 5678 のサービスプロセスが呼び出しているシステムコールを eBPF を使ってリアルタイムに監視・記録したい。方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- Astrace でPIDを指定してptrace経由でシステムコールを追跡する
- Bperf stat でPIDを指定してシステムコールのイベントを集計する
- Cauditctl でシステムコールの監査ルールを追加してaudit.logに記録する
- Dbpftrace でトレースポイントにPIDフィルタを付けてシステムコールを記録する
正解:D
解説
bpftrace は eBPF を用いてカーネル内でイベント処理を完結させるため、strace に比べてオーバーヘッドが大幅に少なく本番環境に適しています。syscalls:sys_enter_* のようなトレースポイントに pid フィルタを組み合わせることで、特定プロセスのシステムコールをリアルタイムに記録できます。strace は ptrace を使うためシステムコールのたびに対象プロセスが一時停止し、本番環境では大きなオーバーヘッドになります。perf stat はCPUサイクル・キャッシュミス等のハードウェア性能カウンタを集計するツールで、個別のシステムコール名の記録には向きません。auditd は監査ルールを通じてシステムコールをカーネルで記録できますが、eBPFを使った仕組みではありません。
選択肢ごとの解説
- A誤り。strace は ptrace を使ってシステムコールを追跡する仕組みであり、対象プロセスがシステムコールのたびに一時停止するため本番環境へのオーバーヘッドが大きく、eBPFを利用した方法でもない。
- B誤り。perf stat はCPUサイクル・キャッシュミス・ブランチミスなどのハードウェア性能カウンタを集計するツールで、どのシステムコールが呼ばれたかを個別に記録する目的には適さず、eBPFを使う仕組みでもない。
- C誤り。auditctl でシステムコール監査ルールを追加する方法はカーネルの監査サブシステムを使った追跡であり、eBPFを利用した仕組みではない。また、後からaudit.logを解析する形態でリアルタイム性も低い。
- D正しい。bpftrace は eBPF を使いカーネル内でトレースを処理するため、ptrace に比べてオーバーヘッドが小さい。トレースポイントにPIDフィルタを組み合わせることで特定プロセスのシステムコールをリアルタイムに記録できる。