wordpress教程

使用 ngx_lua 配置 WAF 防火墙为网站防御 CC 攻击

2019-07-26 15:45
0 59
代码狗博客建站三年了,从未重视过网站安全问题,毕竟个人小博客没必要多在乎安全问题,然而今天有位未知的朋友用实际行动告诉我一定要重视网站安全,不然损失的就不只是流量!特别是加了 CDN 的网站,那流量跑得飞起,然后你会为巨额流量买单。下面是今天我被 CC 攻击的全过程,以及我对此次攻击做出的补救措施,第一次搞网站防御若有错误欢迎指正。

代码狗博客建站三年了,从未重视过网站安全问题,毕竟个人小博客没必要多在乎安全问题,然而今天有位未知的朋友用实际行动告诉我一定要重视网站安全,不然损失的就不只是流量!特别是加了 CDN 的网站,那流量跑得飞起,然后你会为巨额流量买单。下面是今天我被 CC 攻击的全过程,以及我对此次攻击做出的补救措施,第一次搞网站防御若有错误欢迎指正。

第一次 CC 攻击

早上 10 点 15 分,突然收到腾讯云发来的 CDN 流量包即将消耗殆尽的邮件及短信通知,当时我就懵了,按照我一天 500M 的流量来算,不应该不够呀。然后瞬间意识到被攻击了 ,登陆腾讯云后台看到今日消耗流量 40G。心都凉了半截,然后我快速设置了下腾讯 CDN 的请求次数控制,之前没有限制。限制每 IP 每秒仅可请求 20 次,然后设置 CDN 带宽阈值,超过自动回源。

最坑爹的是腾讯的 CDN 日志有 2 个小时左右的延迟,我根本没办法使用封禁 IP 的方式来解决这个问题。快 12 点我才看到腾讯 CDN 的日志信息,发现了一大堆下面形式的请求记录。

 

使用 ngx_lua 配置 WAF 防火墙为网站防御 CC 攻击

攻击者模拟了百度的 UA,使用 GET 方法大量请求我的首页,使用的 ip 据查大部分是腾讯云的,而且 ip 杂乱,总共有高达 600+ip,封禁 ip 的方法行不通了。

第二次 CC 攻击

下午在一个 WordPress 交流群中交流今天上午被 CC 攻击的事,刚说完,立马就受到了第二波攻击。这一次由于我设置了超过请求频率就会返回 404 页面,所以遭受的损失少了许多。找客服交流了许久,没有任何办法防御 CC 攻击,CDN 流量损失也挽回不了。我开始在自己服务器上使用 ngx_lua 配置 WAF 防火墙,用来防御一部分 CC 攻击。既然 CDN 不靠谱,那么我还是靠自己吧,关键是 CDN 的流量跑起来太心痛了!

使用 ngx_lua 配置 WAF 防火墙为 Nginx 开启防御功能有很多种方式,最简单的就是使用 oneinstack 一键安装包安装服务器环境,oneinstack 在 2019 年 1 月 1 日更新版本中新增了 ngx_lua 功能,可以自动安装配置,小白必备。

另一种就比较麻烦,需要自己手动下载源码,编译安装,然后配置 Nginx 支持,设置防火墙规则等等,一两句话说不完,这里就不多说了,需要的可以自行百度。

第三次 CC 攻击

下午 3 点 05 分,第三次 CC 攻击来临,这位老兄今天是耗上我了,不打死我的小博客不死心呀。CDN 跑了 10 多 G 流量后成功回源,然后我的服务器防火墙也记录下了被拦截的 CC 攻击请求,如下:

使用 ngx_lua 配置 WAF 防火墙为网站防御 CC 攻击

使用 ngx_lua 配置 WAF 防火墙为网站防御 CC 攻击

图中我们可以看到拦截了一批 CC 攻击,但是仍然有一批透过了防御。

使用 lua 脚本+memcached 动态黑名单防御

既然 lua 自己的 CC 防御逻辑拦不住,那我们就写一段拦截脚本,把一段时间内访问次数过多的用户 ip 给封禁处理。这里就需要使用 memcached 内存缓存了,当然你也可以使用 redis 缓存,也可以直接写到文件中,内存的响应比较快,我采取了 memcached 内存缓存策略。

在 lua 脚本文件中写入如下代码:

重载后手动测试,连续刷新首页 4 次,成功返回 403 错误。然后使用 Linux 机器利用 ab 工具进行压力测试,并发 1000,访问后发现仍然会对正常用户产生影响,网页打不开了。

貌似这个脚本会对封禁的黑名单发起的请求进行处理,1W 个黑名单请求就会处理 1W 次,所以仍然会阻塞正常用户的访问,不过如果 CC 攻击是持续性的,那么这段脚本还是有点用处的,除了第一波会影响正常访问外,后面就会好很多。建议将黑名单加入服务器防火墙,不经过 nginx,这样就不会出现卡顿情况,否则即使进入 nginx 黑名单,nginx 也会处理请求,仍然会被消耗资源。

版权声明: 本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

2

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

验证码

您也可以使用第三方帐号一键快捷注册

×

感谢您对admin的支持,么么哒~

支付宝打赏 admin
请扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