文章目录
- Linux 应用防火墙 OpenSnitch,获 13.6k Star
Linux 应用防火墙 OpenSnitch,获 13.6k Star
GNU/Linux 平台上一直缺少一款类似 macOS Little Snitch 的应用级出站防火墙,OpenSnitch 的出现填补了这个空白。该项目由安全研究员 evilsocket 发起,目前在 GitHub 上获得了 13,663 个 Star,是 Linux 安全工具栈中的热门项目。
OpenSnitch 的核心机制是对系统上所有程序的出站网络连接进行拦截和管控。每当有进程尝试连接外部服务器时,OpenSnitch 的 GUI 会弹出对话框,清晰显示发起连接的程序名称、PID、目标 IP 和端口,让用户选择允许或拒绝。决策可以保存为规则保存,后续来自同一程序、同一目标的连接请求会自动按照已存储的规则执行,不再重复询问。
从功能层面看,OpenSnitch 提供以下能力:
- 交互式出站连接过滤,按进程、端口、IP、域名等维度创建放行或阻断规则
- 系统级广告屏蔽、跟踪器拦截、恶意域名阻断,可加载社区维护的 block list 实现全网域名过滤
- 通过 GUI 直接配置 nftables 系统防火墙,管理入站策略、开放服务端口、设置白名单
- 多节点集中管理,从单个控制台统一管理多台机器,适合有多台 Linux 设备的场景
- SIEM 集成,将连接事件日志输出到外部安全信息管理系统,便于审计和告警
对于注重隐私的用户,block list 功能价值很突出。通过加载预定义的域名和 IP 黑名单,OpenSnitch 能在系统层面拦截广告和跟踪请求。与浏览器扩展不同,这个拦截作用于所有应用,包括桌面软件、命令行工具、后台服务。只要程序发起网络请求,都在管控范围内。实际使用中,不少用户反馈 OpenSnitch 帮助他们发现了一些程序在后台静默连接的遥测服务器地址。
OpenSnitch 的架构由两个独立组件构成:Go 编写的守护进程(daemon)负责在内核 netfilter 框架之上拦截网络流量,执行规则匹配和连接阻断;Python 编写的 GTK 图形界面负责弹窗交互、规则可视化管理以及系统防火墙配置。两个进程之间通过 gRPC 协议通信,这种分离设计让 daemon 可以脱离 GUI 独立运行,也支持远程连接其他节点上的 daemon 实例。
安装过程比较直接。项目 Release 页面提供 deb 和 rpm 两种预编译包,Debian/Ubuntu 系列使用 apt install 安装 deb 包,Fedora/RHEL 系列使用 dnf 安装 rpm 包。安装完成后在终端执行 opensnitch-ui 或从系统应用菜单直接启动 GUI 即可开始拦截。
项目自 2017 年发布以来,先后被 Linux Format、Linux Magazine、It’s Foss 等多家 Linux 领域媒体报道。最早的维护由 evilsocket 本人进行,之后转由社区开发者接续维护。项目在 WebLate 平台开放了多语言翻译,社区贡献者可持续参与界面汉化和其他语言的翻译工作。
社区贡献者可持续参与界面汉化和其他语言的翻译工作。