象其它平台上的Netfilter和IP Filter一样,OpenBSD用户最爱用PF,这就是他们的防火墙工具。它的功能有网络地址转换、管理TCP/IP通讯、提供带宽控制和数据包分级控制。它还有一些额外的功能,例如被动操作系统检测。PF是由编写OpenBSD的同一批人编写的,所以你完全可以放心使用,它已经经过了很好的评估、设计和编码以避免暴露其它包过滤器(other packet filters)上的类似漏洞。
下载链接:http://down.51cto.com/data/155543
启用
默认启用 PF。如果你希望它在系统启动时禁止,请增加一行
- pf=NO
到文件 /etc/rc.conf.local 中,重启系统让它生效。你也可以使用 pfctl(8) 程序来手工启用或关闭 PF:
- # pfctl -e
- # pfctl -d
这两个命令分别它们启用和关闭 PF。 注意它只是启用和关闭 PF,不会加载规则。规则必须在启用 PF 之前或其后单独加载。
配置
在启动时,PF 从文件 /etc/pf.conf 读取过滤规则,它是被 rc 脚本加载的。注意 /etc/pf.conf 是默认配置文件,被系统 rc 脚本加载,它只是被 pfctl(8) 加载和解析执行的文本文件,插入到 pf(4) 中。某些应用可能在系统启动后,从其它文件加载附加的过滤规则。 与任一很好设计的 Unix 应用类似,PF 提供了很好的适应性。
文件 pf.conf 有五个部分:
宏: 用户定义的变量,保存 IP,接口名称等。
表: 保存 IP 列表的结构。
选项: 控制 PF 工作的选项。
队列: 提供带宽和优先级的控制。
转换: 网络地址转换和端口转发。
过滤器规则:选择性阻塞或放行任意网络接口的包,过滤器规则可以为网络地址转换 (NAT) 和端口转发指定参数。忽略空行,以 # 开始的行是注释。
控制
启动之后,可以使用 pfctl(8) 程序来控制 PF 操作。下面是一些例子:
- # pfctl -f /etc/pf.conf 加载文件 pf.conf
- # pfctl -nf /etc/pf.conf 解析文件,但是不加载
- # pfctl -sr 显示当前的过滤器规则
- # pfctl -ss 显示当前的状态表
- # pfctl -si 显示过滤器统计信息和计数器
- # pfctl -sa 显示一切信息
完整的命令列表在 pfctl(8) 手册页。