小内存 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 を通過しない他の公開ポートには適用されません。 ...