你好,我是《Redis 高手心法》畅销书作者码哥,是一个靓仔。
大家在工作中有没有遇到过 Web 网络被攻击,公司领导瞬间炸锅。要求半夜加班修复的经历……
码哥现在依旧记得,那是十年前,我还是那个在夕阳下奔跑的少年。
十年前我刚毕业,入职一家初创公司负责官网开发。当时为了省成本,网站直接用 HTTP 协议裸奔,连最基础的参数校验都没做全。
结果上线第三周就出大事了——我和运维同事扒日志看到凌晨,终于定位到问题:黑客通过篡改 URL 参数发起 SQL 注入,直接修改了数据库里的商品表;同时用 XSS 攻击植入了恶意链接。
那晚研发部的小伙伴和运维在紧急修复,直接在公司睡觉……
后来我把这个场景复现给雷池 WAF 测试,发现它根本不给黑客机会:作为反向代理部署后,会先拦截所有 HTTP 请求,通过智能语义分析直接识别出"参数异常篡改+SQL 关键字注入"的恶意流量,连数据库的面都碰不到。
对比当年我们用正则表达式死磕规则的笨办法,这种智能防护简直是降维打击。
要是当时有现在的防护工具,哪至于这么狼狈?
WAF 神器
如今作为博主,我最怕就是服务器报警短信,曾经因为爬虫泛滥,我的小破站一个月内宕机三次。
分析 Nginx 日志后我惊呆了:同一个 IP 在 5 分钟内请求了 2000 多次,明显是自动化工具在批量抓取内容。
更狠的是,这些爬虫还针对性攻击我的 WordPress 后台,/wp-admin 的登录请求一小时内暴增 1200 次,明显是在暴力破解密码。
最近,我在 Github 上发现了一个排名第一的开源 Web 防火墙,WAF 社区版——这个在 GitHub 上拥有19.5k星标的神器!
也是国内整个安全领域 Star 数最高的项目,多次被 GitHub 精选上 Trending 榜单。
它的特点是以 ”智能语义分析技术“ 闻名于安全行业,相比使用正则表达式来描述攻击特征的传统技术,可以保护 Web 服务免受SQL 注入、XSS、代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫等攻击。
而且还有“社区免费版”,这对于我手头有点紧的小博主来说,可太合适了……有了它,我可以安心的跟我的她快乐的么么哒了……
抱着死马当活马医的心态部署雷池后,奇迹发生了:开启 Bot 防护后,它通过分析 IP 恶意行为、浏览器真实性、键鼠操作习惯等维度打分,直接拦截了 90%以上的自动化爬虫,后台登录请求从 1200 次/小时降到不足 10 次;
更意外的是,1 核 2G 服务器上内存占用始终稳定在 200MB 以内,对加载速度毫无影响。
我遇到的问题是,恶意 HTTP 流量,互联网上有来自真人用户的流量, 但更多的是由爬虫, 漏洞扫描器, 蠕虫病毒, 漏洞利用程序等自动化程序发起的流量。
识别真人用户对提升网站的安全性至关重要, 也是防爬虫,防扫描的关键。
当我开启了 Bot 防护 - 人机验证后,瞬间让我安逸了。雷池会根据当前客户端环境的综合行为进行打分判断:
客户端的源 IP 是否有过其他恶意行为
客户端是不是真实浏览器
客户端是否存在监控或调试行为
浏览器内的键盘鼠标行为是否符合人类的习惯
而且这不是我个例,我后来在雷池社区逛的时候,发现不少企业级用户的案例更有说服力——不同规模、不同行业的痛点,雷池都能精准解决。
杭州一位电商站长在社区分享过他的困境:竞争对手每小时都在爬取他们的商品价格,一旦自家降价就立刻跟进,被迫陷入“自杀式价格战”。
之前试过 Nginx 限速、封 IP 段,结果对方换代理 IP 池继续爬,还误封了不少真实买家,客服天天被投诉。
接入雷池后,他启用了“动态商品 ID+访问频率控制”组合策略:雷池会给每个商品动态生成临时 ID,爬虫刚解析完的链接下次访问就失效;同时对同一设备的价格查询频率做智能限制。
效果立竿见影——对方爬虫连续 3 天拿不到有效价格数据,最终放弃监控,他家的利润直接回升了 15%。
更绝的是雷池的动态加密功能,能自动对 HTML/JS 代码随机重写,爬虫刚定位到的“加入购物车”按钮 class,下次访问就变成随机字符串,某爬虫开发者吐槽“写规则的速度赶不上代码变化速度”。
高的矮的、胖的瘦的、有钱的没钱的用户,只要你对 “智能语义分析技术” 感兴趣,都可以用上雷池(SafeLine)。
社区版,具备智能语义分析技术,个人技术爱好者和非营利性公益机构可免费使用。
专业版,主要面向个人网站,提供完备的网站安全防护能力,价格实惠,每年仅需 3600/元。
商业版,主要面向中型企业,具备企业级安全管理能力,满足合规性需求,每年仅需 17999/元。
企业版,主要面向中大型企业,满足各种高可用需求,满足各种集群化需求,满足各种定制化部署需求,提供稳定可靠的企业级安全管理方案。
先了解下它的基本工作原理,这样才能从从容容,游刃有余。
雷池通过阻断流向 Web 服务的恶意 HTTP 流量来保护 Web 服务。
雷池作为反向代理接入网络,通过在 Web 服务前部署雷池,可在 Web 服务和互联网之间设置一道屏障。
雷池的核心功能如下:
防护 Web 攻击
防爬虫, 防扫描
前端代码动态加密
基于源 IP 的访问速率限制
HTTP 访问控制
个人安装指南
在技术社区看到雷池 WAF 社区版的推荐后,我决定试一试,毕竟光说不练假把式,是骆驼是马,拉出来遛一遛。
自动安装部署过程比想象中简单:
安装步骤:
准备一台 Linux 服务器(CentOS 7.6+或 Ubuntu 18.04+)
执行一键安装命令:
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"雷池安装成功以后,你可以打开浏览器访问
https://<safeline-ip>:9443/来使用雷池控制台。注意对 9443 的端口打开访问。第一次登录雷池需要初始化你的管理员账户(默认会执行),如果没有找到账户密码,手动执行以下命令即可。
docker exec safeline-mgt resetadmin
安装好以后,就可以开启雷池保护你的应用了。在我的 1 核 2G 服务器上,雷池的内存占用始终保持在 200MB 以内,性能影响微乎其微。
登录雷池控制台后, 进入防护应用 - 应用管理页面, 点击右上角的添加应用按钮进行配置。
些关键字段的说明如下:
域名: 通过雷池访问该应用时使用的域名 (支持使用
*做为通配符),注意修改 DNS 解析到雷池 IP端口: 雷池监听的端口 (如需配置 HTTPS 服务, 请勾选 SSL 选项并配置对应的 SSL 证书)
上游服务器: 被保护的 Web 服务的实际地址
完成以上步骤后你的雷池已经可以正常工作了, 使用刚才配置的域名和端口访问试试.
访问后雷池数据统计页面的请求数若有所增加,那恭喜你, 说明你配置的完全正确.★,°:.☆( ̄ ▽  ̄)/$:.°★。
我们接着看一下雷池处理 HTTP 请求的流程,如下所示。
社区建设
做技术的兄弟们以参与开源、公开分享技术为荣。雷池(SafeLine)在 2015 年的时候就开源了核心引擎 “偃师” 的代码。
在这以后我们一直想要公开更多雷池(SafeLine)的技术。关于雷池 WAF 社区免费版的更多信息请参考:
官网:https://waf-ce.chaitin.cn/
GitHub:https://github.com/chaitin/SafeLine
另外,对 WAF 技术感兴趣的同学,欢迎扫描下方二维码加入雷池社区版技术交流群,与我们一起共创星辰大海。
“余弦:还没好吗?你不是有神器傍身,网站安全无忧了,我在等你了……
好了,不说了读者粉丝们,我要去干正事去了……
往期推荐
「深度好文」MySQL 全局锁、表锁、行锁、间隙锁、临键锁详解,架构师必备高并发下的锁优化策略
2w 字 MySQL面试真题(图文并茂版):事务、索引、锁、主从同步、日志、性能优化、分库分表
38 张图详解 Redis:核心架构、发布订阅机制、9大数据类型底层原理、RDB和AOF 持久化、高可用架构、性能问题排查和调优
21 张图图解 Kafka 为什么吞吐量大,速度快?