这篇介绍的是雷池waf社区版的配置和使用。
如果安装的话,请参考我的另外一个博客文章
雷池waf社区版安装
搭建完成后进入到web界面
https://192.168.xx.xx:9443/dashboard
配上行可以参考官网的配置和防护
https://waf-ce.chaitin.cn/docs/guide/config
1 防护站点-http域名的添加
默认的http的80端口的转发。因为我waf和服务在一个机器上,waf要占用80和443的端口,所以后端的nginx的端口我修改为81
添加完站点,你可以本地修改host访问测试,这时候就可以看到有流量进来了
访问前是126次
访问后就是
2 防护站点-https域名证书的添加
http占用的一般是80口,https的一般是443的端口,
1 证书的上传
在通用配置–证书管理–上传证书,就可以吧证书保存在waf的服务中。
会自己识别证书的域名,你也可以自签发证书,
我刚上传的时候使用的nginx的证书,但是会报错,x509的错误,证书格式问题。
nginx: [emerg] PEM_read_bio_X509_AUX(“xxxxxxxx.pem”) failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)
nginx: configuration file nginx.conf test failed
于是我自己签发了一份x509的证书
一条命令生成自签证书
openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj “/C=CN/ST=beijing/L=beijing/O=ceshi/OU=devops/CN=test.com”
###-nodes 表示私钥不加密,若不带参数将提示输入密码;
在回来添加https的域名的证书。
测试访问域名http,http访问正常
测试访问域名https,自签发的证书,浏览器识别都会有问题一般。
3 测试防护效果
参考官网文档
https://waf-ce.chaitin.cn/docs/guide/test
尝试手动模拟攻击
打开浏览器,访问以下地址即可模拟出对应的攻击:
模拟 SQL 注入,请访问 http://<IP或域名>:<端口>/?id=1%20AND%201=1
模拟 XSS,请访问 http://<IP或域名>:<端口>/?html=
通过浏览器,你将会看到雷池已经发现并阻断了攻击请求。
若请求没有被阻断,请参考 防护不生效
模拟访问发现被封禁,查到是sql的注入问题。
也可以看拦截到ip的攻击的次数。
4 抵御ddos的高频访问和攻击
对于刷流量的ddos的高频访问,需要在防护配置–频率限制开启高频访问的限制。
自定义访问的速度可以。我自己编写脚本,模拟高频访问,发现被封禁了ip看了就。
[root@test001 conf.d]# cat attack.sh
#!/bin/bash
for (( i=1;i<=20;i++ ));do
#sleep 1
curl -s --resolve “test.waf.com:80:192.168.108.141” http://test.waf.com/?id=1%20AND%201=${i} >>/dev/null
done
5 人机验证
防止模拟访问的时候,或者别的访问攻击,可以开启人机验证,
防护配置中配置人机验证,配置的方式很多,具体可以根据自己的需求去配置
我以匹配ip为案例,设置开启人机验证。
6日志问题和其他功能
官网文档 https://waf-ce.chaitin.cn/docs/
waf的功能相对于在线的防火墙功能少了很多,对于个人站点的防护,基本够了,其他的功能可官网文档自己研究。
我是离线安装的
在目录中可以看到/usr/local/safeline,看到各种服务的日志,如果有错误可以来看看那日志排查下错误。
各个服务的日志会映射到本机。
对上上面的证书的格式问题就可以在nginx中看到对应的日志
tail -fn 100 tcd.log
个人总结,功能相对来说少了比起来用过的阿里云和腾讯云少了好多,大公司的网站防护还是需要云防火墙来清洗流量,云服务的流量清洗和cdn可以做到一体化,防护策略和渗透措施更,对个个人和小公司,感觉有个开源的waf清洗流量就足够了,毕竟不需要投入太多。