10 分钟用 Docker 部署免费 WAF,保护你的网站

面向个人站长与小微企业的上手教程:用一条 Docker 命令启动 NGFW One WAF 免费版,完成站点接入、证书配置、防护验证与日常维护。

2026-10-086 分钟阅读NGFW One 安全团队
WAF教程Docker

如果你的网站直接暴露在公网上,那么 SQL 注入、XSS、目录扫描、恶意爬虫几乎每天都会光顾。Web 应用防火墙(WAF)的作用,是在请求到达网站程序之前先过一遍检查,把明显的攻击挡在外面。本文演示如何用 Docker 部署 NGFW One WAF 免费版,整个过程通常在 10 分钟内可以完成。

部署前准备

  • 一台可以访问公网的 Linux 服务器,已安装 Docker(最低配置以下载页标注为准)。
  • 服务器的 80、443、9443 端口未被占用,并在安全组 / 防火墙中放行。其中 9443 是管理后台端口,建议只对你自己的办公 IP 放行。
  • 你的网站(下文称「源站」)的地址,例如 10.0.0.5:8080 或另一台服务器的内网 IP。
  • 网站的 HTTPS 证书和私钥文件(如已启用 HTTPS)。

第一步:启动容器

在服务器上执行:

docker run -d --name ngfw-waf --restart unless-stopped \
  -p 80:80 -p 443:443 -p 9443:9443 \
  -v /opt/ngfw:/data \
  ngfwone/waf-free:latest

各参数的含义:

参数作用
--restart unless-stopped服务器重启或容器异常退出后自动拉起
-p 80:80 -p 443:443对外提供网站访问,所有请求先经过 WAF
-p 9443:9443管理后台
-v /opt/ngfw:/data配置、证书和日志持久化到宿主机,升级或重建容器不丢数据

执行 docker ps,看到 ngfw-waf 状态为 Up 即表示启动成功。

第二步:登录管理后台

浏览器访问 https://<服务器IP>:9443。首次访问时后台使用自签名证书,浏览器会提示不安全,确认后继续即可。首次登录的初始化步骤请参照快速开始文档,登录后第一件事是修改管理员密码。

第三步:添加站点

在后台新增一个防护站点,填写三项核心信息:

  1. 域名:例如 www.example.com。
  2. 源站地址:WAF 把检查通过的请求转发到哪里。
  3. 证书:上传该域名的证书与私钥,由 WAF 负责 HTTPS 终结。

保存后,把域名的 DNS 解析改为 WAF 服务器的公网 IP。解析生效后,访客的流量就会先到 WAF,再到源站。

如果 WAF 和网站部署在同一台服务器上,需要先把网站程序的监听端口从 80/443 改到其他端口(如 8080),否则会端口冲突。

第四步:验证防护是否生效

用一个带有典型注入特征的请求做测试:

curl -i "https://www.example.com/?id=1%27%20or%20%271%27=%271"

正常情况下,这个请求会被拦截并返回拦截页面,同时在后台的攻击日志中能看到对应记录,包括来源 IP、命中规则和请求内容。再用浏览器正常访问网站,确认页面功能不受影响。

上线后的几个建议

  • 防止绕过:在源站的防火墙或安全组里,只允许 WAF 服务器的 IP 访问网站端口。否则攻击者一旦知道源站真实 IP,就能绕开 WAF 直接访问。
  • 观察误拦:上线第一周每天看一次拦截日志。如果有正常业务请求被拦(例如后台编辑器提交的富文本),针对具体路径加白,而不是整体关闭规则。
  • 备份:定期备份 /opt/ngfw 目录。
  • 升级:拉取新镜像后重建容器,配置保存在挂载目录中不受影响:
docker pull ngfwone/waf-free:latest
docker stop ngfw-waf && docker rm ngfw-waf
docker run -d --name ngfw-waf --restart unless-stopped \
  -p 80:80 -p 443:443 -p 9443:9443 \
  -v /opt/ngfw:/data \
  ngfwone/waf-free:latest

什么时候需要更多

免费版解决的是「网站被打」这一个问题。当你开始需要管理办公网出口、给员工做上网认证、在内网发现异常设备,或者希望把告警、审计和封停串成闭环时,可以了解 NGFW One 企业版。免费版中积累的站点配置思路可以直接沿用。

准备好让安全更简单了吗?

免费下载 WAF 免费版立即体验,或预约企业版、数据中心版演示。