Abdullah-Noman56/AutoVPNGuard

GitHub: Abdullah-Noman56/AutoVPNGuard

一个基于 pfSense、rsyslog、Python 与 n8n 的自动化 VPN 安全监测与告警系统,解决远程接入中静态防火墙无法覆盖的异常行为发现问题。

Stars: 0 | Forks: 0

# AutoVPNGuard 🔐 ## 自动化 VPN 网关与动态策略控制 ## 📌 概述 **AutoVPNGuard** 是一个自动化安全系统,通过超越静态防火墙规则来增强远程访问 VPN 保护。它整合了 **pfSense OpenVPN**、**syslog 服务器**、**自定义 Python 异常检测** 以及 **n8n 自动化**,以实现对 VPN 连接的实时威胁监控与告警。 该系统可检测 **7 种可疑行为模式**: * ✅ **重复客户端连接** — 同一用户多次连接 * ✅ **快速认证失败** — 暴力破解攻击检测(1 小时内 10 条消息 = 5 次失败) * ✅ **非工作时间访问** — 在 9:00–17:00 工作时间之外的连接 * ✅ **来自黑名单 IP 的连接** — 已知恶意 IP 地址 * ✅ **IP 快速变更** — 同一用户在 1 小时内来自 3 个或更多不同 IP * ✅ **不熟悉的地理位置** — 来自不允许国家/地区的连接(通过 IPinfo API) * ✅ **过度重复尝试** — 拥有 5 次或更多重复连接的用户 告警会自动汇总并**按计划通过电子邮件发送给网络管理员**。 ## 🏗️ 系统架构 ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Remote │ │ pfSense │ │ Syslog │ │ n8n │ │ Client │────▶│ OpenVPN │────▶│ Server │────▶│ Automation │ │ (Ubuntu) │ │ Gateway │ │ (rsyslog) │ │ (Docker) │ └─────────────┘ └─────────────┘ └──────┬──────┘ └──────┬──────┘ │ │ ▼ ▼ ┌─────────────────────────────────┐ │ Detection Results │ │ ┌─────────────────────────┐ │ │ │ alert.txt │ │ │ │ alert_geo_location.txt │ │ │ └─────────────────────────┘ │ └────────────┬────────────────────┘ │ ▼ ┌─────────────┐ │ Gmail │ │ API │ │ Alerts │ └─────────────┘ ``` ## 📁 项目结构 ``` AutoVPNGuard/ ├── README.md ├── LICENSE ├── requirements.txt ├── .gitignore │ ├── scripts/ │ ├── parse.py │ ├── trim.py │ ├── fun.py │ ├── check_vpn_countries.py │ └── send_gmail.py │ ├── config/ │ ├── config.example.json │ ├── bad_ip_dataset.txt │ └── allowed_countries.txt │ ├── workflows/ │ ├── detection_workflow.json │ └── email_workflow.json │ └── docs/ ├── topology.png ├── architecture.png └── setup_guide.pdf ``` ## 🚀 完整安装指南 ### 先决条件 | 组件 | 版本 | 用途 | | ------------- | ---------- | ------------------------------- | | pfSense | 2.6+ | VPN 网关与防火墙 | | Ubuntu Server | 22.04 LTS | Syslog 服务器与自动化主机 | | rsyslog | 8.21+ | 日志收集 | | Docker | 20.10+ | 运行 n8n 容器 | | n8n | 1.0+ | 工作流自动化 | | Python | 3.8+ | 检测脚本 | | OpenVPN | 2.5+ | VPN 客户端连接 | ## ⚙️ 安装章节 ### 1. pfSense 配置 * 创建证书颁发机构 * 配置 OpenVPN 服务器 * 生成客户端证书 * 导出客户端配置文件 ### 2. Syslog 服务器(Ubuntu) ``` sudo apt update && sudo apt upgrade -y sudo apt install rsyslog -y ``` 在 `/etc/rsyslog.conf` 中启用远程日志记录: ``` module(load="imudp") input(type="imudp" port="514") module(load="imtcp") input(type="imtcp" port="514") ``` ### 3. n8n 设置(Docker) ``` docker run -d \ --name n8n \ --restart unless-stopped \ -p 5678:5678 \ -v ~/n8n_data:/home/node/.n8n \ -v /var/log:/host_logs:ro \ -v ~/vpn_logs:/home/node/vpn_logs \ n8nio/n8n ``` ### 4. Python 设置 ``` pip3 install -r requirements.txt ``` ### 5. Gmail API 设置 * 启用 Gmail API * 下载 `credentials.json` * 生成 `token.json` ## 🔍 检测脚本 ### trim.py * 保留最近 1000 行日志 ### parse.py * 将日志转换为 JSONL 格式 ### fun.py * 检测 6 种异常 ### check_vpn_countries.py * 检测地理位置异常 ### send_gmail.py * 通过 Gmail API 发送告警 ## 📊 测试 示例测试: ``` for i in {1..10}; do echo "user 'attacker' could not authenticate" >> /var/log/openvpn.log done ``` ## ⚠️ 限制 * 无自动阻断(仅检测) * 静态 IP 黑名单 * 最多仅处理 1000 条日志 * 无仪表板 ## 🚀 后续改进 * 自动阻断入侵 * 基于机器学习的异常检测 * SIEM 集成 * 实时仪表板 ## 🔐 安全最佳实践 * 不要提交密钥 * 使用环境变量 * 定期轮换令牌 ## 📄 许可证 MIT 许可证 ## 👥 作者 * Musab Ahmad * Muhammad Hussain * Abdullah Noman ## ⭐ 支持 如果该项目对您有帮助: * ⭐ 给仓库加星 * 🛠️ 贡献代码 * 📢 分享项目 **专为网络安全专业人士打造** 🛡️
标签:AMSI绕过, IP信誉, n8n, OpenVPN, pfSense, Python, Syslog, VPN防护, 免杀技术, 动态策略, 告警邮件, 地理围栏, 威胁检测, 异常检测, 无后门, 暴力破解检测, 结构化查询, 自动化安全, 自动化编排, 请求拦截, 远程访问, 逆向工具, 重复连接检测