Linux 版 LittleSnitch
Source: Hacker News

入门指南
安装完成后,在终端运行 littlesnitch 打开用户界面,或直接访问 http://localhost:3031/。你可以将该 URL 加入书签,或将其安装为渐进式网页应用(PWA)。任何基于 Chromium 的浏览器都原生支持此功能,Firefox 用户可以使用 Progressive Web Apps 扩展实现相同效果。
监视连接
连接视图按应用列出当前和过去的网络活动,显示哪些被你的规则和阻止列表拦截,并跟踪数据量和流量历史。你可以按最近活动、数据量或名称进行排序,并过滤列表以显示相关项,轻松发现任何异常。拦截连接只需一次点击。
底部的流量图显示随时间变化的数据量。拖动选择时间范围即可放大并将连接列表过滤为该期间的活动。
管理阻止列表

阻止列表让你一次性切断整类不需要的流量。Little Snitch 会从远程来源下载它们,并自动保持最新。它支持多种常见格式的列表:
- 每行一个域名
- 每行一个主机名
- 类似
/etc/hosts的格式(IP 地址后跟主机名) - CIDR 网络范围
不支持通配符格式、正则表达式或 glob 模式,也不支持基于 URL 的格式。若有选择,建议使用基于域名的列表而非基于主机名的列表,以提升效率。常见来源包括 Hagezi、Peter Lowe、Steven Black 和 oisd.nl。
注意: 来自 macOS 版 Little Snitch 的
.lsrules格式与 Linux 版不兼容。
编写自定义规则

阻止列表在域名层面起作用,而规则则可以更进一步。规则可以针对特定进程、匹配特定端口或协议,并且可以根据需要设定为宽泛或精确。规则视图允许你对规则进行排序和过滤,帮助你在列表不断增长时保持掌控。
确保访问安全
默认情况下,Little Snitch 的网页界面对本地运行的任何应用程序开放。行为异常或恶意的应用程序可能会添加或删除规则、篡改阻止列表,甚至完全关闭过滤器。
如果您对此感到担忧,Little Snitch 可以配置为需要身份验证。详细信息请参见下面的 高级配置 部分。
底层原理
Little Snitch 使用 eBPF,这是一种让程序观察和拦截内核活动的机制,挂钩到 Linux 网络栈。eBPF 程序监视出站连接并将数据传递给守护进程,守护进程负责统计、评估你的规则,并提供网页 UI。
eBPF 程序和网页 UI 的源代码托管在 GitHub。
Source:
高级配置
UI 故意只公开最常用的设置。任何更技术性的配置都可以通过纯文本文件进行,修改后需要重启 littlesnitch 守护进程才能生效。
默认配置位于 /var/lib/littlesnitch/config/。不要直接编辑这些文件——将要修改的文件复制到 /var/lib/littlesnitch/overrides/config/ 中并在那里编辑。Little Snitch 总是优先使用覆盖文件。
关键配置文件
web_ui.toml– 网络地址、端口、TLS 与身份验证。若有多个用户能够访问 UI,请启用身份验证;若 UI 暴露在回环接口之外,请添加合适的 TLS。main.toml– 对未匹配任何规则的连接的默认操作。默认是允许;你可以改为拒绝以采用白名单方式,但要小心不要把自己锁在外面。executables.toml– 用于对应用程序进行分组的启发式规则。它会从可执行文件路径中剥离版本号,使同一应用的不同版本显示为单一条目,并定义哪些进程算作 shell 或应用管理器,以便将连接归属到正确的父进程。这些启发式规则会随着社区反馈而逐步改进。
如果需要,eBPF 程序和 Web UI 都可以替换为自定义构建。两者的源代码都在 GitHub 上,Little Snitch 更倾向于使用 overrides 中的版本。
限制说明
Little Snitch for Linux 是为隐私而构建,而非安全,这一区别很重要。macOS 版可以提供更强的保证,因为它可以利用更复杂的系统集成。
在 Linux 上,基础是 eBPF,虽然强大但受限:它对存储大小和程序复杂度有严格限制。高流量情况下,缓存表可能会溢出,导致无法可靠地将每个网络数据包关联到进程或 DNS 名称。
为给定 IP 地址重建原始主机名依赖于启发式方法,而非确定性。macOS 版使用深度数据包检查以获得更可靠的结果,而此处不可用。
对于监控软件行为并阻止合法应用“回报”,Little Snitch for Linux 表现良好。对于防御有决心的对手来强化系统,它并不是合适的工具。
许可证
Little Snitch for Linux 有三个组件: