知行迭代
导航
首页
最近更改
随机页面
常用
分类目录
Linux命令
Mediawiki常用
电脑技巧
工具
链入页面
相关更改
特殊页面
页面信息
登录
查看“OpenSnitch”的源代码
←
OpenSnitch
页面
讨论
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:[
[1]
]
您可以查看和复制此页面的源代码。
OpenSnitch 是 Linux 上一款的交互式应用防火墙,灵感来自 macOS 上的 Little Snitch。它最特别的地方在于能监控并拦截应用程序发起的对外网络连接, == 简介 == === 核心组件 === OpenSnitch 主要由两个核心部分组成,理解这两部分有助于后续的操作: * '''守护进程 (opensnitchd)''':这是运行在后台的核心服务,负责实际拦截网络连接并根据规则进行匹配。需要将其设置为系统服务,以实现开机自启。 * '''用户界面 (opensnitch-ui)''':这是一个图形界面程序,用于显示网络请求弹窗、管理防火墙规则以及查看网络统计信息。它会在系统托盘区显示图标。 当某个尚未配置规则的进程尝试建立网络连接时,守护进程会拦截该连接,并向用户弹出一个对话框询问如何处理(允许或拒绝)。用户做出的选择会被保存为一条新规则,此后同一进程再次尝试连接时,规则将自动生效。 == 安装 == === Debian / Ubuntu 及衍生版 === Ubuntu 23.04 及以上,直接使用apt安装。 sudo apt install opensnitch Ubuntu 22.04 及更低版本:从 GitHub Releases 下载 <code>.deb</code> 软件包。访问 OpenSnitch 的 [https://github.com/evilsocket/opensnitch/releases GitHub Releases 页面],下载最新版本。 安装完成后,启动并启用守护进程服务: <syntaxhighlight lang="bash"> sudo systemctl enable --now opensnitch </syntaxhighlight> === 其他发行版 === * '''Fedora / RHEL 系''':在 [https://github.com/evilsocket/opensnitch/releases Releases 页面] 下载 <code>.rpm</code> 软件包,并使用 <code>sudo dnf install</code> 或 <code>sudo rpm -ivh</code> 命令进行安装。 * '''Arch Linux''':可通过 AUR 安装,例如使用 <code>yay -S opensnitch</code> 命令。 * '''NixOS''':在 <code>configuration.nix</code> 配置文件中添加 <code>services.opensnitch.enable = true;</code> 并重建系统。 == 基本使用方法 == === 首次启动与初始设置 === # 在应用菜单中找到并启动 “OpenSnitch UI”。程序窗口可能不会直接打开,但会在系统托盘区域出现一个图标。 # 右键点击系统托盘图标,选择 '''“Open main window”'''(打开主窗口)。 # 官方建议的策略是:在新系统上,先将默认动作设为“允许”,让 OpenSnitch 运行几天以学习正常的网络行为并记录规则。之后再切换至更严格的模式,手动审查并调整规则。 === 处理弹窗与创建规则 === 这是 OpenSnitch 最核心的交互方式。当某个尚未配置规则的应用发起网络连接时,会弹出如下的配置对话框: * '''动作 (Action)''':选择 '''Allow'''(允许)或 '''Deny'''(拒绝)。 * '''持续时间 (Duration)''': ** '''Until restart''':仅对本次会话有效,重启后失效。 ** '''For a session''':在用户登出之前有效。 ** '''Always''':创建永久规则,这是最常用的选项。 * '''范围 (Scope)''':可以选择此规则仅应用于当前应用程序、该应用程序及其所有子进程,或是全局生效。 === 使用主窗口管理规则 === 主窗口是管理防火墙规则的控制中心。 * '''Events(事件)'''标签页:实时显示所有被拦截或允许的连接历史记录,可以清晰地查看哪个应用连接到了哪个 IP 地址和端口。 * '''Applications(应用)'''标签页:列出所有已配置规则的应用程序。在此可以双击某条规则进行修改,或点击左上角的 '''“+”''' 按钮手动添加新规则。 * '''Hosts(主机)'''标签页:按域名或 IP 地址聚合统计连接情况。 ==== 手动创建规则示例 ==== 假设需要永久阻止对 <code>www.example.org</code> 的所有访问,可以按以下步骤操作: # 在主窗口点击 '''“+”''' 按钮。 # 为规则命名,例如 <code>Block Example</code>。 # 将 '''Action''' 设置为 <code>Deny</code>,'''Duration''' 设置为 <code>Always</code>。 # 切换到 '''Network''' 标签页,在 '''“To this host”''' 字段中输入 <code>www.example.org</code>。 # 点击 '''Save''' 保存规则。 == 高级配置与技巧 == === 配置文件位置 === * '''守护进程规则存储路径''':<code>/etc/opensnitchd/rules/</code> * '''守护进程配置文件''':<code>/etc/opensnitchd/default-config.json</code> * '''系统防火墙规则(用于绕过 OpenSnitch)''':<code>/etc/opensnitchd/system-fw.json</code> 可以通过编辑上述 <code>.json</code> 文件来批量导入或备份规则。例如,一条允许 <code>tor</code> 进程的规则示例如下: <syntaxhighlight lang="json"> { "tor": { "name": "tor", "enabled": true, "action": "allow", "duration": "always", "operator": { "type": "simple", "sensitive": false, "operand": "process.path", "data": "/nix/store/.../bin/tor" } } } </syntaxhighlight> === 进程监控方式 === OpenSnitch 支持三种监控进程发起连接的方式,可以在配置文件中进行调整: * '''<code>ebpf</code>(推荐)''':性能最佳,功能最强,能够拦截由内核发起的连接。需要 Linux 内核版本 5.5 或更高。 * '''<code>audit</code>''':利用 Linux 审计子系统,性能较好。 * '''<code>proc</code>''':通过读取 <code>/proc</code> 文件系统获取信息,作为备选方案。 === 避免干扰(VPN 或信任服务) === 如果希望某些流量完全不被 OpenSnitch 处理(例如 VPN 的守护进程),可以将其加入“系统防火墙规则”中。编辑 <code>/etc/opensnitchd/system-fw.json</code> 文件,添加相应的 iptables 或 nftables 规则。这样做可以提升性能并避免潜在的配置冲突。 == 故障排除 == === 没有弹窗,应用直接被阻止? === * 这可能是因为之前创建了静默规则但已忘记。请检查组件中的规则列表。 * 也可以尝试在图形界面的 '''Preferences -> Nodes''' 选项中,启用 '''“Debug invalid connections”''' 功能。这能让未匹配到规则的连接也弹出提示,便于调试。 === 如何调试启动问题? === # 先停止后台服务:<code>sudo systemctl stop opensnitch</code>。 # 在前台手动启动守护进程并开启调试输出,以便查看具体错误信息:<code>sudo /usr/bin/opensnitchd -debug</code>。 # 如果图形界面崩溃,可以在终端中直接输入 <code>opensnitch-ui</code> 命令,并观察输出的错误信息。 === 图形界面显示异常(如出现黑块)? === 如果在使用 Wayland 显示服务器或某些窗口管理器时遇到界面渲染问题,可以尝试在启动图形界面之前设置以下环境变量: <syntaxhighlight lang="bash"> export QT_QPA_PLATFORM=xcb opensnitch-ui </syntaxhighlight>
返回至“
OpenSnitch
”。