NetGazer网络凝视者–SSH/Telnet/数据库蜜罐使用指南

admin 2026-08-21 05:46:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: NetGazer是一款中交互多协议蜜罐,用于诱捕针对服务器的暴力破解与入侵行为。它伪装成Ubuntu22.04服务器,支持SSH、Telnet、MySQL、PostgreSQL、Redis多协议,内置伪Shell和虚拟文件系统。提供Web控制台进行攻击统计和日志分析。部署需在隔离环境,仅用于安全研究与授权环境。 综合评分: 85 文章分类: 红队,安全运营,威胁情报,渗透测试,实战经验


NetGazer 网络凝视者 – SSH/Telnet/数据库蜜罐使用指南

原创

微慑网 微慑网

微慑网

2026年8月20日 16:05 北京

在小说阅读器读本章

去阅读

项目简介

NetGazer 是一款中交互多协议蜜罐,用于诱捕和记录针对服务器的暴力破解与入侵行为。它伪装成真实的 Ubuntu 22.04 服务器,支持 SSH、Telnet、MySQL、PostgreSQL、Redis 多协议诱捕,并内置 Web 可视化控制台。

核心特性:

SSH 服务:伪装 OpenSSH_8.9p1 Ubuntu,任意账号密码均可”登录成功”

Telnet 服务:模拟经典 login 流程

伪 Shell:40+ 命令支持(ls、cd、cat、ps、wget 等)

虚拟文件系统:内存态伪装 Ubuntu 22.04,含诱饵文件

攻击日志:JSONL + SQLite 双写,记录所有攻击行为

Web 控制台:可视化攻击统计、明细查询、用户管理

数据库蜜罐:MySQL、PostgreSQL、Redis 连接即返回认证失败

⚠️ 安全警告:仅用于安全研究与授权环境。蜜罐会吸引真实攻击者,请务必在隔离的测试/专用机器上运行,不要部署在存有敏感数据的生产服务器上。


系统要求

JDK 版本:JDK 25+(必须)

操作系统:Linux / macOS / Windows

内存:最低 512MB(被持续攻击时约需 290MB)

端口:SSH(2222)、Telnet(2323)、MySQL(3306)、PostgreSQL(5432)、Redis(6379)、Web(8080)


快速开始

1. 构建项目

克隆项目git clone https://github.com/AbnerSC/ssh-honeypot-j.gitcd ssh-honeypot-j # 构建(需要 JDK 25+)mvn package

构建成功后,产物位于:target/ssh-honeypot-j.jar(含全部依赖的可执行 jar)

2. 启动蜜罐

使用默认配置启动java -jar target/ssh-honeypot-j.jar # 指定配置文件启动java -jar target/ssh-honeypot-j.jar -c /path/to/config.yaml

生产环境推荐参数(优化内存占用):

java -XX:+UseCompactObjectHeaders -jar target/ssh-honeypot-j.jar

启动成功后会看到:

================================================  SSH/Telnet/DB 蜜罐  v1.1.2  (Java 25)  仅用于安全研究与授权环境,请勿用于非法用途================================================ 蜜罐运行中: SSH=2222, Telnet=2323, MySQL=3306, PostgreSQL=5432, Redis=6379, Web=8080, 主机名=ubuntu, 日志=logs/honeypot.jsonl, 数据库=db/database.db按 Ctrl+C 停止。

3. 测试蜜罐

SSH 连接测试ssh -p 2222 [email protected]# 密码:123456(或其他配置中的弱口令) # Telnet 连接测试telnet 127.0.0.1 2323 # 非交互式命令执行ssh -p 2222 [email protected] ”uname -a; cat /etc/passwd” # Web 控制台访问# 浏览器打开:http://127.0.0.1:8080/# 默认账号:admin / admin123(首次登录强制修改密码)

配置文件详解

配置文件 config.yaml 位于项目根目录,支持以下配置项:

伪装主机名(Shell 提示符、uname/hostname 等处展示)hostname: ubuntu # SSH 服务配置ssh:  enabled: true # 是否启用  port: 2222 # 监听端口 # Telnet 服务配置telnet:  enabled: true  port: 2323 # MySQL 蜜罐(连接即返回认证失败)mysql:  enabled: true  port: 3306 # PostgreSQL 蜜罐postgresql:  enabled: true  port: 5432 # Redis 蜜罐redis:  enabled: true  port: 6379 # 日志配置log:  file: logs/honeypot.jsonl # JSONL 攻击日志  db: db/database.db # SQLite 数据库(Web 控制台使用)  ipdb_v4: db/ip2region_v4.xdb # IP 归属地库(IPv4)  ipdb_v6: db/ip2region_v6.xdb # IP 归属地库(IPv6) # Web 控制台配置web:  enabled: true  port: 8080  sessionTimeoutMinutes: 30 # 登录会话超时时间 # 登录认证配置auth:  maxFailures: 3 # 连续失败次数后锁定 IP  windowMinutes: 5 # 失败计数窗口(分钟)  lockMinutes: 60 # IP 锁定时长(分钟)  credentials: # 密码本(用户名 -> 密码列表)    root: [”123456”, ”toor”, ”password”, ”root123”]    admin: [”admin123”, ”admin”, ”123456”]    ubuntu: [”ubuntu”, ”123456”]  # ... 更多账号

