类似于Little Snitch的应用程序依赖哪些内置工具?


5

Little Snitch是一个著名的软件,它允许Mac用户阻止来自特定应用程序的传出连接。

现在,每当我问如何使用内置OS X工具执行相同操作时,我都会得到如下回答:“没有Little Snitch,您将无法做到这一点。内置PF防火墙不是应用程序防火墙,而内置PF防火墙不是应用程序防火墙。 -AF只能阻止传入流量。没有OS X工具允许这样做。”

这不是真的。我的意思是,在这种情况下,Little Snitch或Hands Off!或RadioSilence之类的小型应用程序将如何实现这一目标?这些应用程序本身肯定必须使用某种内置工具来阻止每个应用程序的流量。我搜索了开源替代方案,并想到了它们的来源并找出“他们如何做到这一点”。但是...我发现没有开源替代品。任何想法?

Answers:


3

Little Snitch使用网络内核扩展来拦截网络流量。

使用NKE,您可以创建可以在网络层次结构中特定位置动态加载和卸载的模块。这些模块可以监视和修改网络流量,并且可以从驱动程序层接收异步事件的通知,例如接口状态更改。

每个网络KPI机制都执行特定的任务。基本的网络KPI机制是:

  • 套接字过滤器KPI,它允许KEXT 过滤给定套接字上的入站或出站流量,具体取决于它们的连接方式。套接字过滤器还可以过滤带外通信,例如对setsockopt或bind的调用。生成的过滤器位于套接字层和协议之间。
  • ...
  • 接口过滤器KPI,它允许KEXT向特定的网络接口添加过滤器。这些接口过滤器(以前称为数据链路NKE)可以在流量流入和流出系统时被动地观察流量(与数据包类型无关)。他们还可以修改流量(例如,加密或执行地址转换)。它们本质上充当协议栈和设备之间的过滤器。
  • ...

正如您提到的那样,存在网络内核扩展的替代方法,但仅适用于某些用例。

因为即使是内核级代码中的微小错误也可能导致严重的后果,包括应用程序不稳定,数据损坏甚至内核崩溃,所以仅在不存在其他机制的情况下,才应使用本文档中描述的技术。例如,在可能的情况下,通常应使用进行IP过滤ipfw。同样,通常应使用进行数据包日志记录bpf

网络内核扩展功能更强大,并且可以进行更详细的控制。

强调引用内容。我对其他软件不熟悉,但是我认为它遵循相同的原理。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.