本文以 NGFW One WAF 免费版为例,带你在一台 Linux 服务器上用 Docker 跑起 WAF,并把第一个网站接入防护。整个过程约 10 分钟。
开始前请确认服务器满足系统要求:Linux x86_64 或 arm64、Docker 20.10 及以上、至少 2 核 CPU 和 2GB 内存。
第 1 步:启动容器
在服务器上执行以下命令。镜像会被自动拉取,配置和日志持久化保存在宿主机的 /opt/ngfw 目录。
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
三个端口的用途:
80/443:对外提供网站服务的 HTTP / HTTPS 流量入口,经 WAF 检测后转发到你的源站。9443:管理后台(HTTPS)。
确认容器已运行:
docker ps --filter name=ngfw-waf
docker logs -f ngfw-waf
第 2 步:初始化管理员
- 浏览器访问
https://<服务器IP>:9443。如果浏览器提示证书不受信任,这是因为后台尚未配置正式证书,确认地址无误后继续访问即可,后续可在系统设置中替换为正式证书。 - 首次访问会进入初始化页面,请在页面上设置管理员密码。系统没有预置默认密码,请使用足够强度的密码并妥善保管。
- 完成后用新密码登录后台。
管理端口 9443 不应向公网全量开放。请在主机防火墙或云安全组中,仅允许运维人员的 IP 访问 9443。
第 3 步:接入第一个站点
WAF 免费版以反向代理方式工作:用户访问 WAF,WAF 检测请求后再转发给源站。
- 在后台进入「站点防护 → 站点管理」,点击「添加站点」。
- 填写防护域名(如
www.example.com)、监听端口(80 和/或 443)和源站地址(如http://10.0.0.20:8080)。 - 如需 HTTPS,上传该域名的证书和私钥。
- 保持默认的基础防护规则开启,保存。
第 4 步:切换 DNS 并验证
- 把域名的 DNS 解析指向 WAF 服务器的公网 IP。生效前可以先在本机 hosts 文件中临时指向进行测试。
- 正常访问网站,确认页面可以打开。
- 发起一个模拟攻击请求,确认被拦截:
curl -i "http://www.example.com/?id=1%20union%20select%201,2,3"
若返回拦截页面(通常为 403),并且在「日志 → 攻击日志」中能看到对应记录,说明防护已生效。
下一步
- 调整规则与白名单:WAF 配置
- 升级、备份与卸载:Docker 安装与运维
- 需要蜜罐诱捕、自动封停、AI 助手、MCP 等能力:查看版本对比