NX1X/pfSentinel

GitHub: NX1X/pfSentinel

专为 pfSense 防火墙设计的自动备份与变更监控工具,覆盖配置、证书、日志、ZFS 快照等全量数据,支持定时任务和多渠道通知。

Stars: 1 | Forks: 0

# pfSentinel [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5e1dc9968e033808.svg)](https://github.com/NX1X/pfSentinel/actions/workflows/ci.yml) [![GitHub Release](https://img.shields.io/github/v/release/NX1X/pfSentinel)](https://github.com/NX1X/pfSentinel/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-%3E%3D3.13-blue.svg)](https://www.python.org/) ![Views](https://komarev.com/ghpvc/?username=NX1X-pfSentinel&label=views&color=brightgreen) 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快照, 凭据安全, 变更检测, 增量备份, 定时任务, 家庭实验室, 密钥认证, 恶意代码分类, 文件系统归档, 无后门, 监控工具, 系统日志, 系统管理, 网络安全, 自动备份, 证书备份, 运行时操纵, 逆向工具, 防火墙, 隐私保护