weby-homelab/niftywall

GitHub: weby-homelab/niftywall

NiftyWall 是一个轻量级的 nftables 防火墙 Web 仪表板,提供安全的图形化规则管理与紧急防护功能。

Stars: 2 | Forks: 0

English README Українська версія


Latest Release Branch Main Security Docker Pulls

# 🛡️ NiftyWall "Hardened" - Docker 版 [![最新发布](https://img.shields.io/github/v/release/weby-homelab/niftywall)](https://github.com/weby-homelab/niftywall/releases/latest) *让 Linux 防火墙变得透明、智能且美观。* **NiftyWall** 是一个用于管理 nftables 防火墙的专业 Web 仪表板。在 v3.0.0 版本中,项目经过了全面审计,以达到企业级的稳定性和安全性。本版本(`main`)专为在隔离的 Docker 环境中快速部署而优化。 ## 📸 界面

NiftyWall Dashboard 1

NiftyWall Dashboard 2

NiftyWall Dashboard 3

NiftyWall Dashboard 4

NiftyWall Dashboard 5

NiftyWall Dashboard 6

## ❄️ 紧急模式与 SAFE 模式 - **🛡️ SAFE 模式(紧急封锁):** 您服务器的数字“急停开关”。**SAFE 模式** 按钮会激活紧急保护模式: 1. **即时快照**:自动生成所有防火墙规则的快照。 2. **彻底清理**:彻底清空(Flush)`niftywall` 表——所有未授权的连接都会被立即切断。 3. **白名单**:应用最小化配置,仅允许关键服务的流量:SSH (22)、NiftyWall (8080) 以及受信任的接口(Tailscale, Loopback)。 4. **隔离**:所有公共服务(HTTP、数据库等)在退出此模式前都将无法访问。 - **❄️ Panic 模式(冻结进程):** 智能资源监控。如果系统检测到异常的 CPU 或 RAM 消耗,您可以一键冻结(`SIGSTOP`)恶意进程。被冻结的进程会自动置顶在列表中,无需完全杀死(kill)进程即可释放资源,从而保留其状态供后续分析。 ## 🧩 系统架构 ``` graph TD User((Адміністратор)) -->|HTTPS / PWA| UI[Web Dashboard] subgraph "Docker Container (Host Network)" subgraph "NiftyWall Core" UI -->|REST API / JWT| API[FastAPI Backend] API -->|Pydantic| VAL{Input Validator} VAL -->|Subprocess / JSON| NFT[nftables Engine] VAL -->|Socket / Logs| F2B[Fail2Ban Parser] VAL -->|Metrics| SYS[psutil System Monitor] API -->|Persistence| DB[(SQLite Database)] API -->|Isolated Backup| TM[Time Machine] end end subgraph "Host OS" F2B -.->|Volume Mount| HostF2B[fail2ban sockets & logs] subgraph "Linux Kernel" NFT -->|Netlink| Netfilter[Kernel Hooks] Netfilter -->|Packet Counters| NFT end end F2B -.->|GeoIP| WHO[Whois API] ``` ## 🚀 "Hardened" 版本的新特性 - **🔐 SQLite 后端:** 所有状态(用户、日志、历史记录)均已迁移至可靠的 SQLite 数据库。彻底解决了 Race Conditions 问题。 - **🛡️ 严格的输入验证:** 通过 Pydantic 对所有输入数据进行严格验证。提供针对 NFT 注入的全面保护。 - **🕰️ 隔离的时间机器:** 备份功能仅在 `niftywall` 表中进行,完全不会影响 Docker 或 VPN 的规则。 - **🔄 智能 DNAT + SNAT:** 自动添加 masquerading 规则,消除非对称路由问题。 - **🕵️ 高弹性的 Fail2Ban:** 全新的解析逻辑,直接通过 `fail2ban-client` 运行。 ## 🛠️ 安装说明(Docker 版) 此方法通过仅使用必要的 Kernel Hooks,实现了代码与宿主系统的完全隔离。 ### 1. 前置条件 - **Docker Engine** 24.0+ 及 **Docker Compose** v2。 - 宿主系统中必须存在 `nftables`(用于加载内核模块)。 ### 2. 通过 Docker Compose 部署 创建 `docker-compose.yml`: ``` services: niftywall: image: webyhomelab/niftywall:latest container_name: niftywall privileged: true # Необхідно для керування nftables network_mode: host # Необхідно для прямого доступу до інтерфейсів restart: always environment: - SECRET_KEY=${SECRET_KEY} # openssl rand -hex 32 - PANIC_ALLOWED_PORTS=22,80,443 - TZ=Europe/Kyiv volumes: - /var/log/fail2ban.log:/var/log/fail2ban.log:ro - /var/run/fail2ban:/var/run/fail2ban - /opt/niftywall/data:/app/data - /opt/niftywall/snapshots:/app/snapshots ``` ### 3. 运行 ``` docker compose up -d ``` ## 📋 详细的系统要求与兼容性(环境) NiftyWall 项目基于**绝对自主**的原则构建。通过使用具有最高链优先级的独立表 `inet niftywall`,系统保证了在复杂网络环境中的稳定性。 ### 🟢 1. 理想环境(原生裸金属 / 云端 VPS) *没有额外第三方防火墙层的服务器。* - **工作原理:** NiftyWall 是网络流量的唯一主宰。它将初始化类型为 `filter`、优先级为 **-100** 的 `input` 和 `forward` 链,从而允许在网络栈的最开始阶段处理数据包。 - **特点:** 最高的规则处理速度、100% 的可预测性以及零额外开销。 ### 🟡 2. 混合环境(包含 Docker / LXC / KVM 的服务器) *积极使用容器化的服务器。* - **兼容性:** **完全兼容(v2.0+)。** NiftyWall 不再与 Docker 发生冲突。 - **“Shield-First”概念:** 得益于 **-100** 的优先级,NiftyWall 的规则会比 Docker 的规则(通常优先级为 0)**更早**触发。这允许您在威胁进入容器虚拟网桥之前,直接在内核层将其拦截。 - **隔离性:** 在其专属的命名空间(`table inet niftywall`)中运行,避免了在重置配置时意外删除 Docker 规则。 ### 🔴 3. 冲突环境(UFW 或 Firewalld) *已经启用了其他高级管理器的服务器。* - **兼容性:** **不推荐。** - **“遮蔽”问题:** `nftables` 允许多个表并行运行。数据包必须**同时**被两个系统放行。如果 NiftyWall 放行了流量,而被遗忘的 UFW 却将其拦截——您将面临难以诊断的严重问题。 - **解决方案:** 建议在使用 NiftyWall 之前执行 `systemctl disable --now ufw` 或禁用 `firewalld`。如果您确实需要针对它们的 GUI,请使用:[UFW-GUI](https://github.com/weby-homelab/ufw-gui) 或 [Firewalld-GUI](https://github.com/weby-homelab/firewalld-gui)。

在防空警报与停电中于乌克兰构建 ⚡
© 2026 Weby Homelab

标签:Docker, NFTables, Web面板, 后端开发, 安全防御评估, 请求拦截, 运维, 逆向工具, 防火墙