CaddyでWAFしてみる
2026-02-23 19:15:24 caddyWindows に Caddy+Coraza+CoreRuleSet で WAF を入れます。
図
準備するもの
- Go コンパイラー
- xcaddy
- CoreRuleSet (Windows の場合)
Caddy+Coraza+CoreRuleSetまでの手順
上の「準備するもの」のインストールについても記載しています。
Go コンパイラー
インストール後に go コマンドにパスを通しておきます。
xcaddy
| |
インストール後に xcaddy コマンドにパスを通しておきます。
Coraza WAF Caddy Module (を組み込んだ caddy のビルド)
xcaddy コマンドを実行して coraza-caddy を組み込んだ caddy を作成します。
| |
他に組み込みたいモジュールがあれば、上記のコマンドに --with を追記します。
Caddy のモジュールとしては coraza-caddy があれば WAF は実現できます。 ですがここでは replace-response も組み込んでいます。 これは、Webアプリの書き方によって露出することがあるオリジナルの URL を置き換えるためです。
ちょっとだけ解説
xcaddy コマンドは、指定されたオプションを使って、caddy のソースコードをフェッチして、それをビルドするツール。
--with オプションで指定されたパッケージはモジュールと呼ばれるもので、パッケージの初期化関数 (init() のこと) で自身の機能や設定ファイルの読み込み処理を caddy に登録している。
coraza-caddy のソースコードを見るとイメージしやすいかもしれません。
https://github.com/corazawaf/coraza-caddy/blob/main/caddy/main.go ☐↗
| |
https://github.com/corazawaf/coraza-caddy/blob/main/coraza.go ☐↗
| |
CoreRuleSet
https://github.com/coreruleset/coreruleset/releases ☐↗
最新版の minimal 付きのものをダウンロードして、上でビルドした caddy のある場所に展開します。
| |
あとで少しファイルのリネームを行います。
動作確認と設定
IIS のバインドを変更する
ふつうは HTTP は 80、HTTP は 443 ですが、そちらは caddy がバインドするので、IIS ではそれぞれ 1080, 1443 にバインドしておきます。
サイトの設定から変更しておきます。
Caddyfile
以下の内容の Caddyfile を caddy.exe と同じ場所に置きます。
| |
(WAF の部分の記述内容は https://github.com/corazawaf/coraza-caddy/blob/main/example/Caddyfile ☐↗ から持ってきています)
Coraza WAF Caddy Module (coraza-caddy) には CRS の定義が含まれている どうやら Windows ではロードした内容が含まれるパスをたどることができないようで、結果としてファイル読み込みができない旨のエラーが出ます。
そういうわけで、上の Caddyfile ではローカルの CRS (前の手順でダウンロードしていたもの) を読み込むようにしています。
| |
- 📄 CaddyでWAFしてみる2026-02-23 19:15:24Windows に Caddy+Coraza+CoreRuleSet で WAF を入れます。
- 📄 yaya2026-02-23 19:15:24暇つぶし弾よけゲーム
- 📄 git-cx2026-02-23 19:15:24gitのコミットメッセージを、コマンドラインで選択しながら構築していくツール
- 📄 Hugo テーマ 6. Render Hook2026-02-23 19:15:24#5 の題材を、今度は Render Hook という機能を使って実装します。
- 📄 Goでテーブル駆動のベンチマークをとる方法2026-02-23 19:15:24公式に記載ありますが、まとめてみます。
- 📄 Keychron K15 Pro2026-02-23 19:15:24買ったので雑に感想でも書いてみます。
- 📄 Goのパッケージ2026-02-23 19:15:24Go向けパッケージの一覧
- 📄 slog-handler-guide2026-02-23 19:15:24slog-handler-guide の解説
- 📄 Vim LSP メモ2026-02-23 19:15:24忘れそうな内容をメモ
- 📄 GOEXPERIMENT + Build Constraints2026-02-23 19:15:24例えば GOEXPERIMENT=rangefunc の場合にビルドしたい/したくない場合の書き方