macOS Sierra 上的 PF 似乎没有读取 ApplicationFirewall

macOS Sierra 上的 PF 似乎没有读取 ApplicationFirewall

我让 PF 正常工作,但当我启动/重新启动系统时,postfix“主”程序会询问我是否要授予它接受来自互联网的连接的权限。现在,权限已在 SystemFirewall 中设置,您可以通过首选项进行设置。但是,我在 /etc/pf.anchors/local.rules 中也有自己的规则集,pf 会在启动时加载这些规则集。

#
# com.apple anchor point
#
int_if  = "en0"
lan_net = "192.168.0.0/24"

set skip on lo0
tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s }"
udp_services = "{ domain }"


scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
#

因此我使用 pfctl -ef /etc/pf.anchors/local.rules 在 plist 中启动 pfctl

一切都运行良好 - 除了 postfix master。它告诉我 pfctl 没有读取 250.ApplicationFirewall/* 锚点 - 它应该是 ... ApplicationFirewall 规则。

sudo pfctl -a com.apple -sr

返回

No ALTQ support in kernel
ALTQ related functions disabled
anchor "200.AirDrop/*" all
anchor "250.ApplicationFirewall/*" all

是不是我不应该同时运行应用程序防火墙和 pf 控制器?或者,我该如何告诉 pf 规则真正读取 ApplicationFirewall 规则?

答案1

2 防火墙

在 MacOS 上,您有 2 个独立的防火墙:第一个防火墙在协议级别运行,是来自 OpenBSD 的数据包过滤器。它通过 激活pfctl -e -f pf_configuration_file

第二个是,ApplicationFirewall它在套接字级别工作,但作为初步步骤,请启用 PF。它通过 GUI 激活System Preferences > Security & Privacy > Firewall > Firewall Options…

这两个防火墙可以单独或一起工作。但 MacOS 的 GUI 将两者结合在一起。

应用程序防火墙正在加载其自己的一组 PF 规则,这些规则基于:

/com.apple/250.ApplicationFirewall

遗憾的是,这套规则的来源已无法查阅。

然后这两个防火墙应该可以独立完美地工作。不幸的是,应用程序防火墙的 GUI 会自行启动 PF,而这并没有记录下来。

我认为 Apple 在这 2 层防火墙上的工作尚未完成。我最好的建议是,要摆脱这个未记录的 GUI,请制作树的完整本地副本:

/com.apple/250.ApplicationFirewall

1 缺少工具

使用 PF 和锚树时,很难对在特定时间应用的整套规则有正确的认识。

除此之外,没有其他标准工具pfctl可以分析安全问题。

您可以用以下工具来帮助您完成此过程:

转储

为了分析您的问题,我建议您使用nmap(查看BrewMacports)来检查您的master是否可以在本地访问25/tcp

相关内容