如何让一个snap类型的桌面应用程序无法访问网络?
- 2025-01-07 22:04:00
- 丁国栋
- 原创 25
现在很多应用程序想访问网络以获得更新,甚至是展示广告,为了避免他们无限制无休止的访问网络,最好的办法就是禁止他们访问网络,除非我们允许它。
为此我尝试了 firejail 这个工具,但这个工具对 Snap 类型的桌面应用程序是无效的。通过一番查找后,我找了以下方法来控制是否移除一个应用程序的网络访问能力。
对于通过Snap安装的桌面应用程序,限制其网络访问可以通过使用Snap的内置安全特性来实现。Snap包管理器为每个应用程序提供了一个受限的运行环境,称为“confinement”,默认情况下是“strict”模式,这已经提供了相当高的安全性。然而,可以进一步限制应用程序的权限,包括网络访问。
要限制一个特定的Snap应用不访问网络,可以使用snap connections
和snap disconnect
命令来管理接口(interfaces),这些接口定义了Snap可以与系统交互的方式。可以根据需要断开与网络相关的接口连接。
注:可以通过 snap list 命令获取当前已经安装的应用程序。
1. 列出当前的应用程序接口连接
首先,列出给定Snap应用的所有接口连接,以查看它是否连接到了任何网络相关的接口:
snap connections <snap_name>
将<snap_name>替换为我们要限制的Snap应用程序的名称。
2. 断开网络相关接口
如果我们发现有网络相关的接口被连接,比如network或network-bind,我们可以使用以下命令来断开它们:
sudo snap disconnect <snap_name>:network sudo snap disconnect <snap_name>:network-bind
注:有的应用并没有 network-bind,可以根据实际情况来执行。
例如,如果要断开名为google-chrome的Snap应用的网络连接,可以这样做:
sudo snap disconnect google-chrome:network sudo snap disconnect google-chrome:network-bind
3. 确认更改
再次运行snap connections <snap_name>以确认网络接口已经被成功断开。
4. 测试应用
启动该Snap应用程序并测试它是否还能访问网络。如果一切正常,应该会看到应用程序无法进行网络请求。
注意事项
断开网络接口可能会导致某些依赖于网络功能的应用程序无法正常工作,所以在做这个操作之前,最好仔细确认以下这样做的必要性。
如果之后想要恢复网络访问,可以使用snap connect命令重新连接网络接
sudo snap connect <snap_name>:network sudo snap connect <snap_name>:network-bind
某些Snap应用程序可能包含多个插件或扩展,这些也可能有自己的网络接口。需要检查所有相关的接口或者网络请求(比如通过观察netstat或者tcpdump抓包),并根据需要进行断开。
通过上述步骤,就可以有效地限制一个Snap类型的桌面应用程序的网络访问权限。这种方法不仅简单而且不需要额外的配置,毕竟它是基于Snap自身的安全机制实现的。
现在我开始有点喜欢 snap 了,它的这些管理特性让我觉得 snap 是一个不错的设计,它改变了我过去对 snap 的一些错误看法。不过 Gnome 桌面环境可以像 Microsoft Windows 那样在第一次应用程序想访问网络时给出提示,并且允许用户作出自己的选择,如果用户想后面再修改可以像 Windows 防火墙那样轻松配置。