CrowdSecは、ログやHTTPリクエストを解析して不正な挙動を検知し、ファイアウォールやリバースプロキシなどで遮断するオープンソースのIDS/IPS兼WAFです。検知した攻撃元IPの情報はコミュニティで共有され、クラウドソース型のブロックリストとして他の利用者の防御にも活用されます。Go言語で実装され、エージェント本体crowsecとCLIツールcscliの2バイナリ構成になっています。
リポジトリ構成を見ると、中心はGoモジュール(go.mod)で、Coraza(WAFエンジン)やexpr-lang(ルール評価)、grokky(ログパーサ)など専用ライブラリに依存しています。cmd/crowdsec-cli以下にcliitem、clidecision、clibouncer、climachineなど多数のサブコマンド群があり、Hub(ルール・シナリオ集)からパーサーやコレクションをインストールし(cscli collections installなど)、受信したログをパースしてアラートとDecision(遮断判断)を生成する流れが見えます。build/docker/Dockerfileでは、ビルド時にwizard.shで初期設定を作り、cscli hub updateでHubの検知ルールを取得し、crowdsecurity/linuxコレクションをインストールする手順が明記されており、これが実際の検知ロジックの供給元であることが分かります。clialert/alerts.goやtable.goでは、取得したアラートをJSON・CSV・表形式で出力する処理が実装されており、CLIから検知結果やDecision(ban・captchaなど)を確認・管理できる構造です。Remediation Component(bouncer)はLocal API経由でDecisionを取得し、実際の遮断を別マシンで行う「Detect Here, Remedy There」という分離設計がREADMEで説明されています。
- STEP 01
READMEのリンクからLinux、Docker、Windowsなど環境別のインストール手順ページに進む必要があり、リポジトリ単体にワンコマンドのインストーラは含まれていません。
- STEP 02
Dockerで試す場合、build/docker/Dockerfileのビルド過程でwizard.sh --docker-modeが初期設定ファイル(config.yaml、acquis.yaml)を生成する様子が見えます。
- STEP 03
起動後はcscli hub updateでHubからパーサーやシナリオのメタデータを取得し、cscli collections install crowdsecurity/linuxのようなコマンドで検知ルール集を導入します。
- STEP 04
ログソースをacquis.yaml(acquis.d配下)に設定すると、エージェントがそのファイルを監視してパース・シナリオ評価を始めます。
- STEP 05
cscli alerts listやcscli decisions listを実行すると、検知されたアラートと遮断中のIPの一覧がclialert/table.goが定義する表形式またはJSON/CSV形式で表示されます。
- STEP 06
Remediation Component(bouncer)をcscli bouncers addで登録し、別プロセスからLocal APIを叩いて実際にIPを遮断する動作まで確認するには追加のセットアップが必要です。
実行環境を整えれば、crowsecエージェントがログを監視し続け、cscliコマンドで検知されたアラート・Decision・登録済みBouncer・Machineの状態をテーブルやJSON/CSVで確認できるようになります。Hubからコレクションを追加することで、brute forceやport scan、web scanなど様々な攻撃シナリオへの検知対応を拡張できます。ただし実際の遮断を体感するには、別途Bouncer(ファイアウォール連携コンポーネント)の導入が必要です。
READMEやDockerfileの記述は確認できますが、実際にビルド・起動して動作確認したログや画面出力は本資料には含まれていないため、動作結果は構造から推測したものです。
検知の本体となるパーサーやシナリオはこのリポジトリ本体ではなくHub(hub.crowdsec.net)から別途ダウンロードする設計のため、リポジトリのコードだけでは検知ルールの内容は分かりません。
コミュニティBlocklistの活用やConsole連携など一部機能はCrowdSecのクラウド側サービスに依存しており、ローカルのみでは全機能を確認できません。
サーバーのログ監視や攻撃検知を、ファイアウォール連携を含めて構築したい運用者・セキュリティ担当者に向いています。fail2banのような単機能ツールより、検知と遮断を別マシンに分離できる柔軟性が特徴です。本解析はREADME、go.mod、Dockerfile、CLIソースコードという一次資料に基づいており、誇張や未確認機能の記載は避けているため、インストールせずに構造を把握する目的には十分信頼できる内容です。