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防护, 免杀技术, 动态策略, 告警邮件, 地理围栏, 威胁检测, 异常检测, 无后门, 暴力破解检测, 结构化查询, 自动化安全, 自动化编排, 请求拦截, 远程访问, 逆向工具, 重复连接检测