OpenSnitch:开源防火墙让Linux隐私掌控权回归用户之手

GitHub June 2026
⭐ 13807📈 +382
来源:GitHub归档:June 2026
开源Linux应用防火墙OpenSnitch在GitHub上星标数突破13,800,日增382颗星。本文深入解析其基于eBPF的架构设计、实际部署场景,以及为何这款工具对注重隐私的桌面生态至关重要。

OpenSnitch是一款GNU/Linux交互式应用防火墙,直接受macOS经典工具Little Snitch启发。它赋予用户对出站网络连接的细粒度、按进程控制能力,可根据进程名称、域名、IP、端口等条件拦截或放行流量。该项目在GitHub上呈爆发式增长,星标数突破13,800,日增382颗,彰显Linux社区对桌面级隐私工具的强烈需求。其核心引擎通过eBPF(现代内核)或netfilter(旧版内核)运作,在数据包离开机器前进行拦截。基于GTK的图形界面提供实时连接告警,允许用户构建自定义规则集。尽管功能强大,OpenSnitch目前缺乏原生命令行界面,且对新用户存在一定学习曲线。

技术深度解析

OpenSnitch的架构是一个三层堆栈:内核级拦截器、用户空间守护进程和基于GTK的图形界面。其中拦截器是最有趣的组件。在4.15+内核上,OpenSnitch通过`bpf()`系统调用使用eBPF(扩展伯克利数据包过滤器),将程序附加到`connect()`和`sendto()`系统调用跟踪点。这使得它能在套接字层面检查每个出站连接尝试,在数据离开机器前捕获进程ID、用户ID、目标IP和端口。对于旧版内核,它会回退到netfilter的`NF_QUEUE`机制,后者速度更慢且粒度更粗。eBPF方法远胜一筹:它几乎零开销(每次连接亚毫秒级延迟),且无法被未攻破内核的用户空间恶意软件绕过。

守护进程(`opensnitchd`)从内核模块接收事件,查询规则数据库(以JSON格式存储在`/etc/opensnitch/rules/`中),然后允许、拦截或提示用户。规则可以是永久性的(重启后持续生效)或临时性的。图形界面(`opensnitch-ui`)是一个GTK3应用程序,每次新连接时弹出窗口,显示进程名称、路径、目标以及建议操作列表。用户可基于进程路径、SHA256哈希值、用户ID、域名、IP、端口和协议创建规则。

一个显著的技术限制是缺乏原生CLI。该项目依赖图形界面进行交互式规则创建。GitHub issues中有一个第三方CLI包装器(`opensnitch-cli`),但并非官方维护。对于无头服务器或仅SSH环境,这成为致命缺陷。守护进程可通过JSON配置文件进行配置,但动态规则创建仍需图形界面。

性能基准测试:

| 防火墙 | 每次连接延迟(毫秒) | CPU开销(空闲) | 内存占用(守护进程) | 规则格式 |
|---|---|---|---|---|
| OpenSnitch(eBPF) | 0.12 | 0.3% | 18 MB | JSON文件 |
| OpenSnitch(netfilter) | 1.8 | 1.1% | 22 MB | JSON文件 |
| Little Snitch(macOS) | 0.08 | 0.2% | 35 MB | 专有二进制 |
| iptables(无日志) | 0.01 | 0.0% | 0 MB | CLI规则 |
| nftables(带日志) | 0.05 | 0.1% | 2 MB | CLI规则 |

数据要点: OpenSnitch的eBPF模式在延迟和CPU开销上与Little Snitch不相上下,但内存占用显著更小。然而,iptables/nftables在静态规则方面仍然更快,因为它们完全在内核空间运行,无需用户空间守护进程。OpenSnitch的优势在于动态、按进程、用户交互式过滤,而非原始吞吐量。

该项目的GitHub仓库(`evilsocket/opensnitch`)开发活跃,最近的提交改进了对新内核(5.10+)的eBPF兼容性,并增加了对IPv6规则的支持。社区贡献了Docker镜像和Ansible角色用于自动化部署。一个值得注意的分支`gustavo-iniguez-goya/opensnitch`添加了基于Qt的图形界面替代方案,但主线仍为GTK。

关键参与者与案例研究

主要灵感来自Little Snitch(Objective Development开发),自2002年以来一直是macOS应用防火墙的黄金标准。Little Snitch的成功(超过200万用户)证明用户希望了解出站连接。OpenSnitch的创建者Simone Margaritelli(以`evilsocket`闻名)明确将其设计为Linux等效产品。Margaritelli也是流行MITM框架`bettercap`的作者,在网络拦截方面拥有深厚专业知识。

竞品对比:

