今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

crowdsecurity/crowdsec

ログ分析とコミュニティ脅威情報を組み合わせた、オープンソースの統合セキュリティエンジン(IDS/IPS/WAF)です。

サーバーに crowdsec を立ち上げてログを読み込ませると、ブルートフォースやポートスキャンの兆候をその場で検知し、自動でブロックへとつなげてくれます。cscli で状況を確認しながら、コミュニティが共有するブロックリストに照らして既知の悪性IPを先回りで遮断できる感覚は、1台のサーバーを守るだけでなく、みんなで作る防御網に参加している実感を与えてくれます。Go言語による実装、Makefileや複数バイナリのビルド対象、go-testsやbatsによるCI/CDパイプラインまで備わっているため、今日インストールしてログを流し込むだけで、その効果をすぐ自分の目で確かめられます。

01 / 概要
何をするものか一文で言うと
ひとことでログ分析とコミュニティ脅威情報を組み合わせた、オープンソースの統合セキュリティエンジン(IDS/IPS/WAF)です。

CrowdSecは、ログやHTTPリクエストを解析して不正な挙動を検知し、ファイアウォールやリバースプロキシなどで遮断するオープンソースのIDS/IPS兼WAFです。検知した攻撃元IPの情報はコミュニティで共有され、クラウドソース型のブロックリストとして他の利用者の防御にも活用されます。Go言語で実装され、エージェント本体crowsecとCLIツールcscliの2バイナリ構成になっています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

リポジトリ構成を見ると、中心は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で説明されています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    READMEのリンクからLinux、Docker、Windowsなど環境別のインストール手順ページに進む必要があり、リポジトリ単体にワンコマンドのインストーラは含まれていません。

  2. STEP 02

    Dockerで試す場合、build/docker/Dockerfileのビルド過程でwizard.sh --docker-modeが初期設定ファイル(config.yaml、acquis.yaml)を生成する様子が見えます。

  3. STEP 03

    起動後はcscli hub updateでHubからパーサーやシナリオのメタデータを取得し、cscli collections install crowdsecurity/linuxのようなコマンドで検知ルール集を導入します。

  4. STEP 04

    ログソースをacquis.yaml(acquis.d配下)に設定すると、エージェントがそのファイルを監視してパース・シナリオ評価を始めます。

  5. STEP 05

    cscli alerts listやcscli decisions listを実行すると、検知されたアラートと遮断中のIPの一覧がclialert/table.goが定義する表形式またはJSON/CSV形式で表示されます。

  6. STEP 06

    Remediation Component(bouncer)をcscli bouncers addで登録し、別プロセスからLocal APIを叩いて実際にIPを遮断する動作まで確認するには追加のセットアップが必要です。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実行環境を整えれば、crowsecエージェントがログを監視し続け、cscliコマンドで検知されたアラート・Decision・登録済みBouncer・Machineの状態をテーブルやJSON/CSVで確認できるようになります。Hubからコレクションを追加することで、brute forceやport scan、web scanなど様々な攻撃シナリオへの検知対応を拡張できます。ただし実際の遮断を体感するには、別途Bouncer(ファイアウォール連携コンポーネント)の導入が必要です。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

READMEやDockerfileの記述は確認できますが、実際にビルド・起動して動作確認したログや画面出力は本資料には含まれていないため、動作結果は構造から推測したものです。

02

検知の本体となるパーサーやシナリオはこのリポジトリ本体ではなくHub(hub.crowdsec.net)から別途ダウンロードする設計のため、リポジトリのコードだけでは検知ルールの内容は分かりません。

03

コミュニティBlocklistの活用やConsole連携など一部機能はCrowdSecのクラウド側サービスに依存しており、ローカルのみでは全機能を確認できません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

サーバーのログ監視や攻撃検知を、ファイアウォール連携を含めて構築したい運用者・セキュリティ担当者に向いています。fail2banのような単機能ツールより、検知と遮断を別マシンに分離できる柔軟性が特徴です。本解析はREADME、go.mod、Dockerfile、CLIソースコードという一次資料に基づいており、誇張や未確認機能の記載は避けているため、インストールせずに構造を把握する目的には十分信頼できる内容です。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する