Code Monkey home page Code Monkey logo

chaitin / safeline Goto Github PK

View Code? Open in Web Editor NEW
8.6K 58.0 535.0 65.93 MB

一款足够简单、足够好用、足够强的免费 WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护你的网站不受黑客攻击。 A free WAF that is sufficiently simple, effective, and powerful. Utilizing industry-leading semantic engine detection technology, it operates as a reverse proxy to protect your website from hacker attacks.

Home Page: https://waf-ce.chaitin.cn/

License: Other

Shell 7.69% Makefile 0.36% JavaScript 1.72% CSS 0.58% TypeScript 26.33% HTML 21.73% Vim Script 1.08% C++ 27.98% Lex 2.06% Yacc 2.06% Dockerfile 1.60% Go 6.82%
acl cc firewall http-flood security security-tools sql-injection waf web-application-firewall web-security

safeline's Introduction

雷池 - 广受好评的社区 WAF


官方网站 | 在线 Demo | 技术文档 | For English

一款足够简单、足够好用、足够强的免费 WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护你的网站不受黑客攻击。

  • 累计安装超过 60000 台
  • 保护网站超过 500,000 个
  • 每天处理 HTTP 请求超过 20,000,000,000 次
  • 每天拦截攻击超过 10,000,000 次

核心检测能力由智能语义分析算法驱动,专为社区而生,不让黑客越雷池半步。

相关源码仓库

语义分析自动机引擎 | 流量分析插件 | T1K 协议 | 测试工具

相关特性

便捷性

采用容器化部署,一条命令即可完成安装,0 成本上手。安全配置开箱即用,无需人工维护,可实现安全躺平式管理。

安全性

首创业内领先的智能语义分析算法,精准检测、低误报、难绕过。语义分析算法无规则,面对未知特征的 0day 攻击不再手足无措。

高性能

无规则引擎,线性安全检测算法,平均请求检测延迟在 1 毫秒级别。并发能力强,单核轻松检测 2000+ TPS,只要硬件足够强,可支撑的流量规模无上限。

高可用

流量处理引擎基于 Nginx 开发,性能与稳定性均可得到保障。内置完善的健康检查机制,服务可用性高达 99.99%。

🚀 安装

配置需求

  • 操作系统:Linux
  • 指令架构:x86_64
  • 软件依赖:Docker 20.10.6 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最小化环境:1 核 CPU / 1 GB 内存 / 10 GB 磁盘

一键安装

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

更多安装方式请参考 安装雷池

🕹️ 快速使用

登录

浏览器打开后台管理页面 https://<waf-ip>:9443。根据界面提示,使用 支持 TOTP 的认证软件 扫描二维码,然后输入动态口令登录:

login.gif

配置防护站点

雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。

config.gif

💡 TIPS: 添加后,执行 curl -H "Host: <域名>" http://<WAF IP>:<端口> 应能获取到业务网站的响应。

测试效果

使用以下方式尝试模拟黑客攻击,看看雷池的防护效果如何

  • 浏览器访问 http://<IP或域名>:<端口>/?id=1%20AND%201=1
  • 浏览器访问 http://<IP或域名>:<端口>/?a=<script>alert(1)</script>

log.gif

如果你需要进行深度测试,请参考 测试防护效果

FAQ

🏘️ 联系我们

  1. 可以通过 GitHub Issue 直接进行 Bug 反馈和功能建议
  2. 可以扫描下方二维码加入雷池社区版用户讨论群

Star History

Star History Chart

safeline's People

Contributors

awesomeyg avatar ct-jaryn avatar deronw avatar dhsifss avatar dundunha avatar guanweiwang avatar lorna0 avatar lvshujun0918 avatar nmgliangwei avatar phxa1 avatar safe1ine avatar toto2134 avatar xbingw avatar yrluke avatar zclaiqcc avatar zijin-m avatar ztrix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

safeline's Issues

日志中攻击者IP 优化

v1.0.2
场景:用户 --> Nginx --> SafeLine --> 真实Web站点
当前日志中记录的攻击者IP地址为Nginx地址,不是用户真实IP地址。
影响用户体验。
image

Web管理后台展示内容建议

当前防护站点,可看到的信息只有:域名、备注、端口。但是实际可配置的项目不止前面说的3个。且对应顺序还是乱的。
建议可把上游服务器也加上。
考虑到后面版本功能会有优化增加,所以这个位置可以做成可选列显示的方式,根据用户自己需要进行展示。
image

自定义列显示(且支持排序哪个在前哪个在后的自定义):
image

t1k 协议是否开放?

项目里tengine(nginx)和detector之间通信用到的t1k协议,这个协议是否可以开放源码或者协议说明书?

容器ip和腾讯云内置ip冲突

Safeline默认ip段和腾讯云内置ip冲突,导致服务器网络异常
safeline Gateway: "169.254.0.1",

ping mirrors.tencentyun.com
PING mirrors.tencentyun.com (169.254.0.3) 56(84) bytes of data
From xxx (169.254.0.1) icmp_seq=40 Destination Host Unreachable

尝试修改compose.yaml中的169.254为其他网段,但是没有用,可能镜像里有hardcode

Blocked but not logged

http://192.168.226.4:38989/?a=1%9c%27union%20select%20*%20from%20user

Blocked but not logged, caused by invalid UTF-8 char 0x9c.

