文章总结: 本文介绍开源WAF雷池SafeLine,主打轻量免费防护。该工具基于语义分析技术,能防御SQL注入、XSS、CC攻击及爬虫等多种Web威胁。文章展示了其微服务架构及Docker部署方式,并验证了在拦截暴力破解和路径遍历上的有效性。建议开发者在面临代码漏洞整改压力时,将其作为快速部署的防护盾以争取修复时间。 综合评分: 78 文章分类: 软文广告,产品介绍,安全工具,WEB安全,解决方案
开源|一款支持SQL 注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC 攻击、Bot 爬虫的Web 应用
刘哥聊技术
天億网络安全
2025年12月24日 11:21 北京
前言
点击下方 “天億网络安全“公众号关注, 设为星标。有用的话请点赞、收藏备查。
作者:刘哥聊技术
前言
作为负责企业 SRM 和 CRM 系统的开发负责人,担心的不是需求变更,也不是线上故障,而是项目收到来自某安-全中心的漏洞通报邮-件。
“检测到越权访问”、“存在 SQL 注入风险”、“登录接口可被暴力破解”……这些词几乎成了固定模板。系统是五年前搭的,有些接口用的是拼接 SQL,有些权限校验靠前端“藏按钮”,当时赶上线,没人顾得上安-全。现在业务跑起来了,反而成了定时的bug。
每次整改都要拉测试、走流程、协调资源,严重时还得临时停服。客户那边催功能,安-全这边卡上线,夹在中间的滋味,只有经历过的人才懂。
有没有一种方式,不用立刻改代码,也能先挡住攻击,给我们争取修复时间?
我在gitee 上面找了一下相关需求的开源软件,发现了这款开源项目,可以满足需求,那就是 雷池 WAF(SafeLine)。我用的是社区版本,一些免费的功能。
介绍
雷池是一个开源 Web 应用防火墙,主打为开发者提供一道轻量、自托管、免费但专业的防护层。它不是替代代码安-全,而是在代码还没来得及完善前,先替你守住底线。一款足够简单、好用、强大的免费WAF。基于业界领先的语义分析检测技术,保护你的网站不受黑客攻击。
前端
管理界面比较简约,给用户耳目一新的感觉。打开仪表盘,你能一眼看到:
- • 今天拦截了多少次攻击;
- • 哪些 IP 在高频请求;
- • 哪些 URL 被频繁试探。
实用的是攻击详情页,它会展示原始请求、攻击类型、拦截规则、时间戳,甚至能告诉你这是“SQL 注入”还是“路径遍历”。这些信息直接对应到你的业务接口,排查起来不用翻日志,效率翻倍。
后端
雷池的检测引擎不是简单匹配关键词,而是结合语义分析 + 行为识别。比如一个请求里没有 UNION SELECT,但参数结构异常,它仍可能判断为注入尝试。测试数据显示,雷池在平衡模式下对 Web 攻击的检出率超 71%,误报率仅 0.07%,远优于传统规则引擎。
它支持的防护类型也全:SQL 注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC 攻击、Bot 爬虫……甚至能防“后门文件”上传。
技术架构
雷池采用模块化微服务架构,核心组件包括:
- • Tengine:流量入口,基于 Nginx 深度定制;
- • Detector:检测引擎,负责分析攻击;
- • MGT:管理后台,提供配置和日志;
- • Chaos:人机验证与动态防护模块;
- • Luigi/FVM:规则与策略管理。
各组件通过内部通信协同工作,但对用户透明。
部署方式
团队喜欢 Windows + Docker 开发环境,雷池完全兼容。提供 docker-compose.yml 和 .env 模板。
docker-compose.yml 文件
# 移除了顶层的 networks 配置,Docker会自动创建一个默认网络
services:
postgres:
container_name: safeline-pg
restart: always
image: ${IMAGE_PREFIX}/safeline-postgres${ARCH_SUFFIX}:15.2
volumes:
- ${SAFELINE_DIR}/resources/postgres:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
environment:
- POSTGRES_USER=safeline-ce
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?postgres password required}
# 移除了 ipv4_address,Docker会自动分配
command: [postgres, -c, max_connections=600]
healthcheck:
test: pg_isready -U safeline-ce -d safeline-ce
mgt:
container_name: safeline-mgt
restart: always
image: ${IMAGE_PREFIX}/safeline-mgt${REGION}${ARCH_SUFFIX}:${IMAGE_TAG:?image tag required}
volumes:
- /etc/localtime:/etc/localtime:ro
- ${SAFELINE_DIR}/resources/mgt:/app/data
- ${SAFELINE_DIR}/logs/nginx:/app/log/nginx:z
- ${SAFELINE_DIR}/resources/sock:/app/sock
- /var/run:/app/run
ports:
- ${MGT_PORT:-9443}:1443
healthcheck:
test: curl -k -f https://localhost:1443/api/open/health
environment:
# 关键修改:使用容器名 'safeline-pg' 代替静态IP
- MGT_PG=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable
- MGT_PROXY=${MGT_PROXY}
depends_on:
- postgres
- fvm
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
detect:
container_name: safeline-detector
restart: always
image: ${IMAGE_PREFIX}/safeline-detector${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
volumes:
- ${SAFELINE_DIR}/resources/detector:/resources/detector
- ${SAFELINE_DIR}/logs/detector:/logs/detector
- /etc/localtime:/etc/localtime:ro
environment:
- LOG_DIR=/logs/detector
tengine:
container_name: safeline-tengine
restart: always
image: ${IMAGE_PREFIX}/safeline-tengine${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/resolv.conf:/etc/resolv.conf:ro
- ${SAFELINE_DIR}/resources/nginx:/etc/nginx
- ${SAFELINE_DIR}/resources/detector:/resources/detector
- ${SAFELINE_DIR}/resources/chaos:/resources/chaos
- ${SAFELINE_DIR}/logs/nginx:/var/log/nginx:z
- ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache
- ${SAFELINE_DIR}/resources/sock:/app/sock
environment:
# 关键修改:使用容器名 'safeline-mgt' 和 'safeline-detector' 代替静态IP
- TCD_MGT_API=https://safeline-mgt:1443/api/open/publish/server
- TCD_SNSERVER=safeline-detector:8000
- SNSERVER_ADDR=safeline-detector:8000
- CHAOS_ADDR=safeline-chaos
ulimits:
nofile: 131072
# tengine 保持 host 模式,因为它需要直接监听宿主机端口
network_mode: host
luigi:
container_name: safeline-luigi
restart: always
image: ${IMAGE_PREFIX}/safeline-luigi${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
environment:
# 关键修改:使用容器名 'safeline-mgt' 和 'safeline-pg' 代替静态IP
- MGT_IP=safeline-mgt
- LUIGI_PG=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable
volumes:
- /etc/localtime:/etc/localtime:ro
- ${SAFELINE_DIR}/resources/luigi:/app/data
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
depends_on:
- detect
- mgt
fvm:
container_name: safeline-fvm
restart: always
image: ${IMAGE_PREFIX}/safeline-fvm${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
volumes:
- /etc/localtime:/etc/localtime:ro
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
chaos:
container_name: safeline-chaos
restart: always
image: ${IMAGE_PREFIX}/safeline-chaos${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"
environment:
# 关键修改:使用容器名 'safeline-pg' 代替静态IP
- DB_ADDR=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable
volumes:
- ${SAFELINE_DIR}/resources/sock:/app/sock
- ${SAFELINE_DIR}/resources/chaos:/app/chaos
.env 文件
# 配置用于数据持久化的 Volumes 数据卷目录(相对路径,相对于 docker-compose.yml 所在目录)
SAFELINE_DIR=./safeline-data
# 雷池的 POSTGRES 数据库密码(使用大小写字母 + 数字,无特殊字符)
POSTGRES_PASSWORD=cZyWWw3uJhswF393BG3N
# 雷池控制台端口号
MGT_PORT=9443
# 雷池更新通道(LTS)
RELEASE=-lts
CHANNEL=-lts
# 镜像区域后缀(中国大陆用户留空)
REGION=
# 镜像源(中国大陆推荐华为云)
IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
# 雷池版本(LTS)
IMAGE_TAG=9.1.0-lts
# 自定义子网前缀(避免与其他项目冲突)
# SUBNET_PREFIX=172.25.0 <-- 注释或删除这一行
# 架构后缀(x86_64 留空,ARM 可填 -arm64)
ARCH_SUFFIX=
# 代理配置(通常为 0)
MGT_PROXY=0
只需修改几个参数(比如端口、密码、镜像源),执行:
# 一键部署
docker-compose up -d
# 查看账号
docker exec safeline-mgt resetadmin
显示成功后,拿到账号就可以去使用了。
[INFO] Initial username:admin
[INFO] Initial password:EnmMTmah
[INFO] Done
不到五分钟,整套服务就跑起来了。我在一台 2 核 4G 的云服务器上部署,资源占用极低,日常 CPU 不到 10%。
对国内用户,建议使用华为云镜像源,我已在配置中默认设置,可以直接使用,避免国际网络拉取失败。
开源协议
雷池社区版遵循 GPLv3 开源协议,全球已有超 18 万次安装,保护着上百万个网站。如果有更高级的需求,可以升级到商业版,有更多的防护。
即刻体验一波
上周,CRM 的登录接口又被扫出“暴力破解”风险。正常流程要加验证码、限流、IP 封禁,至少两天。当天在预发环境部署雷池,开启:
- • CC 防护:单 IP 每分钟超过 20 次请求自动限流;
- • 人机验证:可疑流量弹出验证码,真人用户无感。
第二天,攻击 IP 被自动拦截,日志里清清楚楚记录了每一次尝试。我把截图附在整改报告里,某安中心认可为“有效临时缓解措施”,系统照常上线。
还有一次,SRM 的文件下载接口被人传参 ?path=../../../etc/passwd,雷池直接识别为“路径遍历”,返回统一拦截页,后端服务毫发无损。
业务场景
让我意外的是“动态防护”功能。它能对网页中的 HTML 和 JS 代码进行动态混淆,每次访问的结构都不同,让爬虫无法稳定解析。
我们有个给供应商用的报价查询页,之前总被竞对爬走价格。启用动态防护后,对方的脚本抓到的全是乱码,三天后流量归零。
朋友的在线教育平台也用了类似方案:人机验证 + IP 黑名单 + 频率限制三重组合,恶意请求下降 98%,服务器负载从 90% 降到 20%。
结语
雷池没让我变成安-全专家,但它让我在面对漏洞通报时,从“慌”变成了“稳”。
它不是万能药,但它是开发者值得信赖的协作者,不打扰正常业务,默默挡住恶意流量,给你争取修复代码的时间和空间。
如果你也在维护对安-全性要求高的企业系统,不妨试试它。至少下次收到红标邮-件时,你能多一份底气。
「天億网络安全」 知识星球一个网络安全学习的星球!星球主要分享、整理、原创编辑等网络安全相关学习资料,一个真实有料的网络安全学习平台,大家共同学习、共同进步!
知识星球定价:199元/年,(服务时间为一年,自加入日期顺延一年)。
如何加入:扫描下方二维码,扫码付费即可加入。
加入知识星球的同学,请加我微信,拉您进VIP交流群!
朋友都在看
▶️3保1评 | 分保、等保、关保、密评联系与区别
▶️等保2.0丨2021 必须了解的40个问题
▶️等保2.0 三级 拓扑图+设备套餐+详解
▶️等保2.0 二级 拓扑图+设备套餐+详解
▶️等保2.0 测评 二级系统和三级系统多长时间测评一次?
▶️等保2.0系列安全计算环境之数据完整性、保密性测评
▶️等保医疗|全国二级、三乙、三甲医院信息系统安全防护设备汇总
▶️国务院:不符合网络安全要求的政务信息系统未来将不给经费
▶️等级保护、风险评估和安全测评三者的区别
▶️分保、等保、关保、密码应用对比详解
▶️汇总 | 2020年发布的最重要网络安全标准(下载)
▶️2022版 | 全国网络安全常用标准(下载)
欢迎扫描关注【天億网络安全】公众号,及时了解更多网络安全知识
点分享
点点赞
点在看
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:天億网络安全 刘哥聊技术《开源|一款支持SQL 注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC 攻击、Bot 爬虫的Web 应用》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论