HTTPトラフィックを検査し、SQLインジェクションやXSS、ボット、フラッドを防ぐセルフホスト型WAF/リバースプロキシ。
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
xcaddyでモジュールをインストールする
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest - 2
caddy-wafモジュールを含めてCaddyをビルドする
xcaddy build --with github.com/fabriziosalmi/caddy-waf - 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 の数値は毎日更新されます。
関連プロジェクト
Traefik、Nginx、Caddyのミドルウェア、または単体のSSOログインサーバーとして動作する、小規模な認証・認可サーバー。
認証、MFA、SSO、ボット対策を備えた、セキュアなリバースプロキシ兼アプリ管理・ゲートウェイのセルフホスト型ホームサーバープラットフォーム。
Windows、macOS、Linux向けのデスクトップクライアント。Dropbox、Google Drive、OneDriveなどの同期フォルダー内のファイルをクライアント側で透過的に暗号化します。
Googleがオープンソースプロジェクト向けに提供する継続的ファジングサービス。libFuzzer、AFL++、Honggfuzzとサニタイザーでセキュリティ上のバグを検出します。
AI生成コードをコンテナなしで実行できる、Rust製の安全なPythonサンドボックス。