《The BOOK Of PF》中文版 —— 4. 首个规则集,单个独立主机
发表于 : 2010-07-13 8:39
首个规则集—单个独立主机
这可能是最简单的设置了: 一台没有运行任何服务的主机仅与一个网络(可能是Internet)连接。现在, 我们使用如下的规则集:
代码: 全选
block in all
pass out all keep state
这里值得一提的是,从OpenBSD 4.1开始, 默认的pass规则默认情况下会保持状态信息,读者请详说明2,所以目前新格式的规则更简单:
代码: 全选
# minimal rule set, OpenBSD 4.1 onward keeps state by default
block in all
pass out all
不言而喻,PF放行的这台主机产生的所有通讯是必须是很可信的,你这样做时意味着你对这台主机是绝对信任的。
使用下列命令应用此规则集:
代码: 全选
$ sudo pfctl -ef /etc/pf.conf
测试规则集
即便像这样只有两行的简单规则集, 先测试一下该规则集是否符合你的设想也是有很用处的。测试一下你的规则是否与你的设想一致永远是个不错的主意, 一旦你的规则集趋于更复杂时,正确的测试就显得尤为重要了。对规则集的每一个变动进行测试并确认它完全是你希望的那样是一个非常好的做法, 这个习惯你越早养成越好。
对我们这里的给出的这个规则集, 你可以通过像检查域名解析做一个基本的测试。这样:它应该返回诸如gobsd.org这台主机的IP地址以及该域名下邮件交换机的主机名。代码: 全选
$ host gobsd.org
如果你能ssh到其它系统, 看一下是否你可以在远程主机上login并运行命令。你也可以浏览互联网 (在OpenBSD上基本系统自带了lynx)。
你(对外)测试的任何服务都应该没有问题, 但想从其它别的什么地方访问你的主机上的任何服务都会产生一个Connection refused(拒绝连接)信息。
说明2
事实上, 默认的新规则相当于keep state flags S/SA, 确保了设置连接时只有最初的SYN数据包产生状态, 消除了一些令人迷惑的状况。
如果你想无状态地过滤, 你可以将不想记录或保持状态信息的规则指定为no state。
在FreeBSD 7.0里整合的PF代码等同于OpenBSD 4.1的PF代码。