# mstsc-defender **Repository Path**: newpc/mstsc-defender ## Basic Information - **Project Name**: mstsc-defender - **Description**: 本工具通过读取 Windows 安全日志监控所有 RDP 登录尝试,自动封禁暴力破解 IP(加入 Windows 防火墙黑名单),让攻击 IP 无法再发起 RDP 连接。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-08 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MSTSC 远程桌面防护工具 > 解决公网映射 Windows 远程桌面(RDP)被暴力破解攻击导致账户锁定的问题。 ## 背景 把 Windows MSTSC 远程桌面映射到公网后,每天都会遭到大量暴力破解登录尝试,触发 Windows 账户锁定策略,导致自己也无法登录。 本工具通过读取 Windows 安全日志监控所有 RDP 登录尝试,自动封禁暴力破解 IP(加入 Windows 防火墙黑名单),让攻击 IP 无法再发起 RDP 连接。 ## 功能特性 - **📊 仪表盘** — 今日尝试/失败/成功/已封禁 4 个统计卡片,24 小时登录趋势曲线,Top 10 攻击 IP 柱状图(点击跳转登录记录) - **📋 登录记录** — 实时展示所有 RDP 登录尝试,支持按状态/时间/IP/用户名筛选,右键封禁 IP / 加白名单 / 复制 - **🚫 封禁 IP 管理** — 手动添加/解封 IP,全部解封,与 Windows 防火墙实时同步 - **⚡ 自动封禁** — 滑动窗口计数,时间窗口内失败次数达阈值自动封禁(可配定时解禁) - **🌍 IP 归属地** — 在线查询 ip-api.com,国家/地区/城市/ISP,SQLite 永久缓存 - **⚙ 设置** — 自动封禁规则、白名单、GeoIP 开关、数据管理 ## 截图 > 界面采用深色主题,侧边栏导航,共 4 个功能页面。以下为演示数据截图。 ### 📊 仪表盘 今日攻击概览 + 24 小时登录趋势 + Top 10 攻击 IP(点击柱子可跳转登录记录筛选该 IP)。 ![仪表盘](screenshots/01_dashboard.jpg) ### 📋 登录记录 实时展示所有 RDP 登录尝试,支持按状态/时间/IP/用户名筛选,右键可封禁 IP 或加入白名单。 ![登录记录](screenshots/02_login_log.jpg) ### 🚫 封禁 IP 管理 已被加入 Windows 防火墙黑名单的 IP,支持手动添加/解封/全部解封,与防火墙实时同步。 ![封禁 IP 管理](screenshots/03_banned_ips.jpg) ### ⚙ 设置 配置自动封禁规则、白名单、GeoIP 开关与数据管理。 ![设置](screenshots/04_settings.jpg) ## 安装与运行 ### 依赖 - Windows 10/11 - Python 3.10+(开发用 3.13) - 管理员权限(读安全日志 + 改防火墙需要) ### 从源码运行 ```powershell pip install -r requirements.txt python main.py ``` 程序会自动检测管理员权限,非管理员会弹出 UAC 提权重启。 ### 开发模式(非管理员调试 UI) ```powershell python main.py --dev ``` 跳过管理员检查,但防火墙/安全日志功能不可用。 ## 打包成 EXE ```powershell pyinstaller --noconsole --onefile --uac-admin ` --name MSTSCDefender ` --collect-all PySide6 ` --collect-all pyqtgraph ` main.py ``` 生成 `dist\MSTSCDefender.exe`,双击运行会自动请求管理员权限。 ## 使用说明 1. **管理员运行** — 双击 `MSTSCDefender.exe`,同意 UAC 提权 2. **仪表盘** — 查看今日攻击概览和趋势 3. **登录记录** — 筛选「失败」状态查看攻击者,右键可手动封禁或加白名单 4. **自动封禁** — 默认「5 分钟内失败 10 次自动永久封禁」,可在设置页调整 5. **白名单** — 把自己常用的 IP 加入白名单,避免误封 6. **封禁管理** — 查看已封禁 IP 列表,可手动解封 ## 配置说明 配置文件位于 `%APPDATA%\MstscDefender\config.json`: | 配置项 | 默认值 | 说明 | |--------|--------|------| | `auto_ban.enabled` | `true` | 启用自动封禁 | | `auto_ban.window_minutes` | `5` | 统计时间窗口(分钟) | | `auto_ban.threshold` | `10` | 窗口内失败次数阈值 | | `auto_ban.ban_hours` | `0` | 封禁时长(0=永久) | | `whitelist` | `["127.0.0.1"]` | 白名单 IP 列表 | | `geoip_enabled` | `true` | 启用 GeoIP 在线查询 | 数据库位于 `%APPDATA%\MstscDefender\mstsc_defender.db`(SQLite)。 ## 技术栈 - **UI** — PySide6(Qt 官方 LGPL)+ 纯 QSS 深色主题 - **事件日志** — pywin32 现代 Evt API(EvtQuery/EvtNext/EvtRender) - **防火墙** — netsh advfirewall(每 IP 独立规则,前缀 `MSTSC-Defender-Ban-`) - **图表** — pyqtgraph(趋势曲线 + 柱状图) - **GeoIP** — ip-api.com 在线 + SQLite 缓存(令牌桶限流) - **数据库** — sqlite3 内置(WAL 模式) - **打包** — PyInstaller(`--onefile --uac-admin`) ## 注意事项 - **必须管理员权限运行**:读 Security 日志和操作防火墙都需要 - **首次启动稍慢**:读取最近 7 天历史日志需几秒 - **GeoIP 需联网**:离线时归属地显示「未知」,不阻塞其他功能 - **防火墙规则命名**:`MSTSC-Defender-Ban-{IP}`,可手动用 `netsh advfirewall firewall show rule name=all` 查看 - **账户锁定策略**:建议同时在 Windows 组策略中配置账户锁定阈值(如 5 次失败锁定 30 分钟),本工具负责在锁定前封禁攻击 IP ## 许可证 MIT