15.2 Packet Filter(PF)
PF(Packet Filter,包过滤器)是一款源自 OpenBSD 的防火墙,提供了丰富功能,包括 ALTQ(Alternate Queuing,交错队列)等。
启用 PF
# kldload pf # 加载 pf 内核模块
# cp /usr/share/examples/pf/pf.conf /etc/ # 复制示例文件作为默认配置规则集,否则 pf 无法启动
# service pf enable # 设置 pf 在系统启动时自动启动
# service pf start # 启动 pf 服务① 如果不执行上述操作,则会提示
pfctl: /dev/pf: No such file or directory,此时可以重启系统后再执行service pf start。② 否则会提示如下信息:
/etc/rc.d/pf: WARNING: /etc/pf.conf is not readable.PF 的管理命令为 pfctl。
一次性操作命令
启动 PF 防火墙
pfctl -e作用:启用 PF,相当于 service pf start。
禁用 PF 防火墙规则
pfctl -d作用:停用 PF 防火墙,相当于 service pf stop。
加载规则集文件中的规则
作用:将 /etc/pf.conf 文件中的规则加载到 PF 中。
解析规则但不加载
作用:检查规则语法是否正确,但不实际应用。
可选参数:
-N:只解析 NAT 规则-R:只加载过滤规则-A:只加载队列规则-O:只加载选项规则
查看 PF 的对象信息
作用:显示 PF 的所有对象信息。
可用替换 all 的选项:
natqueuerulesanchorsstatessourcesinforunninglabelstimeoutsmemorytablesosfpinterfaces
删除 PF 的所有规则
作用:删除 PF 中所有已加载的规则和状态信息。
如果想查看特定规则,可以用 nat、queue、rules、states、sources、info、tables、osfp 替换 all。
永久性的规则集
上述操作仅针对 PF 的运行状态和规则加载,并未对规则进行管理,因此仍需修改规则集文件,常用示例如下。
规则集文件
整理所有输入的数据
作用:对所有进入的数据包进行规范化处理(如重组分片、清理异常标志等),提高规则匹配的可靠性。
阻止所有访问
作用:默认阻止所有访问。
说明:block 表示动作,all 表示从任何源到任何目标的所有流量。
允许回环接口访问
作用:允许本地回环接口 lo0 的所有访问,但不影响外部访问。 说明:quick 表示匹配该规则后立即停止,不再继续匹配后续规则。
允许 TCP 协议访问 80 端口
作用:允许任意设备通过 TCP 协议访问本机的 80 端口(通常用于 HTTP 服务)。
允许本机对外发送 80 端口的响应
作用:允许本机向任意设备发送 TCP 80 端口的响应数据。
端口转发 80 → 8080
作用:将访问本机 80 端口的 TCP 流量转发到内网地址 192.168.1.166 的 8080 端口。 说明:rdr 表示重定向(端口转发)。
允许本机与外部设备进行 ping
作用:允许 ICMP 回显请求(ping)通过,icmp-type 8 表示请求,code 0 表示标准返回码。
允许 traceroute 的 ICMP 流量
作用:允许本机发送 ICMP“时间超时”报文,用于执行 traceroute。
允许 traceroute 的 UDP 流量
作用:允许本机通过 UDP 协议发送端口范围 33434-34500 的数据,用于 traceroute。
说明:>< 表示端口范围。
规则集文件
可能用到的规则集文件 /etc/pf.conf 如下:
对数据包进行标准化
作用:对所有进入的数据包进行规范化处理,重组分片、清理异常标志,提高规则匹配的可靠性。
端口转发规则
作用:将访问本机 8080 端口的 TCP 流量转发到 80 端口。
说明:转发规则应置于过滤规则之前以确保生效。
阻止所有流量并允许回环接口
作用:默认阻止所有流量,但允许本机回环接口 lo0 的所有访问。
说明:quick 表示匹配该规则后立即停止,不再继续匹配后续规则。
允许外部访问服务器特定端口
作用:允许任意设备访问服务器的 SSH(22)、HTTP(80)、HTTPS(443)、4200、10000 端口。
允许服务器访问外部设备特定端口
作用:允许服务器向外发送数据到指定端口。
服务器访问任意设备的 HTTP/HTTPS 并保持状态
作用:允许服务器访问外部 HTTP/HTTPS 服务,同时跟踪连接状态。
服务器访问 DNS 服务器
作用:允许服务器通过 UDP 端口 53 查询 DNS,并保持状态。
服务器访问 DHCP 服务器
作用:允许服务器通过 UDP 端口 67 与 DHCP 服务器通信,并保持状态。
允许服务器发送 ICMP 请求
作用:允许发送 ICMP 回显请求(ping)。
允许 ICMP 超时消息(traceroute)
作用:允许发送 ICMP“时间超时”报文,用于 traceroute。
允许服务器访问 UDP 端口范围 33434 至 34500
作用:允许服务器通过 UDP 协议发送端口范围 33434-34500 的数据,用于 traceroute。
加载规则文件使其生效
作用:
-F a:清除所有已加载的规则和状态-f /etc/pf.conf:加载指定规则文件
最后更新于
这有帮助吗?