配置说明:

每个账号可配置多个密码,命中任意一个即视为登录成功

不配置 credentials 时使用内置默认弱口令本

IP 锁定状态缓存在内存中,进程重启后清空


Docker 部署(推荐)

1. 创建 docker-compose.yml

services:  ssh-honeypot-j:    image: scdm/ssh-honeypot-j:latest    container_name: ssh-honeypot-j    restart: always    volumes:      - ${PWD}/logs:/app/logs
挂载日志目录      - ${PWD}/db:/app/db # 挂载数据库目录    environment:      - TZ=Asia/Shanghai # 时区设置    ports:      - 22:2222 # SSH 端口      - 23:2323 # Telnet 端口      - 3306:3306 # MySQL 端口      - 5432:5432 # PostgreSQL 端口      - 6379:6379 # Redis 端口      - 127.0.0.1:11800:8080 # Web 控制台(建议仅本地访问)    mem_limit: 512m # 内存限制    healthcheck:      test: [”CMD”, ”curl”, ”-f”, ”http://127.0.0.1:8080”]      interval: 10s      timeout: 3s      retries: 3      start_period: 20s

2. 启动容器

mkdir logs dbdocker compose up -d

3. 自定义配置

如需自定义配置,将 config.yaml 挂载到容器:

volumes:  - ${PWD}/logs:/app/logs  - ${PWD}/db:/app/db  - ${PWD}/config.yaml:/app/config.yaml

4. 更新 IP 归属地库

下载最新的 ip2region 库文件放入 db/ 目录:

下载地址:https://github.com/lionsoul2014/ip2region

文件名:ip2region_v4.xdb、ip2region_v6.xdb


映射到真实端口(Linux)

如果需要让蜜罐监听标准的 22/23 端口,使用 iptables 端口转发:

先确保真实 SSH 服务已迁移到其他端口(如 1222)# 修改 /etc/ssh/sshd_config:Port 1222# systemctl restart sshd # 端口转发规则sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222sudo iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 2323 # 保存规则(Debian/Ubuntu)sudo apt install -y iptables-persistentsudo netfilter-persistent save

⚠️ 重要提示:

务必先确认真实 SSH(1222 端口)能正常登录,再执行端口转发

避免把自己锁在服务器外面


Web 控制台使用

访问方式

启动蜜罐后,浏览器访问 http://<主机IP>:8080/

首次登录

默认管理员账号:admin

默认密码:admin123

首次登录强制修改密码

功能模块

总览指标:会话数、登录尝试次数、命令数、攻击 IP 数

趋势图表:近 N 天攻击趋势(ECharts 图表)

协议分布:SSH/Telnet/MySQL/PostgreSQL/Redis 占比

Top 榜单:Top 攻击 IP、Top 用户名、Top 口令

支持五类事件的分页查询:

会话记录:所有连接会话

登录尝试:用户名/密码组合

命令记录:攻击者执行的命令

恶意下载:wget/curl 下载的 URL

IP 锁定:被锁定的攻击 IP

过滤条件:

来源 IP

用户名

协议类型

关键字

时间范围

角色:admin(全部权限)、viewer(仅查看)

操作:创建/禁用/删除账号、重置口令

安全特性

口令以 PBKDF2-HMAC-SHA256 加盐哈希存储

登录态由服务端 Session(HttpOnly Cookie)承载

连续 5 次登录失败锁定来源 IP 15 分钟

会话默认 30 分钟超时

⚠️ 安全建议:8080 端口仅对运维网段开放,不要将管理控制台直接暴露到公网。


日志分析

JSONL 日志格式

日志文件:logs/honeypot.jsonl

每行一个 JSON 事件,包含以下字段:

{&nbsp; ”ts”: ”2026-08-20&nbsp;10:30:45.123”,&nbsp; ”event”: ”auth_attempt”,&nbsp; ”session”: ”s1-1724155845123”,&nbsp; ”protocol”: ”ssh”,&nbsp; ”src_ip”: ”203.0.113.44”,&nbsp; ”username”: ”root”,&nbsp; ”password”: ”123456”,&nbsp; ”success”: ”true”,&nbsp; ”location”: ”中国 广东省 深圳市”}

事件类型:

session_open

:会话开始

auth_attempt

:登录尝试

command

:命令执行

download

:恶意下载

session_close

:会话结束

ip_locked

:IP 被锁定

使用 jq 分析

