This guide covers all configuration options for the Falco nginx plugin.
The minimal configuration in /etc/falco/falco.yaml:
plugins:
- name: nginx
library_path: /usr/share/falco/plugins/libfalco-nginx-plugin.so
init_config:
log_paths:
- /var/log/nginx/access.logMonitor multiple nginx log files:
init_config:
log_paths:
- /var/log/nginx/access.log
- /var/log/nginx/custom-site.log
- /srv/nginx/logs/access.logAdjust buffer size for high-traffic environments:
init_config:
buffer_size: 16384 # Default: 8192 bytesBuffer size recommendations:
- Low traffic (< 100 req/sec): 8192 (default)
- Medium traffic (100-1000 req/sec): 16384
- High traffic (> 1000 req/sec): 32768
Configure event batching:
init_config:
max_batch_size: 1000 # Events per batch (default: 500)
batch_timeout: 500 # Milliseconds (default: 200)Configure internal event channel:
init_config:
event_channel_size: 10000 # Default: 5000File monitoring interval:
init_config:
watch_interval: 5 # Seconds (default: 1)The plugin supports these nginx log formats:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';init_config:
log_format: combined # or "common", "json"Set threshold for large response detection:
init_config:
large_response_threshold: 10485760 # 10MB in bytesLimit maximum log file size to process:
init_config:
max_file_size: 1073741824 # 1GB in bytesSet up log rotation to prevent disk space issues:
# Download and run setup script
wget https://raw.githubusercontent.com/takaosgb3/falco-plugin-nginx/main/scripts/setup-log-rotation.sh
sudo ./setup-log-rotation.shManual logrotate configuration (/etc/logrotate.d/nginx-falco):
/var/log/nginx/*.log {
daily
size 100M
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid)
fi
endscript
}
Add custom rules in /etc/falco/rules.d/custom-nginx.yaml:
- rule: Custom Attack Pattern
desc: Detect custom attack pattern
condition: nginx.request_uri contains "custom-pattern"
output: "Custom attack detected (ip=%nginx.remote_addr%)"
priority: WARNING
tags: [custom]
source: nginx- EMERGENCY: System unusable
- ALERT: Immediate action required
- CRITICAL: Critical conditions (attacks)
- ERROR: Error conditions
- WARNING: Warning conditions
- NOTICE: Normal but significant
- INFO: Informational
- DEBUG: Debug-level messages
plugins:
- name: nginx
library_path: /usr/share/falco/plugins/libfalco-nginx-plugin.so
init_config:
log_paths:
- /var/log/nginx/access.log
buffer_size: 32768
max_batch_size: 2000
batch_timeout: 1000
event_channel_size: 20000init_config:
buffer_size: 8192
max_batch_size: 100
batch_timeout: 50
watch_interval: 1Enable metrics collection:
init_config:
enable_metrics: true
metrics_interval: 60 # Secondsこのガイドでは、Falco nginxプラグインのすべての設定オプションについて説明します。
/etc/falco/falco.yamlでの最小限の設定:
plugins:
- name: nginx
library_path: /usr/share/falco/plugins/libfalco-nginx-plugin.so
init_config:
log_paths:
- /var/log/nginx/access.log複数のnginxログファイルを監視:
init_config:
log_paths:
- /var/log/nginx/access.log
- /var/log/nginx/custom-site.log
- /srv/nginx/logs/access.log高トラフィック環境向けにバッファサイズを調整:
init_config:
buffer_size: 16384 # デフォルト: 8192バイトバッファサイズの推奨値:
- 低トラフィック(< 100 req/秒): 8192(デフォルト)
- 中トラフィック(100-1000 req/秒): 16384
- 高トラフィック(> 1000 req/秒): 32768
イベントバッチングの設定:
init_config:
max_batch_size: 1000 # バッチあたりのイベント数(デフォルト: 500)
batch_timeout: 500 # ミリ秒(デフォルト: 200)内部イベントチャンネルの設定:
init_config:
event_channel_size: 10000 # デフォルト: 5000ファイル監視間隔:
init_config:
watch_interval: 5 # 秒(デフォルト: 1)プラグインは以下のnginxログフォーマットをサポートしています:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';init_config:
log_format: combined # または "common", "json"大きなレスポンス検出のしきい値を設定:
init_config:
large_response_threshold: 10485760 # 10MBバイト処理する最大ログファイルサイズを制限:
init_config:
max_file_size: 1073741824 # 1GBバイトディスク容量の問題を防ぐためにログローテーションを設定:
# セットアップスクリプトをダウンロードして実行
wget https://raw.githubusercontent.com/takaosgb3/falco-plugin-nginx/main/scripts/setup-log-rotation.sh
sudo ./setup-log-rotation.sh手動logrotate設定(/etc/logrotate.d/nginx-falco):
/var/log/nginx/*.log {
daily
size 100M
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid)
fi
endscript
}
/etc/falco/rules.d/custom-nginx.yamlにカスタムルールを追加:
- rule: Custom Attack Pattern
desc: カスタム攻撃パターンを検出
condition: nginx.request_uri contains "custom-pattern"
output: "カスタム攻撃を検出 (ip=%nginx.remote_addr%)"
priority: WARNING
tags: [custom]
source: nginx- EMERGENCY: システム使用不可
- ALERT: 即座の対応が必要
- CRITICAL: 重大な状態(攻撃)
- ERROR: エラー状態
- WARNING: 警告状態
- NOTICE: 正常だが重要
- INFO: 情報
- DEBUG: デバッグレベルのメッセージ
plugins:
- name: nginx
library_path: /usr/share/falco/plugins/libfalco-nginx-plugin.so
init_config:
log_paths:
- /var/log/nginx/access.log
buffer_size: 32768
max_batch_size: 2000
batch_timeout: 1000
event_channel_size: 20000init_config:
buffer_size: 8192
max_batch_size: 100
batch_timeout: 50
watch_interval: 1メトリクス収集を有効化:
init_config:
enable_metrics: true
metrics_interval: 60 # 秒