daniel-armbrust/armfirewall-proj

GitHub: daniel-armbrust/armfirewall-proj

一个轻量级 Linux 防火墙管理平台,通过 SQLite 持久化、后台守护进程和 FastAPI Web 界面将普通服务器转变为可控的网络安全设备。

Stars: 0 | Forks: 0

# ArmFirewall ArmFirewall 是一个 Linux 防火墙管理平台,旨在将小型服务器或虚拟机转变为受控的网络安全设备。该项目结合了操作系统自动化、SQLite 中的持久化配置、后台守护进程、基于 RRD 的监控以及响应式 FastAPI Web 界面。 该应用侧重于可预测的防火墙操作:基线保护规则由引导过程维护,用户定义的防火墙和路由更改被持久化在数据库中,并且操作更改通过受控的工作请求来应用,而不是直接从 Web 界面执行。 ## 主要功能 - 管理 filter、NAT 和 mangle 表的 IPv4 和 IPv6 防火墙规则。 - 将防火墙规则、NAT 规则、mangle 规则、策略路由、接口清单、延迟目标、工作请求和日志持久化在 SQLite 数据库中。 - 使用所需的操作系统软件包、数据库架构、防火墙默认设置、策略路由数据以及 supervisor 管理的服务来引导主机。 - 在应用 ArmFirewall 控制的 iptables 和 ip6tables 规则之前,禁用冲突的操作系统防火墙服务。 - 配置 LAN 和 WAN 接口,启用 WAN DHCP,维护单一默认路由,并为 LAN 到 WAN 的转发应用伪装 (masquerading)。 - 使用 RRD 文件和生成的 PNG 图表监控系统、网络、文件系统、套接字状态和延迟指标。 - 提供包含仪表板、网络、防火墙、监控、服务和工具部分的响应式 Web GUI。 - 通过持久化的 `workreqd` 守护进程处理排队的操作系统更改。 ## 架构 ArmFirewall 的组织围绕明确的职责边界展开: - `main.py` 初始化 FastAPI 应用、中间件、静态文件和路由模块。 - `web/` 包含 Web GUI、模板、静态资源、视图、API 和 HTTP 路由组合。 - `core/` 包含共享辅助工具,例如 SQLite 访问、接口辅助和日志记录。 - `bin/armfw.sh` 是主要的引导/启动脚本。 - `bin/scripts/` 包含用于依赖项、DDL 执行、防火墙规则、策略路由、延迟默认值和 shell 日志记录的操作系统自动化脚本。 - `daemons/` 包含后台和任务执行进程。 - `daemons/monitord/` 包含负责 RRD 更新和图表生成的监控收集器。 - `db/ddl/` 包含版本化的 SQLite 架构。 - `rrd/` 存储运行时的 RRD 数据库和生成的图表图像。 - `conf/` 存储本地运行时配置文件。 ## 持久化守护进程 该项目使用 `supervisord` 来控制长时间运行的服务: - `armfirewall-api`:运行 FastAPI Web 应用程序。 - `armfirewall-ifaced`:收集网络接口清单和计数器到 SQLite 中。 - `armfirewall-monitord`:运行监控收集器并生成 RRD 图表。 - `armfirewall-workreqd`:处理排队的工作请求并分派操作系统操作。 Supervisor 日志轮换为每个受管进程进行了配置。 ## 防火墙与路由模型 防火墙模型将运行时的操作系统状态与持久化配置分离: - 受保护的引导规则由启动脚本创建和验证。 - 用户定义的规则存储在匹配的 SQLite 数据库中。 - 从 GUI 应用更改会创建工作请求。 - 工作请求处理程序将更改应用到操作系统并更新请求状态。 策略路由使用 Linux `iproute2` 管理,包括在 `/etc/iproute2/rt_tables` 中注册路由表,以及在 `db/policy-routing.db` 中持久化路由/规则元数据。 ## 监控模型 监控收集器使用 Linux `/proc`、系统命令、SQLite 配置和 RRDTool: - 接口流量和错误。 - CPU、负载平均值、内存、进程状态、运行时间、熵和内核计数器。 - 文件系统使用情况和 I/O。 - 套接字状态。 - 在 `db/latency.db` 中配置的延迟目标。 生成的图表以每日、每周、每月和每年的变体写入到 `rrd/img` 目录下。 ## 数据库架构 SQLite 数据库架构保存在 `db/ddl/` 中,并由 `bin/scripts/execddl.sh` 应用。运行时的 `.db`、`.wal` 和 `.shm` 文件在本地生成,不应进行版本控制。 重要的架构包括: - `iface.ddl` - `latency.ddl` - `policy-routing.ddl` - `work-requests.ddl` - `logs.ddl` - `ipv4-firewall-rules.ddl` - `ipv6-firewall-rules.ddl` - `ipv4-nat-rules.ddl` - `ipv6-nat-rules.ddl` - `ipv4-mangle-rules.ddl` - `ipv6-mangle-rules.ddl` ## 启动 以 root 身份运行主要的引导脚本: ``` bin/armfw.sh ``` 该脚本安装依赖项,应用 DDL,收集接口选择,配置路由,应用基线防火墙规则,确保默认的延迟目标,并通过 supervisord 启动服务。 ## 开发说明 - Python 依赖项列在 `requirements.txt` 中。 - Web GUI 中的 JavaScript 是纯浏览器 JavaScript。 - 生成的运行时数据(例如 SQLite 数据库、RRD 文件、图表图像、日志、虚拟环境和本地配置文件)被有意排除在版本控制之外。 - DDL 文件已进行版本控制,代表了数据库结构的可靠来源。 ## 作者 ArmFirewall 由 Daniel Armbrust 创建,并作为 Linux 防火墙、路由和监控用例的开放基础设施项目进行维护。 ## 许可证 ArmFirewall 在 MIT 许可证下发布。您可以自由使用、复制、修改、合并、发布、分发、再授权和销售本软件的副本,前提是必须保留原始版权声明和许可证文本。 ## 项目状态 ArmFirewall 正在积极开发中。当前的工作重点是防火墙规则管理、策略路由、监控、延迟探测以及从紧凑型网络设备接口操作这些功能所需的 Web GUI。
标签:AV绕过, Cutter, FastAPI, Google搜索, IPv4, IPv6, Linux防火墙, Mangle表, Mr. Robot, NAT网关, PowerShell, RRD监控, SQLite持久化, Web GUI, Web界面, 后台守护进程, 数据包过滤, 数据可视化, 无线安全, 树莓派服务器, 流量监控, 系统自动化, 网络安全设备, 网络架构, 网络策略, 路由配置, 边缘计算, 运维工具, 逆向工具, 防火墙管理平台