とりあえず動いたのでメモしておきます。
kroon.email
えー、ガイドあります。(完
それでは終わってしまうので続けます。
docker-compose.yamlを準備します。
services:
crowdsec:
container_name: crowdsec
environment:
COLLECTIONS: crowdsecurity/linux crowdsecurity/iptables crowdsecurity/nginx
GID: '568'
TZ: Asia/Tokyo
UID: '568'
USE_WAL: 'true'
image: crowdsecurity/crowdsec:latest
ports:
- 30514:514/udp
- '30380:8080'
restart: unless-stopped
volumes:
- /mnt/dataset/crowdsec/crowdsec-db:/var/lib/crowdsec/data
- /mnt/dataset/crowdsec/crowdsec-config:/etc/crowdsec
- /mnt/dataset/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
crowdsec-web-ui:
environment:
- CROWDSEC_URL=http://crowdsec:8080
- CROWDSEC_USER=crowdsec-web-ui
- CROWDSEC_PASSWORD=<生成が推奨されている、後述>
- CROWDSEC_LOOKBACK_PERIOD=5d
image: ghcr.io/theduffman85/crowdsec-web-ui:latest
ports:
- '33000:3000'
restart: unless-stopped
volumes:
- /mnt/dataset/crowdsec/crowdsec-web:/app/data
crowdsec-web-uiは起動時に必要な情報をcrowdsecに登録する必要がある為、
先に起動したら問題が出るかもしれない
acquis.yamlを作成して置いておく
listen_addr: 0.0.0.0
listen_port: 514
protocol: udp
source: udp
labels:
type: iptables
OpenWRTのシステム>システム>ロギングから
TrueNASのIPアドレスとポートを設定する
fwのログはkern.warnって出てるからログ出力レベルは警告でいいはず
CrowdSecを起動してシェルに入る
(必要であれば)CAPIの登録を行う
cscli capi register
一応起動時などに自動で実行されるらしいんだが、
scli capi status
を実行して
Sharing signals is enabled
Pulling community blocklist is enabled
Pulling blocklists from the console is enabled
enabledが出ているなら大丈夫じゃないだろうか。
出ていないなら実行した方がいいかも。
bouncerのAPIキーを取得する
cscli bouncers add openwrt
OpenWRTにluci-app-crowdsec-firewall-bouncerをインストールして
ネットワーク>ファイアウォール>CrowdSec Bouncer
URLとAPIキーを入力して有効化
Filtered interfacesで対象にするインターフェースを設定するのを忘れないように*1
bouncerが登録されて接続できていることを確認
/
─────────────────────────────────────────────────────────────────────────────────────────────────────
Name IP Address Valid Last API pull Type Version Auth Type
─────────────────────────────────────────────────────────────────────────────────────────────────────
openwrt 192.168.1.1 ✔️ 2026-06-06T14:56:05Z crowdsec-firewall-bouncer api-key
─────────────────────────────────────────────────────────────────────────────────────────────────────
各種Metricsが動いていることを確認
/
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Acquisition Metrics │
├───────────────────────┬────────────┬──────────────┬────────────────┬────────────────────────┬───────────────────┤
│ Source │ Lines read │ Lines parsed │ Lines unparsed │ Lines poured to bucket │ Lines whitelisted │
├───────────────────────┼────────────┼──────────────┼────────────────┼────────────────────────┼───────────────────┤
│ syslog:192.168.1.1 │ 221 │ 221 │ - │ 199 │ - │
╰───────────────────────┴────────────┴──────────────┴────────────────┴────────────────────────┴───────────────────╯
(中略)
╭───────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Scenario Metrics │
├─────────────────────────────────────────┬───────────────┬───────────┬──────────────┬────────┬─────────┤
│ Scenario │ Current Count │ Overflows │ Instantiated │ Poured │ Expired │
├─────────────────────────────────────────┼───────────────┼───────────┼──────────────┼────────┼─────────┤
│ crowdsecurity/iptables-scan-multi_ports │ 6 │ - │ 194 │ 199 │ 188 │
╰─────────────────────────────────────────┴───────────────┴───────────┴──────────────┴────────┴─────────╯
この辺の数字が動いていたら多分大丈夫…だと思う…*2
ダッシュボードの導入
事前にcrowdsecでmachineを追加しておくのだが、パスワードの生成が必要なので
TrueNASのシェルから
openssl rand -hex 32
を実行してパスワードを生成しておく。*3
生成したらCrowdSecのシェルに戻りmachineを登録。
cscli machines add crowdsec-web-ui --password <生成したパスワード> -f /dev/null
-f /dev/nullは必要だそうですよ
-f /dev/null フラグは重要です。 CrowdSec コンテナの既存の認証情報ファイルを上書きしないように cscli に指示します。
コンテナのローカル構成を変更するのではなく、マシンをデータベースに登録するだけです。
これでとりあえず全部起動できると思う。