15.3 IPFilter(IPF)

IPFilter(IPF)作为早期跨平台防火墙解决方案,在网络安全发展史上具有重要地位。其设计体现了早期防火墙技术的基本架构思想,为后续防火墙系统的演进提供了参考。

警告

本文所述内容建议读者在测试环境中先行验证后再用于生产部署。验证方法通常包括:测试环境构建、功能测试集、性能基准测试等环节。

IPF(IPFilter,IP 过滤器)是一款开源软件,作者为 Darren Reed。以下内容建议在测试环境中先行验证后再用于生产部署。

启用 IPF 防火墙

IPF 防火墙的启用需要准备配置文件并启动相关服务,具体步骤如下。

启用 IPF 之前,需要先准备配置文件,然后启动相关服务,可按以下步骤操作。

如需启用 IPF,可执行以下命令:

# 复制示例文件作为默认配置规则集文件,否则 ipfilter 启动后会没有规则。示例文件自带的规则不影响使用
# cp /usr/share/examples/ipfilter/ipf.conf.sample /etc/ipf.rules
  • 启动 IPF 防火墙:

# service ipfilter enable   # 设置 ipfilter 在系统启动时自动启动
# service ipfilter start    # 启动 ipfilter 服务
  • 启动 ipnat:

ipnat 是 IPF 的一部分,专门用于处理 NAT 规则的维护。

# cp /usr/share/examples/ipfilter/ipnat.conf.sample /etc/ipnat.rules   # 复制示例文件作为默认配置规则集,否则 ipnat 无法启动
# service ipnat enable   # 设置 ipnat 在系统启动时自动启动
# service ipnat start    # 启动 ipnat 服务

注意

ipfilter 服务重启后,ipnat 也需要重启。

IPF 的管理命令主要有 ipf、ipfstat 和 ipnat,常用操作示例如下:

IPF 命令操作

IPF 提供了一系列命令用于管理防火墙的运行状态和规则。

  1. 启动 IPF 防火墙

相当于 service ipfilter start

  1. 停止 IPF

相当于 service ipfilter stop

  1. 加载规则集文件

从指定文件加载防火墙规则。

  1. 查看所有规则

显示当前加载的所有规则。

  1. 查看详细规则信息

参数说明:

  • i:显示输入规则

  • o:显示输出规则

  • h:显示通过该规则的流量

  • n:显示规则编号

  1. 显示状态表

实时监控 IPF 流量,按 Q 退出。

  1. 清理已加载规则

删除所有已加载的规则。

NAT 操作命令

NAT 规则的管理需要使用 ipnat 命令,常用操作如下。

  1. 加载 NAT 规则

加载 NAT 规则文件。

  1. 汇总 NAT 状态

显示 NAT 的运行状态汇总。

  1. 列表显示 NAT 规则

列出 NAT 规则,h 表示显示通过该规则的流量。

  1. 清理 NAT 规则

删除已加载的 NAT 规则。

IPF 规则说明

以下是一些常用的 IPF 规则示例,可根据实际需求调整。

  1. 拒绝所有访问

阻止所有流量。

说明:IPF 默认是明示禁止的防火墙,需要明确写规则以阻止访问。

  1. 拒绝所有进入流量

阻止所有入站流量。

参数说明:

  • block:拒绝

  • pass:允许

  • in:入站(out 表示出站)

  • all:等价于 from any to any

地址表示:

  • IP 或网段:如 192.168.1.100192.168.1.0/24

  • any:任意地址

阻止与放行流量

流量控制是防火墙的核心功能,以下是相关规则示例。

  1. 拒绝所有外部流量

阻止所有从本机发出的外部流量。

  1. 放行回环接口输入流量

允许本机回环接口(lo0)的所有输入流量。

说明:quick 表示匹配规则后立即停止,不再匹配后续规则。

  1. 放行回环接口输出流量

允许本机回环接口的所有输出流量。

TCP/UDP 访问控制

针对 TCP 和 UDP 协议的访问控制规则如下。

  1. 允许访问服务器特定端口

允许任意外部设备通过 TCP 访问服务器指定端口(SSH、HTTP、HTTPS 等)。

  1. 允许本机访问外部设备特定端口

允许服务器向外访问这些端口。

  1. 允许本机访问 HTTP/HTTPS 并保持状态

访问外部 HTTP/HTTPS 服务,并跟踪连接状态。

  1. DNS/UDP 访问

允许服务器访问 DNS(53 端口)和 DHCP(67 端口)服务器,并保持状态。

ICMP 流量控制

ICMP 协议用于网络诊断和错误报告,相关规则如下。

  1. 本机发送 ping 请求

允许本机向外发送 ICMP 回显请求(ping)。

  1. 外部设备 ping 本机

允许外部设备 ping 本机。

  1. 本机 ICMP 回显应答

允许本机回应 ping 请求。

Traceroute 流量

Traceroute 用于网络路径诊断,需要开放特定的 ICMP 和 UDP 流量。

  1. 通过 ICMP traceroute

允许 ICMP 回显应答用于 traceroute。

  1. 通过 UDP traceroute

放行从 192.168.1.184 发出的 UDP 流量,源端口范围 33434-34500,快速处理并保持状态。

端口转发规则(NAT)

NAT(网络地址转换)可用于端口转发,以下是相关规则示例。

  1. 本机端口映射 8080 → 80

将本机 em0 网卡的 8080 端口流量转发到本机 80 端口。

加载规则命令

规则编辑完成后,需要执行以下命令使其生效。

  1. 清理并加载防火墙规则

参数说明:

  • -Fa:清除所有已加载规则

  • -f:加载指定规则文件

  1. 清理并加载 NAT 规则

参数说明:

  • -CF:清除 NAT 规则

  • -f:加载指定 NAT 规则文件

最后更新于