CrowdSec - オンラインからブロックリストをフェッチできるFail2Banの代替OSS
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やら、インストールされているサービスを勝手に認識してここにリストアップしてくれるので、ログを監視したいサービスを選択する。
apacheとかmysqlとかvsftpdとかも対応している。なかなか優秀。
インストールを進めていると「CrowdSec単体ではIPをブロックできひんで、ブロッカーがいるで」という忠告が。
ブロッカーは以下のページで公開。通常のNetfilterのほか、Cloudflareやnginx、WordPressと連携してブロックできるみたい。
「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
で有効化されている設定を確認可能。
sudo ipset list
すると、勝手にブロック対象のIPがリストに追加されているのがわかる。これはCrowdSec Hubというコミュニティからオンラインで取ってきたものみたい。逆にこちらのブロック情報もコミュニティに送信される。
iptablesのINPUTチェインにも勝手にルールが追加されている。うーん楽ちん。
基本的な使い方は以下。
・cscli ban add/del IPアドレス
:IPをブロック/ブロック解除
・cscli ban flush
:ブロック設定をDBに書き込み
・cscli install collection
:監視対象のサービスを新規設定
・cscli update
:CrowdSec Hub(これがCrowdSecのコミュニティ)から最新のブロック情報を取ってくる
なんとCrowdSecは6060ポートからPrometheusのメトリクスを出力してくれる。つよい。cscli metrics
でメトリクス情報をまとめて表示してくれる。
Dockerをインストールした状態でcscli dashboard setup
すると、CrowdSecのダッシュボードを設定できる。
テストで使っただけなのでブロック情報がたまらなかったため、公式から画像を拝借。こんな感じでmetabaseを使ってブロック情報を可視化してくれる。
ブロックしているIP一覧なんかもダッシュボードで確認できる。こいつぁすげえや。
感想
個人で使うなら全然F2Bから乗り換えですね。仕事で使う場合はブロック情報をコミュニティに送信するというのがネックか。
まあこういうのが必要なオンプレ環境を持っている人がどれくらいいるかという話なんですが…
P.S.
エントリ書いてる最中にグロージャンが大クラッシュしてビビりました。