LinuCレベル3 セキュリティスペシャリスト システム保護と監査 問6
システム保護と監査/パケットフィルタリングの実装nftablesで、特定の通信がどのテーブル・チェイン・ルールを順に評価されて最終的にどう処理されたかを追跡したい。方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「システム保護と監査」に対応。実際の試験問題ではありません)
- Anft --debug=all でルールを読み込むと、以降に通過するパケットごとのルール評価がカーネルログに記録される
- B各ルールに counter を付けると、個々のパケットが通過したチェインとルールの順序が時系列で表示される
- Clog ルールを置くと、そのパケットが最後にどのルールで accept か drop されたかまで1行に記録される
- D対象のパケットに一致するルールで meta nftrace set 1 を設定し、nft monitor trace で評価の経過を表示する
正解:D
解説
nftablesのパケットトレースは、ルールで meta nftrace set 1 を設定してパケットに印を付け、nft monitor trace でその評価の経過を表示する仕組みです。印が付いたパケットについて、どのテーブル・チェインのどのルールに一致し、最終的にどの判定(verdict)になったかが順に出力されます。印を付けるルールは、prerouting や output のように早い段階で評価されるチェインに置くのが一般的です。counter はルールごとに一致したパケット数とバイト数を集計する統計情報で、ルールが使われているかの確認に役立ちますが、個々のパケットの経路は分かりません。
選択肢ごとの解説
- A誤り。--debug はnftコマンド自身の字句解析・構文解析・netlink通信等をデバッグするオプションで、パケットのルール評価は記録しません。
- B誤り。counter はルールに一致したパケット数とバイト数の累計を示す統計情報で、個々のパケットがたどった順序は分かりません。
- C誤り。log はそのルールに到達した時点のパケット情報を記録するだけで、その後どのルールで最終的に処理されたかまでは分かりません。
- D正しい。nftrace の印を付けたパケットについて、nft monitor trace で評価されたルールと最終的な判定を順に確認できます。