-->

阻止应用程序访问通过可可API(LittleSnitch API)的网络?(Block Applic

2019-07-29 23:36发布

我使用的OS X 10.5和我期待的当应用程序试图访问Internet来检测的方式。 在这一点上,我想阻止该应用程序,如果它的一套,我将定义的规则相匹配。

还有的是,我意识到可以用来阻止用户访问某些端口的ipfw的 Unix命令,而是一种影响所有应用程序。 我读了手册页,并没有看到一个方法来使用IPFW来阻止访问,但它限制在一个特定的应用程序。

我的主要问题在于检测其正试图获得对网络外部访问的应用程序。 编程必须有办法做到这一点,无论是通过使用一些Mac OS X的API或Unix命令这可怎么实现的?

更新:基本上我想做什么小打小报告呢,但我想它写从头开始自己,因为我不喜欢小打小报告。 我只需要知道的API可以让我实现了应用网络沙箱,以及如何究竟小打小报告这样做呢?

Answer 1:

我意识到这是晚了一年,但我挖了类似的东西和整个是我认为答案来了。 希望这能帮助别人的路线。

小打小报告似乎使用网络内核扩展过滤流量进入系统。 我已经发现它安装在包装盒内核扩展验证这一点:

[~] kextstat
...
55 0 0x687000 0x2b000 0x2a000 at.obdev.nke.LittleSnitch (2.0.46) <7 6 5 4 2>
...

如果以编程要防止其他应用程序访问网络,这似乎是你最好的选择。 如果你只是想监视其他应用程序的网络使用情况,但是,你还有其他的选择,喜欢libpcap



Answer 2:

如果你的目标OS X 10.5(Leopard)的,则可以使用沙箱API。 sandbox_init可能是一个良好的开端; 您可以使用kSBXProfileNoInternet选项停止互联网接入。

还有一个更详细的文章在这里它提供了使用安全带的扩展更细粒度控制的一些例子。



Answer 3:

应用防火墙在Mac OS X 10.5有类似的功能,但目前苹果只用它来允许接受传入的连接/块特定的应用程序支持。 这是通过内核扩展,这是通过控制守护程序完成/usr/libexec/ApplicationFirewall/socketfilterfw ,而这又是使用防火墙设定窗格配置。



Answer 4:

有没有办法一个用户空间程序能够做你的描述。 我想,作为root运行甚至不处理。 请记住:我们不是在运行Windows这里。 即使是这样,你可能不应该指望可可来支持它。 可可是低级别的系统开发GUI的易于使用的东西Mac OS X中没有的。

完成你描述的唯一方法,就是扩展内核,这是小打小报告呢。 如果有其他一些聪明的办法,我向你保证小打小报告做法就会完全不同了。 内核扩展是不适合的善良微弱。 当一个内核扩展崩溃,整个系统崩溃 。 所以你最好知道你做了什么。

你可以,不过,得到的过程和从用户空间眼窝信息,但不使用可可。 而且,只有用户自己的过程中,如果您的应用程序没有作为root运行。 您需要使用libproc,这是不是苹果记录。 你必须弄清楚如何lsof的做的。 而你仍然无法与你所得到的篡改。

我猜你只是用小打小报告的更好。 由小打小报告增加的开销是稍微小,我答应你,你会不会感觉不一样。 它只是忍住套接字连接,直到已经作出决定 - 由您或软件。

如果,但是,你应该还是觉得想写自己的内核扩展, 网络内核扩展编程指南苹果是你所需要的。 在“套接字过滤器”一节中介绍小打小报告使用的接口。



Answer 5:

对不起,这个问题不说清楚,如果你想编写自己的程序来解决这方面的需求,或者如果你只是问,如果有任何程序已经在那里,填补了同样的作用。

如果是后者,那么小打小报告不正是你问什么。 它会告诉你哪些应用程序正在试图访问外部网络,并给你的是否允许访问选项或根据设定​​的规则来否认。 这不是全自动的,但。



文章来源: Block Application access to network via a Cocoa API (LittleSnitch APIs)?