macOS Catalina 中的数据包过滤器 (pf) 防火墙:如何限制对本地网络上特定 IP 地址的 www 访问?

macOS Catalina 中的数据包过滤器 (pf) 防火墙:如何限制对本地网络上特定 IP 地址的 www 访问?

我正在尝试在 macos Catalina 10.15.3 上使用pf防火墙,以允许家庭网络上的特定本地 IP 地址访问 www (80,443)。此本地 IP 地址将从 nginx 实例请求网页。如果我在设置=>安全和隐私中关闭 macos 防火墙,则 www 成功,并显示 nginx。但是,当防火墙启用时,我无法让特定 IP 地址的请求通过。最初,我的 nginx 设置在端口 80 和 443 上进行监听。

随后,我尝试研究如何配置pf防火墙以允许特定 IP 地址的请求通过。我的 /etc/pf.conf 当前如下:

#
# com.apple anchor point
#
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"

#
# only allow www traffic on wifi interface from a specific LAN ip address
#
www_services = "{ http, https }"
pass quick inet proto tcp from <the LAN IP address> to any port $www_services keep state
#int_if = "en0"
#table <allowed> { <the LAN IP address> } persist
#block in quick from urpf-failed
#block return in quick on $int_if proto tcp from !<allowed> to $int_if port 80

有人可以帮忙吗?

我正在使用 pf 防火墙启用pfctl -E并禁用pfctl -X <token>

有趣的是,如果我将 nginx 配置为监听除端口 80 之外的其他端口,然后将 nginx 添加到安全和隐私防火墙中允许的应用程序列表中,则请求将被允许通过。

但是,我怀疑 LAN 上的所有 IP 地址和 nginx 监听的所有端口都允许通过该端口???我正在尝试配置数据包过滤防火墙 (pf),以便限制 IP 地址和端口。也许端口 80 是根保留端口,因此被阻止了???

如何让 pf 防火墙只允许特定 IP 地址通过特定端口(例如 8080)的 http 请求?

相关内容