Security Lab
LightHoney 安全实验站
面向 Web 与 SSH 攻击流量观测的轻量级蜜罐实验站,结合 Nginx HTTPS 入口、Flask WebHoney、Cowrie SSH 蜜罐、统一事件采集和风险联动策略,记录访问行为、上传尝试、敏感路径探测与 SSH 交互事件。
站点通过 honey.vertexf.top 提供 HTTPS 入口,Nginx 将 Web 流量反向代理至本机 127.0.0.1:5100 的 Flask WebHoney 服务,并对普通访问与上传入口设置不同限流策略。
WebHoney 以 Gunicorn 托管 Flask 应用,包含首页诱导、管理登录诱导、上传中心、伪装配置文件、API 鉴权入口、搜索/下载入口、catch-all 记录入口和沙箱控制台。
上传入口采用 512 KB 大小限制、文件扩展名检查、PE / ELF / 脚本头识别、危险内容片段扫描、SHA-256 记录和隔离区留存策略,高风险文件只记录元数据与指标。
Cowrie SSH 蜜罐以独立 lhcowrie 用户运行,模拟 OpenSSH 服务与 Linux shell 环境,记录连接、客户端版本、密钥交换、登录尝试、命令输入和文件下载等事件。
统一事件采集服务将 WebHoney JSONL、Nginx catch-all / shadow 日志和 Cowrie JSON 日志规范化为统一事件流,并为每条事件生成 event_id、模块、来源、路径、风险分和原始上下文。
风险引擎按照最近 60 秒风险分、7 天累计风险、白名单和事件类型生成分级动作,覆盖敏感路径限制、高成本操作关闭、告警页、限速和临时封禁等策略。
WebHoney systemd 服务启用 NoNewPrivileges、PrivateTmp、PrivateDevices、ProtectSystem=strict、ProtectHome=true、受限读写路径、能力集清空和 UMask=0077 等运行加固。
Snapshot
攻击观测数据
3042087 日统一事件风险报告在 2026-06-08 23:48 CST 统计的 total_events_7d。
34517 日来源地址风险报告在 2026-06-08 23:48 CST 统计的 total_ips_7d。
30678Cowrie 日志行数Cowrie JSON 日志行数,反映 SSH 蜜罐交互记录规模。
Timeline
系统链路
Web 入口Nginx 监听 honey.vertexf.top 的 80 / 443 端口,HTTP 请求跳转 HTTPS,HTTPS 请求进入限流、敏感路径策略和 WebHoney 反向代理链路。
WebHoney 蜜罐Flask 应用提供管理入口、上传入口、伪装配置、API 鉴权、搜索、下载和 catch-all 路由,访问行为写入 /var/log/lighthoney/web_honey.jsonl。
SSH 蜜罐Cowrie 运行在独立用户与独立目录下,监听 SSH 蜜罐端口并记录连接、登录、命令与下载行为。
统一采集event_collector.py 读取 WebHoney、Nginx catch-all、Nginx shadow 和 Cowrie 日志,将不同来源事件规范化为统一 JSONL。
风险分级risk_engine.py 基于事件类型、最近 60 秒风险分、7 天风险累计和白名单生成 Level 1 至 Level 5 的动作建议。
联动防护current_actions.json 由风险引擎输出,Nginx guard 根据风险等级限制敏感路径、高成本操作、告警页和限速策略;Level 5 可进入 ipset 临时封禁链路。
Methods
技术栈与实现方法
Nginx承担 honey.vertexf.top 的 HTTPS 入口、HTTP 到 HTTPS 跳转、反向代理、访问日志、上传限流、普通访问限流和风险动作 guard。
Let’s Encrypt为 honey.vertexf.top 提供 TLS 证书与 Nginx HTTPS 配置。
Flask实现 WebHoney 蜜罐页面、伪装入口、上传检查、catch-all 记录和 Web 事件写入。
Gunicorn以单 worker 绑定 127.0.0.1:5100 运行 Flask 应用,由 systemd 托管并写入独立访问与错误日志。
Cowrie提供 SSH 蜜罐能力,记录连接、客户端指纹、登录尝试、命令交互和文件下载事件。
systemd托管 WebHoney、Cowrie 和统一事件采集服务,并为 WebHoney 设置严格的运行时隔离与读写路径限制。
JSONLWebHoney、Cowrie、统一事件、风险动作和 IP 风险汇总均采用 JSONL 或 JSON 文件便于持续追加、轮转和分析。
ipset风险引擎在 Level 5 场景下可将公网 IPv4 写入临时封禁集合。
iptables作为 ipset 封禁集合的 INPUT 与 raw PREROUTING 联动入口,降低后端服务压力。
Python实现 Flask 蜜罐、规则分类、统一事件采集、风险引擎、风险汇总和动作渲染。
Mermaid
事件与风险联动
flowchart LR A[Internet Web traffic] --> B[Nginx HTTPS entrance] B --> C[Rate limiting and sensitive path policy] C --> D[WebHoney Flask honeypot] D --> E[WebHoney JSONL events] F[SSH probing traffic] --> G[Cowrie SSH honeypot] G --> H[Cowrie JSON events] I[Nginx catch-all and shadow logs] --> J[Unified event collector] E --> J H --> J J --> K[Risk engine] K --> L[Current action policy] L --> M[Nginx guard and ipset policy]