NX1X/pfSentinel
GitHub: NX1X/pfSentinel
专为 pfSense 防火墙设计的自动备份与变更监控工具,覆盖配置、证书、日志、ZFS 快照等全量数据,支持定时任务和多渠道通知。
Stars: 1 | Forks: 0
# pfSentinel
[](https://github.com/NX1X/pfSentinel/actions/workflows/ci.yml)
[](https://github.com/NX1X/pfSentinel/releases)
[](LICENSE)
[](https://www.python.org/)

pfSense 防火墙的自动备份和监控工具。专为家庭实验室构建。
pfSentinel 通过 SSH 或 HTTPS 连接到您的 pfSense 设备,并备份配置文件、RRD 数据、软件包配置、DHCP 租约、证书、日志、ZFS 快照和完整文件系统归档。它包含更改检测、压缩、计划备份以及通过 Telegram、Slack 或 Windows toast 通知的功能。
## 功能
- 通过 SSH (SFTP) 或支持 CSRF 感知登录的 HTTPS 进行**完整配置备份**
- **扩展备份目标** -- RRD 图表、软件包配置、DHCP 租约、别名文件、证书、系统日志
- 支持增量发送的 **ZFS 快照** (pfSense 2.5+)
- **文件系统归档** (tar.gz) 作为非 ZFS 的备选方案
- **更改检测** -- 仅当配置部分发生实际更改时才进行保存
- 对每个备份文件进行 **SHA-256 校验**
- 通过 Windows 任务计划程序或 cron 进行**计划备份**
- **通知** -- Telegram、Slack、Windows toast、Windows 事件日志
- **SSH 密钥身份验证** -- 无需密码
- **凭据安全** -- 密码存储在操作系统密钥库中,绝不存储在配置文件中
- **自我更新** -- 检查并安装来自 GitHub 的新版本
- **跨平台** -- Windows、Linux、macOS
## 快速开始
**下载预构建的二进制文件**(无需 Python):
或使用 pip 安装(Python 3.13+):
```
pip install pfsentinel
```
然后:
```
pfs setup # guided first-time wizard
pfs device add # add your pfSense device
pfs backup run # run your first backup
```
有关所有安装方法,请参阅[安装指南](docs/installation.md)。
## 文档
| 文档 | 描述 |
|----------|-------------|
| [安装指南](docs/installation.md) | pip、预构建二进制文件以及从源代码安装 |
| [使用指南](docs/usage.md) | CLI 参考、配置、计划任务、通知 |
| [扩展备份](docs/extended-backups.md) | RRD、软件包、DHCP、证书、日志、ZFS、归档 |
| [安全策略](SECURITY.md) | 漏洞报告、设计决策、凭据存储 |
| [贡献指南](CONTRIBUTING.md) | 开发环境设置、代码风格、Pull Request |
| [更新日志](CHANGELOG.md) | 版本历史 |
## 备份内容
| 目标 | 方式 | 描述 |
|--------|--------|-------------|
| XML 配置 | SSH / HTTPS | 完整的 pfSense 配置 (`config.xml`) |
| RRD 数据 | SSH | 流量和性能图表 |
| 软件包配置 | SSH | 已安装软件包的设置 |
| DHCP 租约 | SSH | 活跃的 DHCP 租约表 |
| 别名文件 | SSH | URL 表和外部别名文件 |
| 证书 | SSH | 来自文件系统的 SSL/TLS 证书 |
| 系统日志 | SSH | 过滤器日志、系统日志、自定义日志文件 |
| ZFS 快照 | SSH | 完整或增量 ZFS 快照流 |
| 文件系统归档 | SSH | 关键目录的 Tar 归档 |
## 第三方致谢
pfSentinel 基于以下开源库构建:
| 库 | 许可证 | 用途 |
|---------|---------|---------|
| [Typer](https://github.com/fastapi/typer) | MIT | CLI 框架 |
| [Rich](https://github.com/Textualize/rich) | MIT | 终端格式化 |
| [Pydantic](https://github.com/pydantic/pydantic) | MIT | 数据验证 |
| [Paramiko](https://github.com/paramiko/paramiko) | LGPL-2.1 | SSH/SFTP 连接 |
| [httpx](https://github.com/encode/httpx) | BSD-3-Clause | HTTPS 请求 |
| [cryptography](https://github.com/pyca/cryptography) | Apache-2.0 / BSD-3-Clause | SSH 密钥处理 |
| [Loguru](https://github.com/Delgan/loguru) | MIT | 日志记录 |
| [PyYAML](https://github.com/yaml/pyyaml) | MIT | YAML 解析 |
| [Requests](https://github.com/psf/requests) | Apache-2.0 | HTTP 客户端 |
| [Packaging](https://github.com/pypa/packaging) | Apache-2.0 / BSD-2-Clause | 版本解析 |
Paramiko 是唯一具有 Copyleft 许可证 (LGPL-2.1) 的运行时依赖项。当通过 pip 安装时,用户可以自由替换它。对于二进制文件发布,pfSentinel 使用 `--onedir` 打包,因此 Paramiko 仍然保持可替换性。有关完整的依赖项许可证审计,请参阅 [docs/LICENSE_AUDIT.md](docs/LICENSE_AUDIT.md)。
## 贡献
欢迎贡献!在提交 Pull Request 之前,请阅读[贡献指南](CONTRIBUTING.md)。
如果您发现错误或有功能请求,请[创建 Issue](https://github.com/NX1X/pfSentinel/issues)。
## 许可证
[MIT](LICENSE)
标签:Awesome, DHCP租约, Homelab, HTTPS, IT运维, pfSense, Python, RRD数据, SHA-256校验, Slack通知, Socks5代理, SSH, Telegram通知, ZFS快照, 凭据安全, 变更检测, 增量备份, 定时任务, 家庭实验室, 密钥认证, 恶意代码分类, 文件系统归档, 无后门, 监控工具, 系统日志, 系统管理, 网络安全, 自动备份, 证书备份, 运行时操纵, 逆向工具, 防火墙, 隐私保护