Loading... > Caddy是一个功能强大的 Web 中间件,但是Caddy 并不自带安全防护功能,但是可以通过第三方模块来增强网站的安全性,例如 Coraza WAF ,这篇文章将使用 Coraza WAF 插件以及 OWASP CRS 规则集来增强网站的安全性。 ## 安装 Coraza WAF 插件 > 这里需要确保 Caddy 安装了 **Coraza WAF** 插件,以便能够使用 CRS 规则集。 Caddy 支持通过官方插件库安装插件,也可以通过 `xcaddy` 构建工具来安装插件,`xcaddy` 是一个用来编译和构建 Caddy 自定义版本的工具,支持在 Caddy 中安装额外插件,如果有定制化需求可以选择使用 `xcaddy` 。 ```bash caddy add-package github.com/corazawaf/coraza-caddy # 通过官方插件库 xcaddy build --with github.com/corazawaf/coraza-caddy # 通过 xcaddy 安装 Coraza WAF 插件并生成一个自定义的 Caddy 二进制文件 ``` [card title="注意……" color="warning"] 如果采用 `xcaddy` 需要提前安装好 Go 环境。[/card] ## 下载 OWASP CRS 规则集 > 这里我选择放到 `/etc/coreruleset` 目录下 ```bash git clone https://github.com/coreruleset/coreruleset.git /etc/coreruleset ``` 克隆完成之后将里面的`crs-setup.conf.example` 重命名为 `coraza.conf-recommended` ## 配置 Caddyfile > 下面是一个参考例子 ```bash wanghaoyu.com.cn { tls admin@wanghaoyu.com.cn route { coraza_waf { directives ` # 加载 Coraza 推荐的默认配置 Include /etc/coreruleset/coraza.conf-recommended # 加载 OWASP CRS 规则 Include /etc/coreruleset/rules/*.conf # 启用规则引擎 SecRuleEngine On ` } reverse_proxy localhost:8080 } } ``` 基本配置说明: - **`coraza_waf`**:将 WAF 集成到 Caddy 的请求处理流程 - **`Include`**:用于加载 CRS 默认配置和防护规则 - **`SecRuleEngine On`**:启用规则引擎,确保请求会经过防火墙的检查和过滤。 - **`reverse_proxy`**:反代后端节点,将 `wanghaoyu.com.cn` 的流量请求转发到 localhost:8080 当然 这只是个例子 ## 安全头 为了增强一下安全性,可以配置一下 HTTP 响应头,防止常见攻击,这个部分是可选的。 ```bash header { # 启用 HSTS,确保所有的请求都通过https进行 Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # 设置 CSP 防止外部脚本注入 Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none';" # 防止点击劫持 X-Frame-Options "DENY" # 防止xss跨站脚本攻击 X-XSS-Protection "1; mode=block" # 防止 MIME 类型嗅探 X-Content-Type-Options "nosniff" # 让浏览器更安全地处理 cookies Set-Cookie "SameSite=Strict; Secure" } ``` ## 验证配置 Caddy 提供了一个工具用来检查配置文件是否正确的,类似于 `nginx -t` ```bash caddy validate --config /etc/caddy/Caddyfile ``` 如果配置没问题的话会返回 `Valid configuration` 证明这是个有效的配置。 参考: - https://caddyserver.com/docs/ - https://github.com/coreruleset/coreruleset/ - https://github.com/corazawaf/coraza - https://github.com/caddyserver/xcaddy - https://github.com/caddyserver/caddy Last modification:April 25, 2025 © Allow specification reprint Support Appreciate the author Like 如果觉得我的文章对你有用,请随意赞赏