统计攻击 IP Top 10cat&nbsp;logs/honeypot.jsonl | jq -r&nbsp;'.src_ip'&nbsp;|&nbsp;sort&nbsp;|&nbsp;uniq&nbsp;-c |&nbsp;sort&nbsp;-rn |&nbsp;head&nbsp;-10&nbsp;# 统计登录成功的凭证cat&nbsp;logs/honeypot.jsonl | jq -r&nbsp;'select(.event==”auth_attempt” and .success==”true”) | ”(.username):(.password)”'&nbsp;|&nbsp;sort&nbsp;|&nbsp;uniq&nbsp;-c&nbsp;# 统计恶意下载 URLcat&nbsp;logs/honeypot.jsonl | jq -r&nbsp;'select(.event==”download”) | .url'&nbsp;# 按协议统计cat&nbsp;logs/honeypot.jsonl | jq -r&nbsp;'.protocol'&nbsp;|&nbsp;sort&nbsp;|&nbsp;uniq&nbsp;-c |&nbsp;sort&nbsp;-rn

对接 ELK

JSONL 格式可直接导入 Elasticsearch:

使用 logstash 或 filebeat 读取input {&nbsp; file {&nbsp; &nbsp; path => ”/path/to/logs/honeypot.jsonl”&nbsp; &nbsp; codec => json&nbsp; }}

虚拟文件系统

蜜罐内置了伪装的 Ubuntu 22.04 文件系统,包含以下诱饵文件:

敏感文件

/etc/passwd

:伪造的系统用户列表

/etc/shadow

:伪造的密码哈希

/root/.my.cnf

:伪造的 MySQL 密码(Pr0d#Mysql!2024)

/root/.bash_history

:伪造的命令历史

/root/notes.txt

:伪造的待办事项(含假密码提示)

系统文件

/etc/hostname

:伪装主机名

/etc/hosts

:伪造的内网 IP

/etc/ssh/sshd_config

:伪造的 SSH 配置

/var/log/auth.log

:伪造的认证日志

/proc/cpuinfo

:伪造的 CPU 信息

/proc/meminfo

:伪造的内存信息

用户目录隔离

每个登录用户自动创建独立的 /home/ 目录

用户默认目录拒绝其他用户访问(权限检查)

攻击者的增删改操作仅影响内存,不写入真实磁盘


支持的 Shell 命令

蜜罐支持 40+ 常用 Linux 命令:

文件操作:

ls

、cd、pwd、cat、touch、mkdir、rm、cp、mv

系统信息:

whoami

、id、uname、hostname、ps、w、df、free、top

网络工具:

ifconfig

、netstat、ss、ping、wget、curl

其他:

echo

、history、su、sudo、apt、env

特殊语法支持:

命令分隔:;、&&

管道:|(取首命令)

重定向:>、>>(写入虚拟文件系统)

命令响应特性:

随机延迟:避免秒回暴露蜜罐特征

真实输出:CPU、内存、网络信息均伪造得合理


安全隔离建议

1. 网络隔离

禁止蜜罐访问内网(Docker 部署时)iptables&nbsp;-I FORWARD -s&nbsp;172.17.0.0/16&nbsp;-d&nbsp;192.168.0.0/16&nbsp;-j DROP

2. 资源限制

Docker 部署时设置内存限制:

mem_limit:&nbsp;512m

3. 文件系统隔离

蜜罐内所有文件操作都是虚拟的,不会写入真实磁盘

攻击者上传的文件会被捕获保存,但不会执行

4. 端口暴露

蜜罐端口(22/23/3306/5432/6379)可对外暴露

Web 控制台(8080)建议仅对运维网段开放


常见问题

Q1: 启动时报错 “Unsupported class file major version 69”

原因:JDK 版本过低,需要 JDK 25+

解决:升级 JDK 到 25 或更高版本

Q2: 端口被占用

原因:22/23/3306/5432/6379/8080 端口已被其他服务占用

解决:

修改 config.yaml 中的端口配置

或停止占用端口的服务

或使用 iptables 端口转发

Q3: Web 控制台无法访问

检查:

蜜罐是否正常启动(查看控制台输出)

8080 端口是否被防火墙拦截

SQLite 数据库是否正常初始化(查看 db/database.db 是否存在)

Q4: 攻击者执行命令后无响应

原因:部分命令可能未实现或响应延迟

解决:

检查日志确认命令是否被记录

蜜罐命令响应有随机延迟(0.5-2 秒),属于正常现象

Q5: 如何更新 IP 归属地库

步骤:

下载最新的 ip2region 库:https://github.com/lionsoul2014/ip2region

将 ip2region_v4.xdb 和 ip2region_v6.xdb 放入 db/ 目录

重启蜜罐



项目信息

GitHub:https://github.com/AbnerSC/ssh-honeypot-j

许可证:Apache-2.0

语言:Java

作者:AbnerSC

已编译下载:

我用夸克网盘给你分享了「ssh-honeypot-j.jar」,点击链接或复制整段内容,打开「夸克APP」即可获取。链接:https://pan.quark.cn/s/0eab9f66314a

免责声明

本项目仅用于安全研究与授权环境。使用本工具进行未经授权的测试或攻击属于违法行为,使用者需自行承担法律责任。

请勿将本工具用于以下用途:

未经授权的攻击测试

非法入侵他人系统

收集他人敏感信息

任何违反法律法规的行为



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:微慑网 微慑网 微慑网《NetGazer 网络凝视者 – SSH/Telnet/数据库蜜罐使用指南》

评论:0   参与:  0