前言 最近笔者的一台个人服务器CPU频繁告警,网站访问变得异常缓慢。查看Nginx日志后发现,大量来自不同IP的请求在短时间内涌入,明显是遇到了CC攻击。之前一直用Nginx自带的limit_req和limit_conn模块做简单防护,这次看来是顶不住了。
于是决定部署一个专业的Web应用防火墙(WAF)。云WAF方案虽好,但动辄成千上万的费用对个人项目来说难以承受。经过一番调研,我最终选择了长亭科技开源的雷池(SafeLine)社区版,主要是看中它开源免费、基于Docker部署简单,而且中文支持友好。
下面记录我的实战部署和配置过程,供有类似需求的同学参考。
项目介绍 SafeLine(雷池) 是一款开源免费(GPL-3.0 license)、功能强大、简单好用的 Web 应用防火墙(WAF),旨在为企业提供高效、可靠的安全防护,抵御各类网络攻击。
项目作用 SafeLine(雷池) 通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫 等攻击。
工作原理
防护效果测试
环境准备 安装雷池前请确保你的系统环境符合以下要求:
操作系统:Linux
CPU 指令架构:x86_64, arm64
CPU 指令架构:x86_64 架构必须支持 ssse3, 推荐支持 avx2指令集
软件依赖:Docker 20.10.14 版本以上
软件依赖:Docker Compose 2.0.0 版本以上
最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘
自动安装 一键安装:3 分钟即可完成自动安装,命令执行成功则代表雷池安装成功,现在你可以访问雷池控制台了!
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
访问雷池控制台
雷池安装成功以后,你可以打开浏览器访问 https://192.168.198.146:9443/ 通过控制台中的username和password来登录使用雷池控制台管理页面:
添加应用
成功登录雷池控制台管理页面然后进入防护应用页面, 点击右上角的添加应用按钮进行配置:
CC 防护 雷池等候室是参考 餐馆等位 的模式,专为网站设计的一套 限流方案,用于解决流量高峰可能会冲垮网站服务器的问题。
雷池 WAF 默认是不启用等候室功能的,如果需要开启等候室,只需要在界面上点击 CC 防护 按钮,然后配置等候室的相关参数即可。
CC 防护 - 等候室网页效果演示:
Bot 防护
配置 Bot 防护 - 人机验证:
配置 Bot 防护 - 人机验证后,当用户访问您的网站时,雷池会预先检查客户端环境的合法性,如下图所示:
流量分析
流量分析统计报表如下所示,统计数据包括请求次数、访问次数(PV)、独立访客(UV)、独立 IP、拦截次数、实时 QPS等等:
安全态势
安全态势统计报表如下所示,统计数据包括攻击防护、黑白名单、频率限制、人机验证、网页防篡改等等:
雷池防护效果 攻击防护规则配置
防护效果展示 咱们以 https://192.168.198.146:9443 为例,然后尝试访问来模拟黑客攻击。
模拟 SQL 注入攻击: https://192.168.198.146:9443/?id=1+and+1=2+union+select+1
模拟 XSS 攻击: https://192.168.198.146:9443/?id=<img+src=x+οnerrοr=alert()>
模拟路径穿越攻击: https://192.168.198.146:9443/?id=../../../../etc/passwd
模拟代码注入攻击: https://192.168.198.146:9443/?id=phpinfo();system('id')
这些攻击都将会被雷池拦截,如下图所示: