eFeSpain/efeflow

GitHub: eFeSpain/efeflow

eFeFlow 是一款可视化设计 Linux nftables 防火墙规则的桌面工具,通过画布编排、自动分析和数据包模拟来降低规则编写与排错的复杂度。

Stars: 0 | Forks: 0

eFeFlow # eFeFlow **可视化设计 Linux 防火墙规则。生成整洁的 `nft` 源码。** [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/eFeSpain/efeflow/actions/workflows/ci.yml) [![release](https://img.shields.io/github/v/release/eFeSpain/efeflow?include_prereleases&sort=semver)](https://github.com/eFeSpain/efeflow/releases) [![licence](https://img.shields.io/badge/licence-MIT-blue)](LICENSE) [![status](https://img.shields.io/badge/status-beta-F0C13C)](#-beta) [English](README.md) · [Español](README.es.md) The rule editor
## ⚠ Beta eFeFlow **正在积极开发中**。解析器、分析器和数据包评估器已由自动化测试套件覆盖,但该工具尚处于起步阶段,您会发现一些粗糙的细节。 请将其生成的内容视为**需要审查的草稿**,而非盲目信任的输出。在应用任何规则之前,请使用 `nft -c` 进行验证,并保留对应用该规则集的任何机器的控制台访问权限。 ## 功能介绍 nftables 规则集是一个有序的文本列表,其中位置即是意义,而一条错位的规则会默默地掩盖它下面的十条规则。eFeFlow 让这一切变得可见。 **它是一个设计器,而不是防火墙管理器。** 它负责编辑规则集并输出 `nft` 源码。除非您主动操作,否则不会对实际主机进行任何更改。 ### 画布是战场,而不是白板 链(chain)位于其附加的 netfilter hook 上——按照数据包经过它们的顺序从左到右排列——并根据其优先级从上到下排列。**位置即是意义**:您可以直接从屏幕上读取评估顺序,而无需在脑海中重建。 通过单击轨道上的 hook 或从库中拖出一个 hook 来添加链。拖动规则以重新排序,如果需要,甚至可以跨链拖动。每个规则都带有与其判定(verdict)相对应的彩色条纹,因此瞥一眼链就能让您看到策略的条形码。 ### 它会告诉您规则集哪里出了问题 The validation screen 每次规则集更改时,都会从中自动派生出检查结果,绝非人工编写。 | | | |---|---| | **遮蔽(Shadowed)** | 已经由先前的规则决定了的规则 | | **冲突(Conflict)** | 具有不同目标的重叠 DNAT 规则 | | **合并(Merge)** | 仅端口不同的规则,集合查找将替换它们 | | **未使用(Unused)** | 加载到内核中但没有规则使用的集合 | | **强化(Hardening)** | 信任 conntrack 但从不丢弃 `invalid` 的链 | | **弹性(Resilience)** | 没有速率限制的日志规则 | 大多数问题都提供一键修复功能。所有操作均可撤销。 ### 它会让您的数据包通过您的规则运行 The packet simulator 描述一个数据包并观察它逐条规则地穿过链,走向一个判定——这正是您导出的规则集所产生的判定结果,因为模拟器评估的模型与生成代码的模型是相同的。 它正确地对 nftables 进行了建模。`accept` 会结束链,而不是数据包。关闭 conntrack 会将数据包标记为 `untracked`,因此 `ct state` 规则将不再匹配它。`tcp flags syn` 会匹配 `syn|ack`;而 `tcp flags & (syn|ack) == syn` 则不会。 ### 它能导入您正在运行的配置,并加以证明 粘贴 `nft list ruleset` 的输出,或者直接从主机读取它。在导入任何内容之前,eFeFlow 会**从模型重新输出每条规则并逐行进行比较**。它报告的百分比是没有任何内容在转换中丢失的真实证据——如果某条规则无法复现,它会指出是哪一条。 ### 其他方面
Set manager
Sets as real assets
Back-references computed from your rules. Rename one and every rule that uses it follows.
Topology
Topology from the rules
Interfaces and zones derived from what your rules actually name. Nothing declared.
Generated code
Live source
Edit a field and the nft re-emits. Click a line and it selects the rule. Four export formats.
Dashboard
The ruleset at a glance
Packet path, health, worst-case evaluations per packet.
全程支持双语:英语和西班牙语。nftables 的词汇绝不会被翻译——您编写的是 `accept`,而不是 `aceptar`。 ## 安装 从 [**Releases**](https://github.com/eFeSpain/efeflow/releases/latest) 获取安装包: Linux `.deb` `.rpm` `.AppImage` · Windows `.msi` · macOS `.dmg` ### `nft` 的运行位置 `nft` 仅在 Linux 上存在,因此原生集成有所不同: | | Linux | Windows | macOS | |---|:---:|:---:|:---:| | 设计、分析、模拟、导入、导出 | ✅ | ✅ | ✅ | | 使用本地 `nft -c` 进行验证 | ✅ | — | — | | 读取本地 `nft list ruleset` | ✅ | — | — | | 以上两项**通过 SSH** 执行 | ✅ | ✅ | ✅ | **SSH 不是备用方案,而是设计核心**——防火墙通常并不是您打开编辑器的那台机器。单击右上角的标签将 eFeFlow 指向一台主机。它会直接调用系统 `ssh`,因此您的密钥、代理和 `~/.ssh/config` 均已生效,并且 eFeFlow 不会存储任何凭据。 应用规则集时会先进行验证,并且如果没有明确的确认将拒绝执行。这是唯一一项可能将您锁定在机器之外的操作。 ## 从源码构建 ``` npm install npm run app # the desktop app npm run dev # or the frontend alone, in a browser npm test # 155 assertions npm run app:build # installers in src-tauri/target/release/bundle/ ``` 针对您的平台需要满足 [Tauri 前置条件](https://tauri.app/start/prerequisites/)。在 Debian/Ubuntu 上: ``` sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev librsvg2-dev patchelf ``` ## 贡献 欢迎提交 Bug 报告——尤其是那些无法通过往返(round-trip)测试的规则集。这种 bug 正是值得了解的:请粘贴规则集以及检查程序报告的内容。 [**构建方式**](docs/architecture.md) 涵盖了模块布局、为什么核心部分要保持脱离 DOM,以及这三个测试层是如何诞生的。 ## 许可证 MIT
标签:Docker 部署, Mutation, nftables, 可视化, 可视化界面, 暗色界面, 流量模拟, 网络运维, 自定义脚本, 防火墙