Go 语言实现的 SSH tarpit,支持导出 Prometheus 指标并通过 Grafana 面板可视化攻击来源。
1 / 2产品信息
- 形态
- 桌面应用
- 分类
- 安全与隐私 › 网络与 VPN
- 定价
- 开源
- 平台
- Linux · Docker · Self-hosted
- 授权协议
- GPL-3.0
- 首发日期
- 2026年9月25日
- 收录时间
- 2026年9月25日
概览
endlessh-go 是一个用 Go 语言编写的 SSH tarpit(陷阱)程序,灵感来源于原始的 C 语言实现 endlessh。它的核心作用是应对暴力破解 SSH 的攻击:当攻击者尝试连接时,程序会挂起连接并持续发送无意义的横幅数据,从而消耗攻击者的时间。 与原版仅提供纯文本日志不同,endlessh-go 解决了用户希望将攻击来源的地理位置和其他统计数据进行可视化的需求。它原生支持导出 Prometheus 格式的指标数据,并提供了一个配套的 Grafana dashboard 用于展示这些数据,避免了编写额外脚本解析日志的繁琐过程。 **主要能力:** - **SSH 陷阱**:默认监听 2222 端口,使尝试连接的 SSH 客户端挂起。支持通过 CLI 参数自定义消息延迟、最大横幅行长度和最大客户端数量。 - **Prometheus 指标导出**:可通过 `-prometheus_enabled` 开启,默认在 2112 端口的 `/metrics` 路径提供指标,包括客户端连接数、断开数、发送字节数和被困时间等。 - **IP 地理位置解析**:支持将攻击者 IP 转换为 Geohash,作为 Prometheus 指标的标签。可选择使用 ip-api 在线服务或 MaxMind 离线数据库。 - **健康检查**:内置 HTTP 健康检查端点,返回 JSON 格式的状态和运行时间信息。 - **灵活的部署方式**:支持从源码编译运行,也提供了 Docker 镜像以便快速部署。 **适合人群:** 适合需要防御 SSH 暴力破解攻击,同时希望通过 Prometheus 和 Grafana 监控和可视化攻击来源数据的系统管理员或运维人员。需要注意的是,由于增加了 IP 到 Geohash 的转换以及指标导出功能,该程序的内存占用约为 10MB,高于原版 C 实现。
功能特性
- SSH 陷阱防御:挂起尝试连接的 SSH 客户端并发送无意义数据,消耗攻击者时间以防御暴力破解。
- Prometheus 指标导出:原生支持导出连接数、发送字节数、被困时间等结构化指标供 Prometheus 抓取。
- Grafana 可视化面板:提供配套的 Grafana dashboard,用于直观展示攻击来源的地理位置及统计数据。
- IP 地理位置解析:支持通过 ip-api 在线服务或 MaxMind 离线数据库将攻击者 IP 转换为 Geohash。
- Docker 容器化部署:提供官方 Docker 镜像,可通过简单的 docker run 命令快速启动服务。
- HTTP 健康检查:暴露 HTTP 端点,以 JSON 格式返回服务状态和运行时间,便于监控系统健康状况。
- 多端口监听:支持通过多个 -port 参数让服务器同时监听多个端口。
- PROXY 协议支持:可开启 PROXY protocol 支持,使服务器能够处理带有 PROXY 协议头的传入连接。
版本更新
新版本提醒我Q&A
- endlessh-go 和原版 C 语言的 endlessh 有什么区别?由 AI 生成
- 原版 C 实现只提供基于文本的日志。endlessh-go 使用 Go 重写,原生支持导出 Prometheus 指标,可将攻击者 IP 转换为 Geohash,并附带 Grafana dashboard 进行可视化。代价是内存占用增加至约 10MB。
- 如何开启 Prometheus 指标导出?由 AI 生成
- 指标导出默认是关闭的。需要在启动时添加 CLI 参数 `-prometheus_enabled` 来开启。开启后,默认会在 2112 端口的 `/metrics` 路径提供指标数据。
- 如何获取攻击者的地理位置信息?由 AI 生成
- 通过设置 `-geoip_supplier` 参数开启。可以选择 `ip-api` 使用在线服务(需注意其查询频率和商业限制),或者选择 `max-mind-db` 配合 `-max_mind_db` 参数指定本地 MaxMind 数据库文件路径来离线解析。
- 默认监听的端口是多少?可以修改吗?由 AI 生成
- SSH 陷阱默认监听 2222 端口。可以通过 `-port` 参数修改,并且支持提供多个 `-port` 标志来同时监听多个端口。
- 如何使用 Docker 运行 endlessh-go?由 AI 生成
- 可以使用命令 `docker run -d -p 2222:2222 shizunge/endlessh-go -logtostderr -v=1` 来以后台模式运行容器,并将主机的 2222 端口映射到容器的 2222 端口。
这个产品还没有主理人
由平台收录或原作者已注销。如果它是你的作品,证明与它的关系后即可成为主理人。
认领这个产品