waf原理与搭建(0基础保姆级教程)
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)"安装可能需要两三分钟的时间,等待即可。

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

继续访问即可
根据账号密码登录界面

成功进入
接下来设置一个站点
这里我用的CMS是typecho 这是一个轻量级博客,php后端。
好,接下来我们在雷池上配置站点
来到这个界面
域名填写你自己的域名,没有域名就填ip,证书设置的话如果不想设置就把443端口给删掉,这里我就不配置证书了,应用名称随便填。
需要注意的是这个上游服务,上有服务就是php-fpm这种,php-fpm是有两种工作形式的,一个式端口监听,一个式监听socket文件,他这里显示不支持路径,说明我们要使用前者。
去配置文件中查看其工作方式
sudo nano /etc/php/你的php版本号/fpm/pool.d/www.conf
找到这一行
说明这个是监听socket文件的,我们把它修改成
保存退出,然后重启服务
然后你在填入http://127.0.0.1:9000成功创建,但是你在访问的时候发现
网站异常,这是因为你填入的是http协议,而php-fpm认准的是fastcgi协议
但是根据雷池要求,这里只能填http协议,所以我们只能使用nginx代理来解决问题。
在/etc/nginx/sites-enabled/的文件中写入如下配置
保存
sudo nginx -t
sudo systemctl restart nginx
现在就可以正常访问了
这里用sql注入语句尝试一下
成功拦截