どちらのツールもログを読み、アドレスを遮断します。一見すると CrowdSec は新しいコードの Fail2ban に見えます。両者の違いはそれよりずっと根本的であり、しかもコードの新しさではなく、遮断するという判断がどこから来るのかにあります。
どう作られているか
Fail2ban は単一のプロセスで、ログを読み、正規表現の一致を数え、ファイアウォールのコマンドを呼びます。すべての判断はあなたのマシンで、あなた自身のカウンタから下されます。どこへも何も送られず、依存も無く、設定はテキストファイルです。
CrowdSec は二つに分かれており、それこそ導入前に理解すべき主要な点です。エージェント自体は検知するだけです。ログを解析し、シナリオを適用し、判断を自分のデータベースへ書きます。判断を実行するのは別のプログラム、bouncer です。そして bouncer を入れなければ CrowdSec は動き、alert を表示し、判断の一覧を保ち——そして何も遮断しません。
これが初対面で最もよくある落胆です。ツールは入り、攻撃は見えていて、トラフィックは以前とまったく同じように流れています。
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list
この最後のコマンドは、登録済みの項目を少なくとも一つ表示するはずです。空の一覧は遮断が無いことを意味します。
二つ目の違い:共有される評判
Fail2ban はあなたのところで何が起きたかしか知りません。昨日は他人のサーバーを百台破って過ごしたアドレスも、あなたの扉を叩くまでは潔白であり——その最初の五回の試行は無料です。
CrowdSec は発火した内容についての信号を共有ネットワークへ送り、他人のサーバーで観測されたアドレスの一覧を受け取ります。実務的な効果は、推測のかなりの部分が最初の試行より前に断たれることです。そしてそれは分散型の攻撃に対してとりわけ重要です——一回ずつ試す何千ものアドレスに対して、ローカルのカウンタは定義上無力だからです。
そして前もって知っておくべきこと:やり取りは双方向です。あなたのサーバーからは、違反したアドレスと発火したシナリオの種類が出て行きます。完全にローカルで動かすことも可能です——クラウドのコンソールに登録しなければ——ただしそのときは共有一覧もあなたには使えず、主要な利点が消えます。これは設定の細部ではなく、意識して行う選択です。
日常のコマンド
sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25
metrics は、そもそもログが読まれているのかという問いに答えます。解析された行数がゼロなら、あなたの Web サーバー用のコレクションが入っていないか、ログのパスが違います。「入れたのに動かない」の二番目に多い形です。
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
資源
CrowdSec は Go で書かれ、状態をデータベースに保ちます。メモリの使用は百メガバイト程度、それに bouncer が加わります。メモリ一ギガバイトのサーバーではそれは体感されますし、二以上なら気になりません。Fail2ban はより軽く、そしてより少ないことをします。
両方使うべきか
両者は衝突しません。片方は自分のルールをファイアウォールへ書き、もう片方も自分のを書き、同じアドレスを二度遮断しても誰も困りません。妥当な分担はこうなります。
CrowdSec は大量のトラフィックを引き受けます。SSH の推測、Web サーバーの走査、共有一覧にある既知の悪いアドレス。そして Fail2ban は、独自の形式の独自ログがあり、シナリオを書くより正規表現を書くほうが簡単な場所に残ります——自作のアプリケーション、珍しいサービス、特定のログインフォームなど。
一つだけ選ぶなら、基準はこうです。絶えず探られているサイトのあるサーバーでは、共有一覧のおかげで CrowdSec のほうが多くを与えます。しかし、あなただけが鍵で SSH から届くサーバーでは両者の差は小さいものです——そこでの仕事の大半はパスワードを切ることですでに終わっています。
共通の限界
どちらもアプリケーションの欠陥からは守りません。両者はリクエストの頻度とアドレスの評判で働くのであり、きれいなアドレスから最初の試行でプラグインの穴を突くリクエストは、両方の脇を通り抜けます。それは他のツールの仕事です——リクエストの層での WAF と、時機を逃さない更新。アドレスの遮断は背景を取り除くのであって、原因を取り除くのではありません。
そして両者の実務的な価値は、結果を誰かが見るかどうかに依ります。判断の数の増加、初めて発火したシナリオ、試行の来る国の変化——それこそ、このツールを入れた目的である情報です。それが一つのページでどう見えるかは下のデモで。