いぶろぐのガジェット日記

いぶろぐのガジェット日記

ガジェットやOSS、その他興味のあるITニュースをぽつらぽつら投稿します。

CrowdSec - オンラインからブロックリストをフェッチできるFail2Banの代替OSS

crowdsec.net

LinuxでDDoSなんかをログからいい感じにブロックするソフトウェアといったらFail2Ban。

IPをアクセス回数と間隔で監視してアウトな子はiptablesでブロックというシンプルかつ強力なソフトです。

そんなF2Bを代替するOSS「CrowdSec」は、F2B的な機能に加えて、CrowdSecコミュニティが提供するブロックリストも利用できるみたいです。


インストール方法

・テスト環境:Ubuntu 20.04 LTS

下記のコマンド群を実行すればOK。

sudo apt install bash gettext whiptail curl wget
curl -s https://api.github.com/repos/crowdsecurity/crowdsec/releases/latest | grep browser_download_url| cut -d '"' -f 4  | wget -i -
tar xvzf crowdsec-release.tgz
cd crowdsec-v*
sudo ./wizard.sh -i

なにやらサービスを選択する画面が出てくる。デフォのLinuxログやらsshdやらnginxやら、インストールされているサービスを勝手に認識してここにリストアップしてくれるので、ログを監視したいサービスを選択する。

f:id:ibulog_iblog:20201129235717p:plain

apacheとかmysqlとかvsftpdとかも対応している。なかなか優秀。

f:id:ibulog_iblog:20201129235721p:plain

インストールを進めていると「CrowdSec単体ではIPをブロックできひんで、ブロッカーがいるで」という忠告が。

f:id:ibulog_iblog:20201129235726p:plain

ブロッカーは以下のページで公開。通常のNetfilterのほか、Cloudflareやnginx、WordPressと連携してブロックできるみたい。

hub.crowdsec.net

「cs-netfilter-blocker」でNetfilterを使ったブロックができる。インストールは以下コマンド。

wget https://github.com/crowdsecurity/cs-netfilter-blocker/releases/download/v0.1.0/cs-netfilter-blocker.tgz
tar xzvf cs-netfilter-blocker.tgz
cd cs-netfilter-blocker-v0.1.0
sudo ./install.sh
sudo systemctl status netfilter-blocker

これでCrowdSec経由でNetfilterを利用できるようになったみたい。


使い方

cscliというコマンドが用意されており、cscli listで有効化されている設定を確認可能。

f:id:ibulog_iblog:20201129230052p:plain

sudo ipset listすると、勝手にブロック対象のIPがリストに追加されているのがわかる。これはCrowdSec Hubというコミュニティからオンラインで取ってきたものみたい。逆にこちらのブロック情報もコミュニティに送信される。

f:id:ibulog_iblog:20201129230059p:plain

iptablesのINPUTチェインにも勝手にルールが追加されている。うーん楽ちん。

f:id:ibulog_iblog:20201129230105p:plain

基本的な使い方は以下。

cscli ban add/del IPアドレス:IPをブロック/ブロック解除

cscli ban flush:ブロック設定をDBに書き込み

cscli install collection:監視対象のサービスを新規設定

cscli update:CrowdSec Hub(これがCrowdSecのコミュニティ)から最新のブロック情報を取ってくる

なんとCrowdSecは6060ポートからPrometheusのメトリクスを出力してくれる。つよい。cscli metricsでメトリクス情報をまとめて表示してくれる。

f:id:ibulog_iblog:20201130000223p:plain

Dockerをインストールした状態でcscli dashboard setupすると、CrowdSecのダッシュボードを設定できる。

f:id:ibulog_iblog:20201130003142p:plain

テストで使っただけなのでブロック情報がたまらなかったため、公式から画像を拝借。こんな感じでmetabaseを使ってブロック情報を可視化してくれる。

f:id:ibulog_iblog:20201130003324p:plain

ブロックしているIP一覧なんかもダッシュボードで確認できる。こいつぁすげえや。

f:id:ibulog_iblog:20201130003510p:plain


感想

個人で使うなら全然F2Bから乗り換えですね。仕事で使う場合はブロック情報をコミュニティに送信するというのがネックか。

まあこういうのが必要なオンプレ環境を持っている人がどれくらいいるかという話なんですが…

P.S.

エントリ書いてる最中にグロージャンが大クラッシュしてビビりました。