Falcoルール作成の基礎を解説します。Falco初学者講座 - condition編です。
Sysdigの脅威検知エンジンであるFalcoはカスタマイズ性が高い一方、ルール記述が複雑で敬遠される場合もあります。本記事では、Falcoの基本とルール記述の中核を担うcondition要素を解説します。
Falcoは、CNCFがGraduated(卒業)プロジェクトとして認定するOSSで、システムコールを監視し、定義されたルールに合致するイベントを検知します。Sysdigでは、このルールをFalco Ruleとして利用しています。
Falcoルールは、rule, desc, condition, output, priorityの5要素で構成されます。中でもconditionは検知条件を定義する最重要要素です。
conditionでは、以下の演算子や記法を用いて条件式を記述します。
比較演算子: =, != (もしくは not)
論理演算子: and, or, not
括弧: (...) - 条件式をグループ化
これらの演算子と、evt.type (イベントタイプ), proc.name (プロセス名) などのフィールドを組み合わせて条件式を記述します。例えば、evt.type = execve and proc.name = bash は「execveシステムコールが発生し、かつプロセス名がbashである」という条件を表します。
記事では、より複雑な条件式を作るためのリスト操作(in, intersects)、正規表現(matches)についても解説しています。
さらに、フィールドを活用することで、特定のIPアドレスとの通信を検知するなど、柔軟なルール設定が可能です。
最後に、元記事において理解度を確認するためのクイズも出題されています。Falcoのconditionを理解することで、より高度なセキュリティ監視を実現できますので是非ご一読いただけますと幸いです。