safeline-postgres  | 2023-04-14 09:17:02.375 UTC [123] ERROR:  invalid byte sequence for encoding "UTF8": 0x9c
safeline-postgres  | 2023-04-14 09:17:02.375 UTC [123] CONTEXT:  unnamed portal parameter $7
safeline-postgres  | 2023-04-14 09:17:02.375 UTC [123] STATEMENT:  INSERT INTO "mgt_detect_log_basic" ("event_id","site_uuid","src_ip","socket_ip","protocol","host","url_path","dst_port","country","province","city","attack_type","risk_level","action","rule_id","timestamp") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16) RETURNING "id"
safeline-postgres  | 2023-04-14 09:17:02.375 UTC [123] ERROR:  invalid byte sequence for encoding "UTF8": 0x9c
safeline-postgres  | 2023-04-14 09:17:02.375 UTC [123] CONTEXT:  unnamed portal parameter $5
safeline-postgres  | 2023-04-14 09:17:02.375 UTC [123] STATEMENT:  INSERT INTO "mgt_detect_log_detail" ("event_id","src_port","dst_ip","method","query_string","status_code","req_header","req_body","rsp_header","rsp_body","payload","location","decode_path") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13) RETURNING "id"

站点的 SSL 证书支持直接粘贴

防火墙仅有的ssl设置只能通过 上传密钥及证书才能配置
希望增添一个 直接 复制粘贴的 填写设置

场景 我通过面板申请了 域名的ssl证书但没有证书和密钥文件 没有直接填写的选项是极其不便的

websocket的代理时候出现了认证参数没有带过去

用waf代理群晖的控制台端口,手机访问会卡在loading,我用同类开源Modsecurity产品测试,在nginx加上代理参数即可访问。希望长亭能够支持websocket的代理参数设置
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
1c0a61ac1fe4b3a0fa652d7ad046d71

希望能支持nginx、traefik等网关型应用内部扩展

真正罕见的数据集来源于大型项目,但是中间有一次tcp、http转发在中大型项目无法落地,会造成不必要的性能损耗。希望能支持内部lua、go扩展,这样才能贡献出更多高质量的大数据样本

TOTP

  1. 绑定 TOTP 时,除了二维码,还可以提供文字版密钥用来导入
  2. 登录时的 TOTP 输入框好像不能粘贴?

管理页面无版本号信息

v1.0.2
如标题,当前管理页面上无版本号信息,建议增加上。
且能够检测是否有新版本发布。

能否自定义数据库配置

数据库内没有清洗功能,担心未来数据库内满了还要去底层进行清理;数据库能否自定义配置,不在本机内可以连接到外部数据库内

检测日志-攻击IP字段识别有误

image
image
网络架构:
客户端-->七层SLB-->雷池WAF-->server
按照此架构,雷池获取到的攻击IP是七层SLB的转发客户端IP,而非真实客户端IP,需要获取http_x_forward_ip.

执行更新命令后报错(1.3.0升级1.4.0)

执行更新命令

curl -kfLsS https://waf-ce.chaitin.cn/release/latest/upgrade.sh | bash

# replace with `docker-compose` if necessary.
docker compose down && docker compose pull && docker compose up -d

输出如下:

invalid interpolation format for networks.safeline-ce.ipam.config.[].gateway.
You may need to escape any $ with another $.
required variable SUBNET_PREFIX is missing a value: SUBNET_PREFIX required

image

safeline-mario反复重启

似乎是因为mario无法启动导致的网页面板出现错误
image
日志:
safeline-mario.csv
看起来是个空指针错误
compose.yml就是手动安装中提供的
.env的内容如图:
image

可以帮忙看一下是不是哪儿配置错了吗

Will you consider to support I18n?

I realize than Waf is really helpful with my PHP website, too much attack direct focus on PHP ecosystem, and if this tool support i18n, especially for English, that will very kind.

安装报错

安装出现以下错误,请问如何解决呢
root@DESKTOP-3SP76CV:/home/ubuntu/safeline# ./safeline-ce.sh
Success!
[+] Running 4/5
✔ Container safeline-postgres Running0.0s
✔ Container safeline-mario Running0.0s
✔ Container safeline-mgt-api Running0.0s
✔ Container safeline-detector Running0.0s
⠋ Container safeline-tengine Starting0.1s
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/etc/localtime" to rootfs at "/etc/localtime": mount /etc/localtime:/etc/localtime (via /proc/self/fd/6), flags: 0x5001: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
Start safeline-ce with

升级版本后“源 IP 获取方式”配置失效

升级前版本:1.2.0
升级后版本:1.3.0

升级前配置:
源 IP 获取方式:从HTTP Header中获取
X-Forwarded-For

在升级版本后失效,需要重新保存才行。

其余配置都正常,SAFELINE_DIR环境变量在.env中

/home/ops/safeline
├── compose.yaml
├── .env

cat .env
SAFELINE_DIR=/home/ops/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=xxxxxx

升级方式
docker compose down && docker compose pull && docker compose up -d

用的宝塔面板

宝塔面板安装的 nginx,在本机用,是不是要重新编译 nginx,加入upstream,才能用啊?上游服务器写 127.0.0.1 好像不行

安装软件建议

当前版本:v1.0.2
安装时候的管理页面端口以及安装目录建议增加下自定义方式。
比如我的9443端口刚好别的应用使用了,导致冲突。
建议在执行 ./safeline-ce.sh 后进行交互选择。

无法获取真实IP

使用了waf的情况下套了一个CDN 情况下waf拦截的地址检测日志无法获取真实ip 但在日志的详情下是可以查看出真实IP

更正 我眼拙 没看见还可以设置获取方式

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.