网络扩展框架与内核扩展

时间:2020-01-15 23:16:31

标签: network-programming filtering firewall macos-catalina kernel-extension

我正在寻求为macOS实现防火墙/网络过滤功能。

我正在寻找一种最安全的方法,即尝试确保没有网络流量丢失,并且不能轻易绕开我的过滤条件。

搜索后,我可以看到Apple已弃用Network Kernel Extension。他们现在建议使用Network Extension框架。

但是,我看到Mac的防火墙(例如LuluLittle Snitch)已经转移到使用内核扩展,而不是网络扩展框架。

是否有充分的理由这样做?内核扩展是否允许更深入,更安全的过滤?

1 个答案:

答案 0 :(得分:1)

例如Lulu和Little Snitch已转为使用内核扩展

我不能代表Lulu,但是Little Snitch至少是在引入“网络扩展” API之前很久才开发的,它肯定没有“移至” NKE API。 According to an article on their own blog似乎他们正在积极研究向网络扩展的迁移。我怀疑只要NKE在不受支持的所有macOS版本上都能不受限制地工作,他们将继续使用它们,以便不必同时交付不同的后端。但是他们可能已经有了使用较新API的某种内部原型,以确保为最终从操作系统中删除NKE API做好准备。

如果网络扩展支持您的用例,则您可能应该选择它们。如果没有,则应向Apple提出“增强请求”,否则当NKE停止工作时,您将无法选择。

编辑:要部署NKE,如果您还没有证书,则基本上需要一个kext签名证书(Developer ID Application + Kext)。另一种选择是强制用户禁用SIP的kext签名要求,这在大多数情况下既不明智也不合理。听说苹果近年来使获得这样的证书变得更加困难。