带有IceFloor的OSX上的PF防火墙

我在运行Server 3.0.2的OSX 10.9系统上使用IceFloor设置了pf.一切似乎都很好,除了我无法使用DNS名称或localhost的公共IP连接到系统.例如.我可以从互联网连接到http /端口80,但不能使用公共IP从机器本身连接.从机器到localhost / 127.0.0.1的连接有效.这是我得到的日志(x.x.x.x是主机的公共IP):

rule 7/0(match): block in on en0: x.x.x.x.80 > x.x.x.x.64460: Flags [R.], seq 1, ack 1, win 65535, length 0

这是规则列表

$sudo pfctl -s rules
[sudo] password for paul: 
No ALTQ support in kernel
ALTQ related functions disabled
scrub-anchor "icefloor.nat" all fragment reassemble
anchor "icefloor.nat" all
block drop in quick from <emergingthreats> to any
block drop out quick from any to <emergingthreats>
block drop in log quick from <_blacklist> to any
block drop out log quick from any to <_blacklist>
block drop in quick from no-route to any
block drop in quick from urpf-failed to any label "uRPF"
block drop log inet all label "Generic_blocks_(IPv4)"
block drop log inet6 all label "Generic_blocks_(IPv6)"
anchor "icefloor.groupblocks" all label "Blocks"
anchor "inspector.blocks" all label "Temp_blocks"
anchor "icefloor.exceptions" all label "Logs_exceptions"
anchor "icefloor.portknocking" all label "Hidden_services"
anchor "icefloor.genericipv6" all
anchor "icefloor.inbound" all label "Local_services"
anchor "icefloor.outbound" all label "All_traffic"
anchor "icefloor.outbound_nat" all label "NAT_clients_traffic"
anchor "icefloor.custom_rules" all

你能告诉我规则7/0(匹配)是哪一个吗?为什么不允许从localhost连接到公钥(在任何开放端口上)?它与无路径f规则有关吗?还是两个Generic_blocks_规则?

提前致谢,

保罗

最佳答案
我也面临着这个问题,它采取了一些安静的测试和tcpdump来解决这个问题.

要回答您的第一个问题,规则7/0(匹配)是哪一个:IceFloor自动添加的“Generic_blocks_(IPv4)”规则阻止并记录所有非显式授权的流量.您可以通过以root身份运行pfctl -gsr来确认该规则的编号.

关于它被阻止的原因.入站连接是被阻止的.它与无路由或可见规则集中的任何内容无关.它与您在本地处理DNS名称的方式有关.您机器的路由表(netstat -r)有一个DNS名称条目,该条目指向lo0接口上的localhost.

日志条目包含一些令人费解的信息,特别是en0上的块,这使您相信接口en0上发生了某些事情.但是,执行tcpdump -nvvvi en0 tcp和端口80表明没有数据包实际上在en0上传输.但是,使用tcpdump -nvvvi lo0 tcp和端口80可以找到数据包,从而确认流量(正如预期的那样)发生在lo0上.

使用在lo0上设置skip的行生成默认的IceFloor配置(/Library/IceFloor/icefloor.conf).起初,这似乎是一个非常标准的欢迎线(见http://www.openbsd.org/faq/pf/options.html).每一片lo0都没有受到pf规则的阻碍.在预感中,我决定注释掉该行并添加一条新规则(在表格包括之后):快速通过lo0.使用此修改后的配置重新加载后,我成功地通过我的DNS名称访问了我的Web服务器(问题已解决).所以看起来lo0行上的设置跳过有一些问题.

手动修改icefloor.conf文件的后退是因为它阻止您使用IceFloor界面中的Firewall选项卡.由于保存新配置会覆盖任何手动编辑.

转载注明原文:带有IceFloor的OSX上的PF防火墙 - 代码日志