icepaule/IceLaborVPN

GitHub: icepaule/IceLaborVPN

为恶意软件分析实验室提供基于零信任架构的安全远程访问网关,通过浏览器实现无需客户端的 SSH/VNC/RDP 连接,内置多层纵深防御与合规审计能力。

Stars: 0 | Forks: 0

# IceLaborVPN **用于恶意软件分析实验室的安全零信任远程访问网关** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![符合 DORA 规范](https://img.shields.io/badge/DORA-Compliant-blue.svg)](docs/OPERATIONS-MANUAL.md#4-dora-compliance) [![MITRE ATT&CK](https://img.shields.io/badge/MITRE-ATT%26CK-red.svg)](docs/OPERATIONS-MANUAL.md#5-mitre-attck-mapping) ## 概述 IceLaborVPN 提供安全的、基于浏览器的对隔离恶意软件分析基础设施的远程访问,无需安装客户端软件。专为受监管环境(DORA、ISO 27001)设计,它通过全面的审计日志实现了深度防御安全。 ![Portal Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/663339af2e035335.png) ### 核心特性 - **零信任架构** - 采用 Headscale 控制平面的 WireGuard VPN mesh 网络 - **HTML5 远程访问** - 通过浏览器进行 SSH、VNC、RDP 访问 (Apache Guacamole) - **多因素身份验证** - 所有用户强制使用 TOTP/2FA - **会话录制** - 符合合规性的完整审计追踪 - **渐进式暴力破解防护** - 具有递增封禁时间(5 分钟 → 15 分钟 → 60 分钟)的多层防御 - **威胁情报黑名单** - 通过 6 个 OSINT 数据源(Spamhaus、Tor、Emerging Threats、Blocklist.de、AbuseIPDB)进行主动拦截 - **AbuseIPDB 集成** - 所有 11 个 fail2ban 监狱会将恶意 IP 上报给社区威胁情报 - **Fail2ban Web 仪表板** - 直接从门户查看和管理封禁(登录后) - **Tailscale 网络仪表板** - 带有在线/离线指示器的实时节点状态 - **部署清单** - 带有进度条和审计追踪的交互式部署跟踪器 - **实时警报** - 具有防洪去重和每个监牢特定原因消息的 Pushover 通知 - **扫描器检测** - 自动检测并封禁 nmap/漏洞扫描器 - **攻击检测** - 目录遍历、敏感文件探测、PHP/管理后台探测、RCE 尝试将被自动封禁 - **符合 DORA/MITRE 规范** - 为监管机构提供全面的文档 ## 截图 ### 登录门户 ![Guacamole Login](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/25172867d9035337.png) *带有 TOTP/2FA 身份验证的安全登录* ### 仪表板 ![Guacamole Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/282bdcdd31035338.png) *连接概览,可快速访问实验室系统* ### SSH 会话 ![SSH Session](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/da71731b5e035340.png) *带有会话录制的 HTML5 SSH 终端* ### 安全警报 ![Pushover Alert](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/eb906bde52035342.png) *通过 Pushover 发送的实时安全通知* ## 架构 ![IceLaborVPN Architecture](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5f69d78313035343.svg) *带有 WireGuard VPN mesh 和 HTML5 远程访问的零信任架构* ## 快速开始 ### 前置条件 - Ubuntu 22.04 LTS 或 Debian 12 - 公网 IPv4 地址 - 指向您服务器的 DNS A 记录 - Pushover 账户(用于通知) ### 安装说明 ``` # 克隆仓库 git clone https://github.com/icepaule/IceLaborVPN.git cd IceLaborVPN # 配置环境 cp .env.example .env nano .env # Fill in all values! # 运行安装程序 chmod +x scripts/install.sh sudo ./scripts/install.sh ``` ### 首次登录 1. 访问 `https://your-domain.com/guacamole/` 2. 使用配置好的管理员凭据登录 3. 使用身份验证器应用(Google/Microsoft Authenticator)扫描二维码 4. 输入 6 位 TOTP 验证码 5. 访问您的实验室系统! ## 配置 ### 环境变量 | 变量 | 描述 | 必填 | |----------|-------------|----------| | `HEADSCALE_DOMAIN` | 您的公共域名 | 是 | | `GUAC_ADMIN_PASSWORD` | 管理员密码(最少 12 个字符) | 是 | | `GUAC_DB_PASSWORD` | 数据库密码 | 是 | | `PUSHOVER_APP_TOKEN` | Pushover 应用程序 Token | 是 | | `PUSHOVER_USER_KEY` | Pushover 用户密钥 | 是 | | `ABUSEIPDB_API_KEY` | 用于上报和黑名单的 AbuseIPDB API 密钥 | 是 | | `SSL_EMAIL` | 用于 Let's Encrypt 的电子邮件 | 是 | 有关所有选项,请参见 [.env.example](.env.example)。 ### 添加连接 编辑 `/opt/guacamole/db-init/02-admin-user.sql` 或使用 Guacamole Web 界面: 1. 以管理员身份登录 2. 设置 → 连接 → 新建连接 3. 配置 SSH/VNC/RDP 参数 4. 分配给用户/组 ### 添加 Tailscale 节点 ``` # 在网关上 /opt/IceLaborVPN/scripts/headscale-onboard.sh --generate-key # 在新节点上 sudo tailscale up --login-server https://your-domain.com \ --authkey ``` ### 自动化 Endpoint 部署 用于通过 ManageEngine Endpoint Central 或类似 MDM 解决方案进行企业部署: ``` # 部署脚本位于 deployment/ 目录中 ls deployment/ # Windows(以 SYSTEM 身份运行 PowerShell) deploy-tailscale-windows.ps1 # Linux(以 root 身份运行 Bash) deploy-tailscale-linux.sh # macOS(以 root 身份运行 Bash) deploy-tailscale-macos.sh ``` 有关配置说明,请参见 [deployment/README.md](deployment/README.md)。 ### Guacamole 自动同步 自动为所有 Headscale 节点创建 Guacamole 连接: ``` # 安装同步脚本 sudo cp deployment/headscale-guacamole-sync.py /opt/guacamole/ sudo chmod +x /opt/guacamole/headscale-guacamole-sync.py # 手动运行 sudo python3 /opt/guacamole/headscale-guacamole-sync.py # 或者设置 cron(每 5 分钟一次) echo '*/5 * * * * root /usr/bin/python3 /opt/guacamole/headscale-guacamole-sync.py >> /var/log/headscale-sync.log 2>&1' | sudo tee /etc/cron.d/headscale-sync ``` 该脚本会自动扫描所有在线节点的 SSH (22)、RDP (3389)、VNC (5900) 端口,并自动管理 Guacamole 连接。 ## 安全特性 ### 身份验证栈 | 层级 | 防护措施 | |-------|------------| | 威胁情报黑名单 | 通过 OSINT 源主动拦截约 30,000+ 个已知恶意 IP | | AbuseIPDB 上报 | 所有封禁均上报至社区威胁情报网络 | | TLS 1.3 | 传输层加密 | | nginx 速率限制 | 5 次登录/分钟,30 次请求/秒 | | Guacamole 暴力破解防护 | 5 次尝试 → 封禁 5 分钟 | | Fail2ban (11 个 Jails) | 渐进式封禁:5 分钟 → 15 分钟 → 60 分钟 → 1 周(重犯) | | 扫描器检测 | 在所有端口自动封禁 nmap/漏洞扫描器 | | 凭据窃取检测 | .env/.git 探测 → 立即封禁(15 分钟 → 1 小时 → 24 小时) | | 目录遍历检测 | `../`、`%2e%2e`、`/etc/passwd` → 立即封禁 1 小时 | | 敏感文件探测检测 | `.env`、`.git/`、`wp-config`、credentials → 立即封禁 1 小时 | | PHP/管理面板探测检测 | `.php`、`phpmyadmin`、`/admin/` → 2 次尝试 → 封禁 1 小时 | | RCE/Shell 注入检测 | `cgi-bin`、Log4Shell/JNDI、扫描器 User-Agent → 立即封禁 1 小时 | | TOTP/2FA | 强制双重验证 | | 会话超时 | 60 分钟不活动 | ### Fail2ban Web 仪表板 登录后,门户会显示一个实时的 Fail2ban 状态面板: - **概览** - 当前被封禁的 IP、活跃的 jails、总失败尝试次数 - **每个 Jail 详情** - 按 jail 分类展开的封禁 IP 列表 - **管理** - 直接从浏览器解封或重新封禁 IP - **渐进式封禁** - 屡次违规者将获得递增的封禁时间(5 分钟 → 15 分钟 → 60 分钟) ### Tailscale 网络仪表板 所有 Headscale/Tailscale 节点的实时视图: - **节点状态** - 带有最后活跃时间戳的在线/离线指示器 - **网络概览** - 总节点数、在线和离线节点计数 - **自动刷新** - 手动刷新按钮以更新状态 ### 部署清单 用于多步骤基础设施发布的交互式部署跟踪器: - **阶段与组** - 按部署阶段和目标系统组织的步骤 - **进度跟踪** - 带有已完成/待处理/已跳过计数器的可视化进度条 - **状态切换** - 点击复选框以将步骤标记为完成、跳过或还原 - **审计追踪** - 每次状态更改的时间戳和用户名 - **可折叠** - 已完成的阶段自动折叠,活跃阶段保持展开 ### 监控与警报 具有防泛洪去重功能(同一 IP 在 5 分钟内仅通知一次)的实时 Pushover 通知: - 成功登录 - 会话启动 (SSH/VNC/RDP) - IP 封禁 (Fail2ban) 以及 GeoIP 信息 - 扫描器/攻击检测 - 服务故障 ### 威胁情报黑名单 使用专用 nftables 表(`inet blocklist-table`,优先级 -10)主动拦截已知恶意 IP: | 数据源 | 来源 | 更新间隔 | 描述 | |------|--------|-----------------|-------------| | Spamhaus DROP | spamhaus.org | 12 小时 | 被劫持的/垃圾邮件网络(IPv4 + IPv6) | | Tor 出口节点 | dan.me.uk | 6 小时 | Tor 出口中继 IP | | Emerging Threats | emergingthreats.net | 24 小时 | 已知攻击源 | | Blocklist.de | blocklist.de | 6 小时 | 活跃攻击源(SSH、邮件、Web) | | AbuseIPDB | abuseipdb.com | 24 小时 | 社区上报的恶意 IP(置信度 >90%) | 特性: - 通过 systemd 实现重启持久化(无需 nftables 服务即可在重启后存活) - 针对自身基础设施的白名单保护 - 用于离线弹性的缓存数据源 - 数据源更新失败时的 Pushover 警报 ``` # 手动状态检查 /opt/IceLaborVPN/scripts/update-blocklists.sh --status # Timer 概览 systemctl list-timers 'icelabor-blocklist*' ``` ### AbuseIPDB 集成 所有 11 个 fail2ban jail 会自动将封禁的 IP 及其相应的攻击类别上报给 [AbuseIPDB](https://www.abuseipdb.com/): | Jail | AbuseIPDB 类别 | 触发条件 | |------|---------------------|---------| | sshd | 暴力破解, SSH | 5 次失败尝试 | | guacamole | 暴力破解, Web 应用攻击 | 5 次失败尝试 | | nginx-limit-req | Web 应用攻击, 恶意 Web 机器人 | 10 次速率限制违规 | | nginx-scan | 端口扫描, Web 应用攻击 | 5 次可疑的 404/400 响应 | | nginx-cred-harvest | Web 应用攻击, 黑客攻击 | 2 次凭据文件探测 | | nginx-http-auth | 暴力破解, Web 应用攻击 | 3 次 HTTP 认证失败 | | nginx-traversal | 黑客攻击, Web 应用攻击 | 1 次目录遍历尝试 | | nginx-sensitive-files | 黑客攻击, Web 应用攻击 | 1 次敏感文件探测 | | nginx-php-probes | 黑客攻击, Web 应用攻击 | 2 次 PHP/管理面板探测 | | nginx-rce-attempts | 黑客攻击, Web 应用攻击 | 1 次 RCE/Shell 注入尝试 | | recidive | 暴力破解(屡犯者) | 12 小时内 3 次封禁 → 封禁 1 周 | ### 合规性 - **DORA** - 运维手册中的完整映射 - **MITRE ATT&CK** - 检测规则和缓解措施 - **ISO 27001** - 访问控制文档 - **审计追踪** - 5 年会话录制保留期 ## 文档 | 文档 | 描述 | |----------|-------------| | [运维手册](docs/OPERATIONS-MANUAL.md) | 完整的 ITSO 手册 (DORA/MITRE) | | [安装指南](docs/INSTALLATION.md) | 逐步设置说明 | | [用户指南](docs/USER-GUIDE.md) | 终端用户文档 | | [故障排除](docs/TROUBLESHOOTING.md) | 常见问题及解决方案 | ## 目录结构 ``` IceLaborVPN/ ├── .env.example # Environment template ├── README.md # This file ├── LICENSE # MIT License ├── deployment/ # Endpoint deployment scripts │ ├── README.md # Deployment documentation │ ├── deploy-tailscale-windows.ps1 # Windows deployment │ ├── deploy-tailscale-linux.sh # Linux deployment │ ├── deploy-tailscale-macos.sh # macOS deployment │ ├── headscale-guacamole-sync.py # Auto-sync connections │ └── checklist.json.example # Deployment checklist template ├── scripts/ │ ├── install.sh # Main installer │ ├── backup.sh # Backup script │ ├── pushover-notify.sh # Notification script │ ├── guacamole-monitor.sh # Session monitor │ ├── headscale-onboard.sh # Node onboarding │ └── update-blocklists.sh # Threat intelligence blocklist manager ├── config/ # Configuration templates │ ├── fail2ban-jail.conf.template # All 11 jails (nftables + AbuseIPDB + Pushover) │ ├── fail2ban-filter-nginx-scan.conf # Scanner detection filter │ ├── fail2ban-filter-nginx-cred-harvest.conf # Credential harvesting filter │ ├── fail2ban-filter-nginx-traversal.conf # Directory traversal filter │ ├── fail2ban-filter-nginx-sensitive-files.conf # Sensitive file probe filter │ ├── fail2ban-filter-nginx-php-probes.conf # PHP/admin panel probe filter │ ├── fail2ban-filter-nginx-rce-attempts.conf # RCE/shell injection filter │ ├── fail2ban-action-pushover.conf # Pushover notification action (configurable reason) │ ├── fail2ban-sudoers-webui # Sudoers for web UI management │ ├── blocklist-whitelist.conf.example # Blocklist whitelist template │ ├── logrotate-icelaborvpn.conf # Service log rotation config │ └── logrotate-blocklists.conf # Blocklist log rotation config ├── guacamole/ # Docker compose & SQL ├── nginx/ # Nginx configuration ├── systemd/ # Service files (monitor + blocklist timers) ├── docs/ │ ├── OPERATIONS-MANUAL.md # ITSO handbook (DORA/MITRE) │ └── screenshots/ └── website/ # Documentation website ├── index.html ├── css/ ├── js/ ├── images/ │ └── architecture.svg └── screenshots/ ``` ## 故障排除 ### 常见问题 **登录失败并提示“Invalid credentials”** ``` # 检查 Guacamole 日志 docker logs guacamole | grep -i auth ``` **TOTP 验证码被拒绝** - 验证系统时间是否已同步 (`timedatectl`) - 在用户设置中重新生成 TOTP **连接超时** ``` # 检查 Tailscale 连接 tailscale ping ``` **Fail2ban 封禁了合法用户** ``` # 通过 CLI 解封 IP sudo fail2ban-client set guacamole unbanip 192.0.2.1 # 或者使用 Web 仪表板(在通过 https://your-domain.com 登录后) # Fail2ban 面板显示所有被封禁的 IP,并提供 Unban/Re-Ban 按钮 ``` ## 许可证 MIT License - 详见 [LICENSE](LICENSE) ## 作者 **IcePorge 项目** - GitHub: [@icepaule](https://github.com/icepaule) - 电子邮件: info@mpauli.de ## 致谢 - [Apache Guacamole](https://guacamole.apache.org/) - [Headscale](https://github.com/juanfont/headscale) - [Tailscale]() - [MITRE ATT&CK](https://attack.mitre.org/)
标签:2FA, AbuseIPDB, Apache Guacamole, Blocklist.de, CISA项目, Cloudflare, DORA合规, Emerging Threats, ESC4, Fail2ban, Headscale, HTML5远程桌面, ISO 27001, MFA, MITRE ATT&CK, OSINT, PB级数据处理, PE 加载器, Pushover通知, RCE防御, RDP, Spamhaus, SSH, Tailscale网络, Tor出口节点拦截, TOTP, VNC, Web网络安全, WireGuard, 会话录制, 动态API解析, 后端开发, 多因素认证, 威胁情报, 安全网关, 安全运维, 审计日志, 应用安全, 开发者工具, 恶意软件分析实验室, 插件系统, 攻击拦截, 测试用例, 目录遍历防御, 端口扫描检测, 纵深防御, 网络安全, 网络安全审计, 请求拦截, 远程访问, 逆向工具, 防暴力破解, 隐私保护, 零信任网络