unknown0152/nft-firewall-public
GitHub: unknown0152/nft-firewall-public
基于 nftables 的安全默认防火墙管理器,为 Debian 系统提供 WireGuard killswitch、Docker 隔离、健康监控和运维工具链。
Stars: 0 | Forks: 0
# nft-firewall
`nft-firewall` 是一个底层的 nftables 防火墙管理器,专为需要严格 WireGuard killswitch、默认丢弃(default-drop)输入策略、Docker 隔离、健康检查以及操作员工具的 Debian 系统而设计。
本项目面向有经验的 Linux 操作员。它直接管理 nftables 规则,并可能影响主机的网络连接。在应用生成的规则之前,请先进行审查,保留带外(out-of-band)恢复路径,并在不了解本地网络拓扑结构的情况下,切勿将其部署在生产主机上。
## 当前状态
本仓库是基于真实生产部署环境导出的、对公众安全的源码。其中包含了代码、测试、systemd 模板和操作员文档,但有意排除了实际的主机配置、运行时状态、日志、备份产物以及私密历史记录。
部署文档有意保持保守。它侧重于审查、验证和恢复工作流,而不是提供一键式的公共安装程序。公共安装步骤应在干净的目标主机上经过测试后,方可撰写。
## 功能
- 具备默认丢弃(default-drop)输入姿态的 nftables 规则集生成。
- 面向 WireGuard 的出站(egress)控制和 killswitch 健康检查。
- 支持 IPv6 硬阻断(hard-drop)killswitch。
- 在将 Docker 配置为不自行管理 iptables 的情况下,提供 Docker 隔离。
- 用于阻断、信任和 GeoIP 风格源列表的动态 nftables 集合。
- 包含 watchdog、listener、SSH 告警、指标和报告的 systemd 模板。
- 可选的 Keybase 通知和 ChatOps 集成。
- 通过 Ruff、ShellCheck 和 pytest 进行本地开发者检查。
## 公共仓库范围
此公共仓库有意排除了实时的主机数据。请勿提交:
- `config/firewall.ini`
- 位于 `state/` 或 `/var/lib/nft-firewall/` 下的运行时状态
- 生成的 `/etc/nftables.conf` 副本
- 审计日志或其他日志
- 备份包、运行时状态 tar 包以及本地存档
- `.venv/`、缓存和测试产物
请使用 [config/firewall.ini.example](config/firewall.ini.example) 作为
本地配置的起点。真实的接口名称、局域网(LAN)网段、VPN 端点、SSH 端口、Keybase 标识符以及特定于服务的值只能存在于私有部署配置中。
## 仓库结构
- `src/core/` 包含规则集生成、状态持久化和验证。
- `src/daemons/` 包含 watchdog、listener、knockd 和 SSH 告警守护进程。
- `src/integrations/` 包含 Docker、GeoIP 和威胁情报源(threat-feed)辅助工具。
- `src/utils/` 包含共享的格式化、指标、Keybase 和验证
实用工具。
- `systemd/` 包含服务和计时器模板。
- `scripts/` 包含本地操作员和维护辅助脚本。
- `tests/unit/` 包含单元和不变量(invariant)测试套件。
- `docs/` 包含运维和迁移说明。
## 开发检查
本地检查入口点是:
```
make check
```
它会运行 Ruff(如果可用)、ShellCheck(如果可用)以及单元测试套件。
Ruff 有意进行了狭义的配置,以便它能在不引起大范围代码风格变动的情况下,捕获高价值的未定义名称错误。
可选的本地工具可以安装到项目的 `.venv` 中:
```
make venv
make check
```
`.venv` 仅用于开发检查。运行时服务不依赖于它。
## 运维说明
[docs/](docs/) 下的文档描述了维护工作流,例如本地更改跟踪、零停机验证以及备份/导出处理。它们是操作员指南,不能替代在目标主机上审查生成的 nftables 策略。
在真实主机上应用生成的防火墙更改之前,请使用适用于该部署的项目 doctor、健康状态检查和 nftables 语法检查。
标签:Debian, Docker隔离, nftables, WireGuard, 安全规则引擎, 系统防护, 请求拦截, 运维工具, 逆向工具, 防火墙