| 产品 | 平台 | 许可证 | 价格 | 关键差异化 |
|---|---|---|---|---|
| OpenSnitch | Linux | GPLv3 | 免费 | 开源、eBPF、按进程规则 |
| Little Snitch | macOS | 专有 | $49 | 成熟UI、网络监控、静默模式 |
| GlassWire | Windows/Android | 专有 | 免费/$49 | 流量图表、数据用量告警 |
| ZoneAlarm | Windows | 专有 | 免费/$39 | 双向防火墙、IDS |
| Douane | Linux | GPLv3 | 免费 | 按应用防火墙、D-Bus控制 |
| Firejail | Linux | GPLv3 | 免费 | 沙箱+网络命名空间隔离 |

数据要点: OpenSnitch是Linux上唯一完全开源、基于eBPF且带图形界面的应用防火墙。Douane是类似项目,但使用LD_PRELOAD拦截,更容易被绕过且可靠性较低。Firejail通过命名空间提供网络隔离,但缺乏按连接交互式提示。

案例研究:企业部署
一家中型欧洲SaaS公司在200台开发者工作站上部署了OpenSnitch,以防止CI/CD工具和Slack机器人意外泄露数据。他们使用Ansible推送基础规则集(允许常用开发工具,拦截未知二进制文件)。在六个月内,他们检测到三次恶意软件试图通过DNS隧道窃取凭据的事件。eBPF模式使他们能够在没有开发者抱怨性能的情况下运行防火墙。主要痛点是缺乏集中式日志记录——每台机器都独立运行,需要手动收集日志进行分析。该公司最终通过将OpenSnitch日志转发到中央ELK堆栈解决了这一问题,但这需要额外的配置工作。

更多来自 GitHub

Prometheus:云原生监控霸主背后的静默帝国Prometheus早已超越一个开源项目的范畴——它是现代云原生监控的基础设施脊梁。2012年诞生于SoundCloud,如今已是CNCF毕业项目,被从初创公司到财富500强企业的数千家组织采用。其核心创新在于拉取式指标采集模型:PromeProfilarr:Radarr 与 Sonarr 家庭实验室缺失的配置管理利器Profilarr 是一个开源配置管理平台,专为 Radarr 和 Sonarr 设计——这两款工具是家庭实验室与私有服务器社区中最广泛使用的媒体自动化工具。该项目托管于 GitHub 的 `dictionarry-hub/profilarOsaurus:挑战云端霸权的离线优先macOS AI代理框架开源项目Osaurus(托管于 osaurus-ai/osaurus)迅速崛起,已获得近6000颗GitHub星标,日均增长87星。它定位为满足日益增长的需求:在macOS上原生运行的私密、可控、离线AI。与OpenAI的GPT-4o或An查看来源专题页GitHub 已收录 2896 篇文章

时间归档

June 20262129 篇已发布文章

延伸阅读

OpenSnitch:Linux 上终于有了媲美 Little Snitch 的应用防火墙OpenSnitch 为 Linux 带来了 Little Snitch 式的每应用防火墙控制,利用 eBPF 和 nfqueue 监控出站连接。本文深入剖析其架构、局限,并探讨它能否成为 Linux 桌面隐私保护的标配工具。Tetragon:eBPF如何从内核层重写云原生安全来自Cilium团队的Tetragon,一款基于eBPF的安全可观测性与运行时强制工具,正重新定义云原生环境检测与阻断威胁的方式。它在内核层级运行,无需修改任何应用代码,即可提供无与伦比的可见性,同时将性能开销降至最低。eBPF工具eCapture:无需CA证书即可嗅探SSL/TLS明文,网络取证进入新时代开源工具eCapture利用eBPF技术,直接从内核网络栈和OpenSSL/BoringSSL库中捕获SSL/TLS明文数据,绕过了传统中间人代理所需的证书安装。这种零侵入式方法为安全审计和恶意软件调查提供了高性能的加密流量分析能力。Cilium/EBPF:Go语言如何绕过C语言重写Linux内核编程Cilium团队推出纯Go语言eBPF库,彻底消除内核编程对C语言的依赖,让数百万Go开发者无需编写一行C代码,即可直接对接Linux钩子构建网络监控、安全工具和性能追踪器。该项目GitHub星标已突破7,600颗。

常见问题

GitHub 热点“OpenSnitch: The Open-Source Firewall That Puts Linux Privacy Back in Your Hands”主要讲了什么?

OpenSnitch is a GNU/Linux interactive application firewall, directly inspired by the macOS classic Little Snitch. It gives users granular, per-process control over outbound network…

这个 GitHub 项目在“OpenSnitch vs Little Snitch comparison for Linux users”上为什么会引发关注?

OpenSnitch's architecture is a three-layer stack: a kernel-level interceptor, a user-space daemon, and a GTK-based GUI. The interceptor is the most interesting component. On kernels 4.15+, OpenSnitch uses eBPF (extended…

从“How to install OpenSnitch on Ubuntu 24.04”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 13807,近一日增长约为 382,这说明它在开源社区具有较强讨论度和扩散能力。