小内存 Debian 服务器防护改造:从 CrowdSec 迁移到 Caddy GeoIP 与 Fail2ban

小規模なメモリの Debian サーバーでは、以前 CrowdSec を使って SSH と Web のログを解析し、Firewall Bouncer を通じて封禁の決定を nftables に同期していました。 この構成は攻撃nese behaviorに応じて IP を動的に封禁できますが、メモリが数百 MiB しかなく、複数の個人용サービスを実行しているサーバーでは、リソースのトレードオフを再検討する必要があります。最終的には次の構成を採用しました。 Web:Caddy の GeoIP と手動 IP ホワイトリストを使用し、サイトごとに CDN からのオリジン接続を許可するかどうかを選択します。 SSH:Fail2ban が systemd journal を読み取り、異常な送信元を nftables で封禁します。 本稿では、改造の全体手順と、導入時に発生したログソースおよび起動順序の問題を記録します。すべてのドメイン、アドレス、ホスト識別子には例示用の値に置き換えています。コマンドは root ユーザーで実行します。 一、先に保護機能の変化を整理する 項目 旧構成 新構成 Web アクセス制御 CrowdSec がログを解析し、封禁の決定を生成 Caddy が送信元の地域または IP に応じて許可 SSH の異常ログイン CrowdSec の SSH シナリオ Fail2ban の SSH jail Web の挙動検知 導入済みの Collection と Scenario 次第 本稿では維持していません コミュニティの脅威インテリジェンス CrowdSec のコミュニティリストを使用可能 本稿では接続していません Web リクエストの拒否段階 Firewall Bouncer のファイアウォールルール Caddy の HTTP リクエスト処理段階 地域ホワイトリストは、挙動検知と同等の代替にはなりません。許可された地域からの悪意あるリクエストもアプリケーションに到達する可能性があります。また、Caddy の GeoIP ルールは、Caddy を通過しない他の公開ポートには適用されません。 ...

2026年11月10日 · 7 分

CrowdSec を使って Debian サーバーで悪意ある IP を自動ブロックする

CrowdSec を使って Debian サーバーで悪意ある IP を自動ブロックする 公開サーバーは毎日、さまざまな自動スキャンに遭遇します。 サービスを意図的に公開していなくても、SSH ポートには root、admin、test などのユーザー名に対するログイン試行が日常的に届きます。Web サービスでは .env、wp-admin、phpinfo.php などのパスに対する探索が行われます。 これらのリクエストの多くは自動化されたスキャナによるものです。実際の侵入に至るとは限りませんが、意味のないログを大量に発生させ、サービスの露出面(attack surface)を拡大させます。 静的なファイアウォールルールだけでは、攻撃の挙動に応じてブロック対象リストを動的に調整することが困難です。 そこで私は CrowdSec を試してみることにしました。サーバーログから悪意ある挙動を識別し、nftables と連携して攻撃元の IP を自動的にブロックします。 本稿では、Debian 12 への CrowdSec の導入手順と、それが「ある IP をブロックすべきかどうか」をどのように判断するかを記録します。 1. CrowdSec とは? CrowdSec はオープンソースの侵入検知・セキュリティレスポンスシステムです。 SSH や Web サーバーなどが生成するログを分析し、総当たり攻撃(ブルートフォース)、脆弱性スキャン、悪意あるクローラーなどの挙動を検知します。 従来の静的な IP ブラックリストとは異なり、CrowdSec は主に挙動の特徴に基づいてブロックすべきかどうかを判断し、コミュニティの脅威インテリジェンスも利用できます。 CrowdSec の処理は 2 つに分かれます。 Security Engine:ログを読み込み、攻撃を識別し、ブロック判定を生成します。 Remediation Component(Bouncer):ブロック判定を実行します。たとえばファイアウォールルールを変更します。 この 2 つは互いに独立しています。 つまり、CrowdSec の Security Engine だけを導入しても、ネットワーク接続が自動的にブロックされるわけではありません。 1.1 処理の流れ SSH / Caddy / Nginx | v Application Logs | v CrowdSec Parser | v Detection Scenarios | v Security Alerts | v Decision Profiles | v Local API | v Firewall Bouncer | v nftables | v Block IP ログ分析とファイアウォールの実行を切り離しているため、単一サーバーでも、中央 API を通じて複数サーバーにブロック判定を配信する場合でも同じように機能します。 ...

2026年10月19日 · 6 分