前言:
由于我用了穿透,有了80 和443 穿透到了内网,在日志上问题,通过ai分析日志是XSS攻击和一些sql攻击,然后我想起来了网站上使用的WAF,至于什么是WAF新手自行百度吧,我这里就不过多解释 了。
在以前的traefik中,是没有办法配置WAF来给反代的web进行防御的,后期traefik推出了插件功能,这时候有大神做出来了相应的插件,来进行配置WAF防御。
配置之前,要知道,如果你配置了WAF,是会影响你的请求的整个流程的速度的,因为多了一些处理过程,所以大家对速度比较敏感的就不用继续往下去配置了。
这里配置的方法,是基于我之前写的几篇教程的基础上做的,如果你不是按照我的方法搭建的traefik,教程你就不可能完全照抄,只能是借鉴,需要根据自己的环境进行相应的修改。
注意:
教程本身是有时效性的,在未来的时间,可能因为版本更新,或者其他不可抗力的问题导致失效,如后期有更新我会尽力进行内容追加。
更新:
由于modsecurity更新,导致原有配置有问题,所以更新一下waf的链接地址
– “traefik.http.middlewares.waf.plugin.traefik-modsecurity-plugin.modSecurityUrl=http://waf:8080“
教程:
添加插件,这个步骤可以在容器启动的CMD追加参数,或者是写静态文件,这里我选择写静态文件,就不去写cmd了,如果后期还有其他插件在追加写CMD 有点麻烦,不如静态文件来的方便。
把上面的配置写入到traefik的静态配置文件中,traefik.yml
粘贴的时候,注意缩进,切勿弄错,粘贴完成后重启traefik的容器,可以用命令或者其他工具。
docker restart traefik
到此插件就安装完成了,我们写中间件,在traefik启动的容器上增加两个labels。
完成后重新生成容器,docker compose up -d即可。
接下来我们配置waf容器,和dummy,这里我还加了一个website的一个测试用的容器,大家可以酌情选择是否添加,如果不需要可以不要website部分。
这里website.xxxx.com是示例域名,需要修改为你的,如果你不喜欢用labels来发现反代,你也可以用动态文件,书写方法我之前写过,在中间件配置中配置就可以了,示例如下。
我这里用的是compose,所以使用docker compose up -d 直接启动即可。
启动后用域名访问一下看看内容
看到这里表示访问没问题可以正常反代和访问,下面我们来试试简单一点的xss攻击,来测试一下waf 会不会拒绝我们的请求,在访问的地址后面加上
?test=../etc
在进行访问测试,如果waf功能正常,就会得到下面的反馈。
下面我们来说说如何把waf添加到反代中,因为这个配置不是所有反代都是有waf防御的功能,添加方法有两种,其实这两种我在上面的部署教程都说出来了,单独摘出来是方便大家后期添加方便查找。
第一种就是我比较喜欢的labels的方式了
第二种就是写traefik的动态文件
在反代的配置增加waf的中间件
这样就可以了。
结尾:
这里需要注意,这里配置的waf是国外做的一个叫modsecurity我查了一下还挺有名的,国内很多waf相关都有,但是今天我出的教程只是一个带有规则的waf容器,在使用中,会出现waf误判将正常的请求视为攻击的情况,目前我还没有研究怎么自定义规则,在未来一段时间,如果满足家庭使用和我的环境,我可能不会追加规则修改的部分,当然也不排除他的规则误判了我的请求,我可能会考虑去花时间学习,到时候我在分享出来给大家。
因为今天的教程是基于compose写的,基本支持docker 或者支持compose的系统都可以用,unraid安装compose插件也可以,至于模板,看大家把,如果大家需要在下面给我留言,我会抽时间写出来的。
请登录后查看评论内容