agit8or1/OPNMGR
GitHub: agit8or1/OPNMGR
OPNMGR 是一个基于 Web 的 OPNsense 防火墙集中化管理平台,提供健康监控、自动更新、配置备份、远程命令执行及 AI 配置审查等功能,解决多防火墙环境下的统一运维难题。
Stars: 26 | Forks: 0
# OPNManager - OPNsense 防火墙管理平台
[](https://github.com/agit8or1/OPNMGR/stargazers)
**状态**:生产稳定 | **许可证**:MIT | **版本**:[](https://github.com/agit8or1/OPNMGR/releases) | **Agent**:v1.4.0
一个全面的基于 Web 的管理平台,用于集中监控、配置和维护 OPNsense 防火墙。
### v3.11 新特性 — 全面 UI 重设计
OPNManager v3.11 带来了受 Datadog 和 Grafana 启发的从头开始的 UI 重设计:
- **可折叠图标侧边栏** — 悬停时展开的 72px 纤细导航栏,可固定保持打开
- **防火墙健康网格仪表板** — 为每个防火墙提供一目了然的健康卡片,包含状态点、健康条、运行时间和最后签到时间
- **Dark + Light 主题** — 感知系统偏好并支持手动切换,在所有页面上保持一致
- **KPI 指标条** — 紧凑的胶囊状显示,展示防火墙总数、在线/离线计数、需要更新的数量以及平均健康分数
- **专业设计系统** — 超过 1,600 行带有 custom properties 的 CSS,不再有内联样式
- **安全加固** (v3.10) — 25+ 个端点已通过身份验证保护,19+ 个表单启用了 CSRF,并进行了依赖项更新
## 主要功能
### 防火墙管理
- **集中式仪表板**:通过单一界面监控所有防火墙
- **实时状态**:Agent 每 2 分钟进行一次实时签到
- **插件 Agent**:原生 OPNsense 插件,支持自动更新
- **健康监控**:CPU、内存、磁盘、运行时间、网络状态
- **标签系统**:使用颜色编码标签组织防火墙
- **客户分组**:支持多租户及客户组织管理
### 网络与流量监控
- **WAN 流量图表**:带自动缩放 (Mb/s / Gb/s) 的实时吞吐量图表
- **接口状态**:每个接口的 RX/TX 字节计数器及错误跟踪
- **延迟监控**:持续对多个目标进行 ping 测量
- **带宽测试**:按需进行 iperf3 速度测试,支持多服务器回退
- **智能计数器检测**:当驱动程序级别的计数器损坏 (virtio_net) 时,自动回退到 pf 计数器
### 系统监控
- **准确的运行时间跟踪**:来自 Agent 的真实系统运行时间
- **版本跟踪**:OPNsense 版本、Agent 版本及可用更新
- **一键更新**:触发 OPNsense 更新并带有动画进度状态
- **重启控制**:可点击的“需要重启”徽章可触发带有确认提示的远程重启
- **卡顿更新恢复**:自动恢复卡住超过 15 分钟的更新
- **系统统计**:CPU、内存、磁盘使用情况图表(支持 1h, 4h, 12h, 24h, 1w, 30d 时间范围)
### 命令执行
- **远程命令队列**:远程在防火墙上执行命令
- **Base64 编码**:支持复杂的多行命令
- **命令历史**:跟踪所有执行的命令及其时间戳
- **输出捕获**:实时查看命令结果
### 配置备份
- **自动备份**:定时进行配置备份
- **手动备份**:按需创建备份
- **备份管理**:下载、恢复和删除备份
- **保留策略**:自动清理旧备份
### AI 驱动的安全分析
- **智能配置审查**:由 AI 驱动的防火墙配置分析
- **安全建议**:提供改善安全状况的自动化建议
- **风险评估**:识别潜在的漏洞和错误配置
### 安全连接
- **按需 SSH 隧道**:动态反向隧道,无需暴露端口
- **Web 代理**:通过管理器访问防火墙 Web 界面
- **自动清理**:隧道会话超时后会自动清理
## 截图
### 登录
简洁、极简的登录界面,支持 dark/light 主题。

### 仪表板 — 防火墙健康网格
通过 KPI 指标条、每个防火墙的健康卡片、状态图表和网络映射,实现一目了然的监控。

### 仪表板 — 完整视图

### 防火墙管理
支持排序和过滤的防火墙列表,包含健康分数和状态指示器。

### 防火墙详情
详细的防火墙视图,包含图表、网络信息和管理工具。

### 设置
包含 ACME、警报、备份、品牌标识、Fail2Ban 和 GeoIP 的系统配置。

### 用户
管理员用户管理,支持角色、密码更改和 CSRF 保护。

### 折叠侧边栏
仅显示图标的导航栏 (72px) — 悬停或固定以展开。

### Light 模式
完整的 light 主题,具备系统偏好检测和手动切换功能。

## 系统要求
### 服务器要求
- **OS**:Ubuntu 22.04 LTS 或更新版本
- **PHP**:8.0 或更高版本
- **MySQL/MariaDB**:8.0+ / 10.6+
- **Web Server**:Apache 2.4+ 或 Nginx 1.18+
- **磁盘空间**:最低 10GB(推荐 20GB+ 用于备份)
- **内存**:最低 2GB RAM(推荐 4GB+)
### 被管理的防火墙
- **OPNsense**:20.7+(已测试至 25.7.x)
- **FreeBSD**:13.x 或 14.x
- **连接性**:具备可访问管理器服务器的出站 HTTPS (443) 权限
## 快速开始
### 1. 服务器安装
```
# Clone 仓库
cd /var/www
git clone https://github.com/agit8or1/OPNMGR.git opnsense
# 设置适当的权限
chown -R www-data:www-data /var/www/opnsense
chmod 755 /var/www/opnsense
# 导入数据库 schema
mysql -u root -p < /var/www/opnsense/database/schema.sql
# 配置数据库连接
cp /var/www/opnsense/inc/db.php.example /var/www/opnsense/inc/db.php
# 使用您的 DB_HOST, DB_NAME, DB_USER, DB_PASS 编辑 inc/db.php
# 配置 Apache virtual host 并重新加载
a2ensite opnmanager
systemctl reload apache2
```
### 2. 防火墙注册
#### 选项 A:快速注册(推荐)
1. 登录 OPNManager Web 界面
2. 导航至 **Firewalls > Add Firewall**
3. 生成注册密钥
4. 在 OPNsense 防火墙上,运行页面上显示的单行安装命令
#### 选项 B:手动安装插件
```
# 在 OPNsense 防火墙上,安装 agent plugin:
fetch -o - https:///downloads/plugins/install_opnmanager_agent.sh | sh
```
然后通过 OPNsense Web GUI 在 **Services > OPNManager Agent** 下配置 Agent。
### 3. Agent 插件
OPNManager Agent 作为原生 OPNsense 插件进行安装:
- **插件位置**:`/usr/local/opnsense/scripts/OPNsense/OPNManagerAgent/agent.sh`
- **配置**:通过 OPNsense GUI (**Services > OPNManager Agent**)
- **服务管理**:`service opnmanager_agent start|stop|restart`
- **日志**:`/var/log/opnmanager_agent.log`
- **自动更新**:Agent 在每次签到时检查更新并进行自我更新
## 配置
### Agent 签到
Agent 默认每 2 分钟签到一次。在每次签到时,它会报告:
- 系统统计信息(CPU、内存、磁盘)
- 网络接口状态和流量计数器
- 延迟测量值
- OPNsense 版本及更新可用性
- 待处理的命令结果
### 流量计数器智能识别
Agent 使用最佳可用的计数器源:
- **Link layer**(默认):捕获所有流量,包括 forwarded/NAT
- **pf counters**(回退):当 Link-layer 计数器冻结时使用(在 VPS 上的 virtio_net 中很常见)
- **IP layer**(最后手段):仅限基于地址的流量
## 安全
### 身份验证
- 安全的密码哈希处理 (PHP `password_hash`)
- 带有 CSRF 保护的会话管理
- 登录尝试日志记录
### Agent 通信
- 仅限 HTTPS 的 Agent 签到
- 基于 Hardware ID 的防火墙识别
- Base64 编码的命令 payload
- PID 文件锁定可防止 Agent 重复运行
### 安全连接
- 按需 SSH 反向隧道(动态端口分配 8100-8200)
- 无需暴露防火墙端口
- 自动清理隧道会话
## 故障排除
### Agent 未签到
```
# 在 OPNsense 防火墙上:
service opnmanager_agent status
tail -20 /var/log/opnmanager_agent.log
```
### 网络数据显示错误值
- 确保 Agent 版本为 v1.5.6+(支持 virtio_net 的 pf 计数器回退)
- 检查 Agent 日志中是否有 "Link layer counter frozen" 消息
- 流量数据会随时间累积;全新安装需要约 24 小时才能生成完整的图表
## 许可证
本项目基于 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## 支持
- 在 [GitHub](https://github.com/agit8or1/OPNMGR) 上为本仓库加星
- 访问 [mspreboot.com](https://mspreboot.com)
标签:Cutter, Docker 部署, ffuf, OPNsense, Web GUI, 监控平台, 网络运维, 进程监控, 防火墙管理