WAF的基本原理

首先我们了解一下waf是什么
WAF = Web Application Firewall,Web 应用防火墙。
普通防火墙(比如 iptables)是网络层/传输层的,只管 IP 和端口,不管数据包里装的是什么内容。而waf是应用层的,它会完整的解析一个数据包,判断里卖弄是否存在SQL注入,是否有XSS攻击等等。

WAF的工作位置

WAF 工作在 Web 服务器和用户之间,所有 HTTP/HTTPS 请求都要先经过 WAF 检查,没问题了才转发给后端。

WAF部署

WAF有多种部署方式
1.嵌入型 WAF 作为模块嵌在 Nginx/Apache 里(ModSecurity 就是这种)
2.反向代理型 WAF 是一个独立的代理服务器,站在 Nginx 前面
还有云WAF和硬件WAF等等

现在我们正式开始部署waf环境
前提准备:一台云服务器,这里推荐ubuntu系统的(我的是Ubuntu24.04)。不想用云服务器的话可以在你自己的虚拟机上布置,也是一样的。

首先第一步我们需要安装雷池,先更新系统

sudo apt update -y && sudo apt upgrade -y

更新完毕后执行这个一件下载命令:

sudo bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"

安装可能需要两三分钟的时间,等待即可。
屏幕截图 2026-07-22 155057.png

图片1.png
出现账号密码代表安装成功,还有要注意一下,这个显示的ip可能不是你的公网ip,访问的时候改成自己的公网ip即可
我这里是154.12.86.12
出现这种情况,点击高级

图片2.png
继续访问即可

根据账号密码登录界面

图片3.png

成功进入
图片4.png

接下来设置一个站点

这里我用的CMS是typecho 这是一个轻量级博客,php后端。
图片5.png

好,接下来我们在雷池上配置站点
图片6.png

来到这个界面
图片7.png

域名填写你自己的域名,没有域名就填ip,证书设置的话如果不想设置就把443端口给删掉,这里我就不配置证书了,应用名称随便填。

需要注意的是这个上游服务,上有服务就是php-fpm这种,php-fpm是有两种工作形式的,一个式端口监听,一个式监听socket文件,他这里显示不支持路径,说明我们要使用前者。

去配置文件中查看其工作方式

sudo nano /etc/php/你的php版本号/fpm/pool.d/www.conf

找到这一行
图片8.png

说明这个是监听socket文件的,我们把它修改成
图片9.png

保存退出,然后重启服务
图片10.png

然后你在填入http://127.0.0.1:9000成功创建,但是你在访问的时候发现
图片11.png

网站异常,这是因为你填入的是http协议,而php-fpm认准的是fastcgi协议
但是根据雷池要求,这里只能填http协议,所以我们只能使用nginx代理来解决问题。

在/etc/nginx/sites-enabled/的文件中写入如下配置
图片12.png

保存

sudo nginx -t
sudo systemctl restart nginx

现在就可以正常访问了
图片13.png

这里用sql注入语句尝试一下
图片14.png

成功拦截

标签: none

添加新评论