設定ファイル¶
はじめに¶
本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。
01. セットアップ¶
インストール¶
▼ チャートとして¶
チャートリポジトリからチャートをインストールし、Kubernetes リソースを作成する。
$ helm repo add <チャートリポジトリ名> https://falcosecurity.github.io/charts
$ helm repo update
$ kubectl create namespace falco
$ helm install <Helmリリース名> <チャートリポジトリ名>/falco -n falco --version <バージョンタグ>
02. 設定ファイル¶
設定ファイルの例¶
rules_file¶
切り分けて定義した Falco の設定ファイルを設定する。
rules_file:
# デフォルトのルールを定義したファイル
- /etc/falco/falco_rules.yaml
# ユーザー定義のルールを定義したファイル
- /etc/falco/falco_rules.local.yaml
- /etc/falco/rules.d
plugins¶
Falco の拡張プラグインを設定する。
plugins:
- name: k8saudit
library_path: libk8saudit.so
init_config: null
open_params: "http://:9765/k8s-audit"
- name: cloudtrail
library_path: libcloudtrail.so
- name: json
library_path: libjson.so
load_plugins¶
plugins で定義したプラグインのうち、実際に読み込むプラグインの名前を設定する。
load_plugins: []
watch_config_files¶
設定ファイルやルールファイルの変更を監視し、変更を検知したときに Falco を再読み込みするかどうかを設定する。
watch_config_files: "true"
time_format_iso_8601¶
アラートの日時を ISO 8601 形式で出力するかどうかを設定する。
time_format_iso_8601: "false"
json_output¶
アラートを JSON 形式で出力するかどうかを設定する。
json_output: "false"
json_include_output_property¶
JSON 形式のアラートに、ルールの output で整形したメッセージを output キーとして含めるかどうかを設定する。
json_include_output_property: "true"
json_include_tags_property¶
JSON 形式のアラートに、ルールのタグを tags キーとして含めるかどうかを設定する。
json_include_tags_property: "true"
log_stderr¶
Falco 自身のログを標準エラー出力に出力するかどうかを設定する。
log_stderr: "true"
log_syslog¶
Falco 自身のログを syslog に出力するかどうかを設定する。
log_syslog: "true"
log_level¶
Falco 自身のログのうち、出力する最低のログレベルを設定する。
log_level: info
libs_logger¶
Falco が内部で使用するライブラリのログを出力するかどうかと、出力する最低の重要度を設定する。
libs_logger:
enabled: "false"
severity: debug
priority¶
アラートを出力するルールの最低の優先度を設定する。この優先度より低いルールに合致しても、アラートは出力しない。
priority: debug
buffered_outputs¶
アラートの出力をバッファリングするかどうかを設定する。
buffered_outputs: "false"
syscall_event_drops¶
システムコールのイベントを取りこぼしたと判定するしきい値と、取りこぼしたときに実行するアクションを設定する。
syscall_event_drops:
threshold: 0.1
actions:
- log
- alert
rate: 0.03333
max_burst: 1
simulate_drops: "false"
syscall_event_timeouts¶
イベントを受信できずにタイムアウトした回数が、何回連続したらアラートを出力するかを設定する。
syscall_event_timeouts:
max_consecutives: 1000
syscall_buf_size_preset¶
カーネルから Falco にシステムコールのイベントを受け渡すバッファのサイズを、プリセットの番号で設定する。
syscall_buf_size_preset: 4
output_timeout¶
アラートの出力処理が停止したとみなすまでの時間をミリ秒で設定する。
output_timeout: 2000
outputs¶
アラートの出力の流量を、トークンバケット方式の rate と max_burst で制限する。
outputs:
rate: 0
max_burst: 1000
syslog_output¶
アラートを syslog に出力するかどうかを設定する。
syslog_output:
enabled: "true"
file_output¶
アラートをファイルに出力するかどうかと、出力先のファイルを設定する。
file_output:
enabled: "false"
keep_alive: "false"
filename: ./events.txt
stdout_output¶
アラートを標準出力に出力するかどうかを設定する。
stdout_output:
enabled: "true"
webserver¶
Falco が起動する Web サーバーを設定する。この Web サーバーは、ヘルスチェック用のエンドポイントなどを公開する。
webserver:
enabled: "true"
threadiness: 0
listen_port: 8765
k8s_healthz_endpoint: /healthz
ssl_enabled: "false"
ssl_certificate: /etc/falco/falco.pem
program_output¶
アラートを指定したプログラムの標準入力に渡すかどうかと、そのプログラムを設定する。
program_output:
enabled: "false"
keep_alive: "false"
program: >-
jq '{text: .output}' | curl -d @- -X POST
https://hooks.slack.com/services/XXX
http_output¶
アラートを指定した URL に HTTP で送信するかどうかと、送信先の URL を設定する。
http_output:
enabled: "false"
url: "http://some.url"
user_agent: falcosecurity/falco
grpc¶
Falco の gRPC サーバーを起動するかどうかと、gRPC サーバーが待ち受けるアドレスを設定する。
grpc:
enabled: "false"
bind_address: "unix:///run/falco/falco.sock"
threadiness: 0
grpc_output¶
アラートを gRPC サーバー経由で出力するかどうかを設定する。
grpc_output:
enabled: "false"
metadata_download¶
Kubernetes などからメタデータをダウンロードするときの最大サイズ、待機時間、監視の頻度を設定する。
metadata_download:
max_mb: 100
chunk_wait_us: 1000
watch_freq_sec: 1