Windows RDP 爆破检测 · 自动封禁(Windows 防火墙)· 攻击取证 · 云/IDC 归属打标 & 批量举报辅助工具
从火绒日志提取 RDP 攻击 → 统计留痕 → 自动下发 Windows 防火墙封禁 → 输出报告 → 结合 IP-Data 将攻击 IP 按云厂商/IDC 打标并导出举报材料
探索本项目文档 »
查看代码
·
报告 Bug
·
提出新特性
本项目面向防御与取证:不主动扫描、不反制,仅处理本机安全日志与本机防火墙策略。
适用:公网 Windows 主机、暴露 RDP/3389 的环境、需要长期留痕与合规举报的场景。
- Windows 10 / Windows Server(建议 Server)
- 已安装 火绒安全(用于生成拦截/检测日志)
- Python 3.9+(建议 3.11/3.12)
- 需要 管理员权限(创建/更新/删除 Windows 防火墙规则)
- 可选:matplotlib(用于生成图表,不装也能运行)
注意:火绒日志库文件可能会被占用,RDPGuard 会采用 “snapshot 快照复制” 方式读取,以规避
disk I/O error。
- Clone 仓库
git clone https://github.com/ChaosJulien/RDPGuard.git
cd RDPGuard- 安装依赖
pip install -r requirements.txt- 以管理员方式运行 PowerShell / CMD,然后执行
python rdpguard.py运行后会生成:
- 运行日志:
C:\ProgramData\RDPGuard\rdpguard.log - 状态库:
C:\ProgramData\RDPGuard\state.db - 报告面板:
C:\ProgramData\RDPGuard\report.html - 快照目录:
C:\ProgramData\RDPGuard\snapshots\YYYYMMDD_HHMMSS\
-
✅ 从火绒数据库(
log.db)解析 RDP 爆破事件(fname=rlogin & detection=RDP) -
✅ 增量采集(
last_ts游标) -
✅ 事件持久化(SQLite
state.db) -
✅ 统计维度:IP 首次/最近出现时间、累计命中次数、时间窗口命中(10m/1d/total)
-
✅ 自动下发 Windows 防火墙封禁规则(Block Inbound)
- 永久封禁:聚合规则(推荐),避免“一 IP 一条规则”导致执行极慢
- 临时封禁:单 IP 单规则,便于到期解封与审计
-
✅ 可视化报告(HTML + 可选图表)
-
✅ 结合 IP-Data:把攻击 IP 按国内云/IDC 厂商归属打标,导出 CSV,用于批量举报
-
读取源 火绒日志库通常位于:
C:\ProgramData\Huorong\Sysdiag\log.db -
快照镜像 复制
log.db(以及-wal/-shm)到快照目录,避免读取时被锁导致 I/O 错误 -
事件抽取 从表(如
HrLogV3_60)读取fname='rlogin'且detail中detection=RDP的记录 从detailJSON 中提取raddr与rdata.raddr[] -
持久化 & 统计 写入
state.db:events(ts, ip):事件流水(用于窗口统计、报表)stats(ip, first_seen, last_seen, hits_total):累计统计bans(ip, kind, reason, expires_at, ...):封禁记录(临时/永久)
-
封禁策略(可配置)
- 10 分钟命中 ≥ N → 临时封禁
- 24 小时命中 ≥ M → 中期封禁
- 累计命中 ≥ K → 永久封禁(聚合规则)
-
输出报告 生成
report.html(+可选图表)
建议仓库结构如下(示例):
RDPGuard/
├── rdpguard.py
├── requirements.txt
├── README.md
├── LICENSE
├── .gitignore
└── tools/
├── export_last30d.py #(可选)导出近30天攻击IP
└── tag_cloud_idc.py #(可选)CIDR 归属打标脚本
运行时生成的数据位于:
C:\ProgramData\RDPGuard\
├── state.db
├── rdpguard.log
├── report.html
├── top_ips.png # 可选
├── daily_hits.png # 可选
└── snapshots\
└── 20260107_225131\
├── log.db
├── log.db-wal # 可选
└── log.db-shm # 可选
在 rdpguard.py 顶部可配置:
- 火绒日志路径(Huorong Sysdiag)
HUORONG_TABLE(默认HrLogV3_60)- 事件保留天数(默认 30 天)
- 封禁阈值/时长(10m/1d/total)
- 防火墙规则命名(聚合规则名、临时规则前缀)
建议:
- 永久封禁使用聚合规则,减少规则数量,提高执行速度与系统稳定性
- 临时封禁用于短期高频爆破(便于自动解封)
-
打开「任务计划程序」
-
创建任务(不是“基本任务”)
-
常规:
- ✅ 使用最高权限运行(必须)
-
触发器:
- 每 5 分钟 / 每 10 分钟运行一次(按你的压力调整)
-
操作:
- 程序/脚本:
python - 参数:
C:\path\to\rdpguard.py - 起始于:脚本所在目录
- 程序/脚本:
SELECT
ip,
COUNT(*) AS hits,
datetime(MIN(ts), 'unixepoch', 'localtime') AS first_seen,
datetime(MAX(ts), 'unixepoch', 'localtime') AS last_seen
FROM events
WHERE ip = '43.157.168.79'
GROUP BY ip;SELECT
ip,
COUNT(*) AS hits_30d,
datetime(MIN(ts), 'unixepoch', 'localtime') AS first_seen,
datetime(MAX(ts), 'unixepoch', 'localtime') AS last_seen
FROM events
WHERE ts >= strftime('%s','now') - 30*86400
GROUP BY ip
ORDER BY hits_30d DESC;说明:如果你要“严格近 30 天且完整”,也可以直接对火绒快照库查询(更权威但更慢)。
为了把攻击 IP 按云厂商/IDC 归属批量分类并导出举报材料,本项目建议使用 IP-Data 维护的云/IDC CIDR 列表。
- 判断一个攻击 IP 是否来自云/IDC(更可能是肉鸡/云主机)
- 按厂商分组(阿里云 / 腾讯云 / 华为云 / 京东云 / UCloud / 金山云…)
- 导出 CSV → 批量提交安全举报工单(更高效率)
example/
├─ last30d_attack_ips.csv
└─ provider/
├─ aliyun-cidr-ipv4.txt
├─ tencent-cidr-ipv4.txt
├─ huawei-cidr-ipv4.txt
├─ jdcloud-cidr-ipv4.txt
├─ ucloud-cidr-ipv4.txt
├─ ksyun-cidr-ipv4.txt
├─ baidu-cidr-ipv4.txt
├─ all-cidr-ipv4.txt
└─ ...(可选:aws/azure/gcp/oracle/...)
last30d_tagged.csv:总表(含 provider 标签)reports/aliyun.csv、reports/tencent.csv…:按厂商拆分的举报清单
你可以直接把 reports/aliyun.csv 当作阿里云工单附件,把 reports/tencent.csv 当作腾讯云工单附件。
A:火绒可能占用数据库并写入 WAL。RDPGuard 通过快照复制读取,避免锁与 I/O 冲突。
A:如果“一 IP 一条规则”,系统会很慢。推荐使用“永久封禁聚合规则”(一个规则承载多个 IP),速度会快很多。
欢迎贡献!你可以通过 Fork 的方式参与:
- Fork 本项目
- 新建分支开发你的功能/修复 (
git checkout -b feature/xxxx) - 提交更改 (
git commit -m 'Add xxxx') - 推送到你的 Fork (
git push origin feature/xxxx) - 在 GitHub 发起 Pull Request
如果你提交的是安全相关增强(例如规则聚合、解析兼容、性能优化、报告增强),我会优先合并。
ChaosJulien(在读大学生) 联系邮箱:chaosjulien@qq.com
如果你在使用中遇到:
- 规则生成异常
- 火绒日志解析兼容问题
- 云/IDC 归属打标需求
- 想要适配其他安全产品日志
欢迎通过 Issue 或邮件联系我。
- 本工具仅读取本地火绒日志,仅修改本机 Windows 防火墙规则。
- 不会外连任何服务器(除可选手动举报外)。
- 不会扫描、探测、反制任何远程主机。
- 所有数据(日志、数据库、报告)均存储于
C:\ProgramData\RDPGuard\,默认对普通用户不可见。
本工具(RDPGuard)按“现状”(AS IS)提供,作者 ChaosJulien 不对其适用性、可靠性、安全性或任何其他方面作出明示或暗示的保证。
- 使用本工具可能修改您的 Windows 防火墙规则,存在误封合法 IP 的风险,请务必在测试环境中验证后再部署到生产环境。
- 封禁策略基于火绒日志解析,若火绒日志格式变更,可能导致解析失败或漏报。
- 作者不对因使用本工具造成的任何直接或间接损失(包括但不限于服务中断、数据丢失、业务影响)承担责任。
- 请勿将本工具用于非法目的。使用者须自行确保其行为符合所在国家/地区的法律法规。
使用即表示您已理解并接受上述风险。
本项目采用 MIT License 开源授权。
完整许可证内容请参阅:LICENSE
- Shields.io
- Choose an Open Source License
- Windows Firewall / PowerShell Cmdlets 文档
- IP 段数据集:IP-Data(云/IDC CIDR 列表维护项目)