Repolode
fabriziosalmi

fabriziosalmi/caddy-waf

Caddy向けのWAFミドルウェア。正規表現ルール、IP/DNS/ASN/GeoIPフィルタリング、レート制限、Tor出口ノードのブロックに対応。

代替できる製品:Cloudflare WAF

スター
876
フォーク
37
未解決の Issue
1
最終コミット
3 日前

これは何?

caddy-wafはGoで書かれたCaddy用のHTTPハンドラーモジュールで、リクエストとレスポンスを正規表現ルールセットに照らして検査します。各ルールにはスコアが設定され、合計スコアが設定可能な異常検知しきい値に達するとリクエストをブロックします。検査はリクエストヘッダー、リクエストボディ、レスポンスヘッダー、レスポンスボディの4段階で行われます。

ルール照合に加え、IPおよびCIDRのブラックリスト、DNSブラックリスト、MaxMind GeoLite2による国・ASN単位のブロック、定期的に更新されるTor出口ノードリストに対応します。また、パス条件を任意で指定できるIPごとのスライディングウィンドウ方式のレート制限、カスタムのブロックレスポンス、JSONメトリクスエンドポイントも提供します。ルールファイルとブラックリストファイルは変更を監視し、再起動なしで再読み込みされます。

このモジュールはCaddyfileまたはJSONで設定でき、xcaddyでビルドするか、caddy add-packageでインストールするか、Dockerイメージから実行できます。ライセンスはAGPL-3.0です。

主な機能

  • 01GoのRE2パッケージを使った正規表現ルールエンジン。ルールごとに異常スコアを設定可能。
  • 02リクエストとレスポンスのヘッダーおよびボディを4段階で検査。
  • 03IPおよびCIDRのブラックリストとDNSブラックリスト。
  • 04MaxMind GeoLite2データベースを使った国・ASN単位のブロック。
  • 05パスパターンを任意で指定できる、IPごとのスライディングウィンドウ方式のレート制限。
  • 06Tor出口ノードのブロックと、ルールファイル・ブラックリストファイルのホットリロード。

ユースケース

  • ルールセットを使い、Caddyで配信するサイトを一般的なWeb攻撃から保護する。
  • 特定の国、ASN、IPレンジ、またはTor出口ノードからのトラフィックをブロックする。
  • CaddyのリバースプロキシでAPIエンドポイントにレート制限を適用する。
  • WAFのメトリクスをPrometheusやGrafanaのダッシュボードに出力する。

クイックスタート

  1. 1

    xcaddyでモジュールをインストールする

    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
  2. 2

    caddy-wafモジュールを含めてCaddyをビルドする

    xcaddy build --with github.com/fabriziosalmi/caddy-waf
  3. 3

    WAFモジュールが利用可能か確認する

    ./caddy list-modules | grep waf

使う前に知っておきたいこと

  • コピーレフトライセンスであるAGPL-3.0の下でライセンスされており、すべてのデプロイ環境に適しているとは限りません。
  • Go 1.26.0以降およびCaddy v2.11.x以降が必要です。
  • オプションのGeoIP機能には、MaxMind GeoLite2のデータベースファイルが必要です。

トピック

よくある質問

caddy-waf とは?
Caddy向けのWAFミドルウェア。正規表現ルール、IP/DNS/ASN/GeoIPフィルタリング、レート制限、Tor出口ノードのブロックに対応。 caddy-wafはGoで書かれたCaddy用のHTTPハンドラーモジュールで、リクエストとレスポンスを正規表現ルールセットに照らして検査します。各ルールにはスコアが設定され、合計スコアが設定可能な異常検知しきい値に達するとリクエストをブロックします。検査はリクエストヘッダー、リクエストボディ、レスポンスヘッダー、レスポンスボディの4段階で行われます。
caddy-waf は無料で使えますか?ライセンスは?
caddy-waf は AGPL-3.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
caddy-waf は今もメンテナンスされていますか?
活発にメンテナンス中。caddy-waf の最終コミットは 2026年10月17日 です。
caddy-waf は何に使えますか?
ルールセットを使い、Caddyで配信するサイトを一般的なWeb攻撃から保護する。 特定の国、ASN、IPレンジ、またはTor出口ノードからのトラフィックをブロックする。 CaddyのリバースプロキシでAPIエンドポイントにレート制限を適用する。 WAFのメトリクスをPrometheusやGrafanaのダッシュボードに出力する。
caddy-waf のインストール方法は?
xcaddyでモジュールをインストールする: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest caddy-wafモジュールを含めてCaddyをビルドする: xcaddy build --with github.com/fabriziosalmi/caddy-waf WAFモジュールが利用可能か確認する: ./caddy list-modules | grep waf
caddy-waf はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/fabriziosalmi/caddy-waf

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト