系统管理指南:IP 服务

第 26 章 yaraOracle Solaris : IP 过滤器(任务)

本章提供有关 Solaris IP 过滤器任务的逐步说明。有关 Oracle Solaris : IP 过滤器的概述信息,请参见第 25 章

本章包含以下信息:

配置 Oracle Solaris : IP 过滤器

以下任务列表提供了与配置 Oracle Solaris : IP 过滤器关联的过程。

表 26–1 配置 Oracle Solaris : IP 过滤器(任务列表)

任务 

说明 

参考 

最初启用 Oracle Solaris : IP 过滤器。 

缺省情况下不启用 Oracle Solaris : IP 过滤器。必须手动启用它,或者使用 /etc/ipf/ 目录中的配置文件并重新引导系统。从 Solaris 10 7/07 发行版开始,包过滤器钩子替代 pfil 模块以启用 Oracle Solaris : IP 过滤器。

如何启用 Oracle Solaris : IP 过滤器

重新启用 Oracle Solaris : IP 过滤器 

如果 Oracle Solaris : IP 过滤器被取消激活或禁用,则可以通过重新引导系统或通过使用 ipf 命令重新启用 Oracle Solaris : IP 过滤器。

如何重新启用 Oracle Solaris : IP 过滤器

启用回送过滤 

作为一个选项,您可以启用回送过滤,例如,过滤区域之间的流量。 

如何启用回送过滤

Procedure如何启用 Oracle Solaris : IP 过滤器

使用此过程可在运行 Solaris 10 7/07 OS 或更高版本的系统上启用 Oracle Solaris : IP 过滤器。如果系统运行的 Oracle Solaris 10 发行版早于 Solaris 10 7/07 OS 并且要启用 Oracle Solaris : IP 过滤器,请参见使用 pfil 模块

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 创建包过滤规则集。

    包过滤规则集包含由 Oracle Solaris : IP 过滤器使用的包过滤规则。如果希望在引导时装入包过滤规则,请编辑 /etc/ipf/ipf.conf 文件以实现 IPv4 包过滤。对于 IPv6 包过滤规则,请使用 /etc/ipf/ipf6.conf 文件。如果不希望在引导时装入包过滤规则,请将这些规则放置在所选的文件中,然后手动激活包过滤。有关包过滤的信息,请参见使用 Oracle Solaris : IP 过滤器的包过滤功能。有关使用配置文件的信息,请参见创建和编辑 Oracle Solaris : IP 过滤器配置文件

  3. (可选)创建网络地址转换 (network address translation, NAT) 配置文件。


    注 –

    网络地址转换 (Network Address Translation, NAT) 不支持 IPv6。


    如果要使用网络地址转换,请创建 ipnat.conf 文件。如果希望在引导时装入 NAT 规则,请创建一个名为 /etc/ipf/ipnat.conf 的文件,在其中放置 NAT 规则。如果不希望在引导时装入 NAT 规则,请将 ipnat.conf 文件放置在所选的位置中,然后手动激活 NAT 规则。

    有关 NAT 的更多信息,请参见使用 Oracle Solaris : IP 过滤器的 NAT 功能

  4. (可选)创建地址池配置文件。

    如果要将一组地址作为单个地址池引用,请创建 ipool.conf 文件。如果希望在引导时装入地址池配置文件,请创建一个名为 /etc/ipf/ippool.conf 的文件,在其中放置地址池。如果不希望在引导时装入地址池配置文件,请将 ippool.conf 文件放置在所选的位置中,然后手动激活这些规则。

    一个地址池可以只包含 IPv4 地址和 IPv6 地址中的一种,也可以同时包含这两种地址。

    有关地址池的更多信息,请参见使用 Oracle Solaris : IP 过滤器的地址池功能

  5. (可选)启用回送流量的过滤。

    如果打算过滤系统中配置的区域之间的流量,则必须启用回送过滤。请参见如何启用回送过滤。还要确保定义了应用于这些区域的相应规则集。

  6. 激活 Oracle Solaris : IP 过滤器。


    # svcadm enable network/ipfilter
    

Procedure如何重新启用 Oracle Solaris : IP 过滤器

在暂时禁用包过滤后,可以重新启用它。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用以下方法之一启用 Oracle Solaris : IP 过滤器并激活过滤:

    • 重新引导计算机。


      # reboot
      

      注 –

      若启用了 IP 过滤器,则重新引导后会装入以下文件(如果它们存在):/etc/ipf/ipf.conf 文件、 /etc/ipf/ipf6.conf 文件(使用 IPv6 时)或 /etc/ipf/ipnat.conf


    • 执行以下系列命令以启用 Oracle Solaris : IP 过滤器并激活过滤:

      1. 启用 Oracle Solaris : IP 过滤器。


        # ipf -E
        
      2. 激活包过滤。


        # ipf -f filename
        
      3. (可选)激活 NAT。


        # ipnat -f filename
        

        注 –

        网络地址转换 (Network Address Translation, NAT) 不支持 IPv6。


Procedure如何启用回送过滤


注 –

仅当系统运行 Solaris 10 7/07 发行版或更高版本时,才能过滤回送流量。在以前的 Oracle Solaris : 10 发行版中,不支持回送过滤。


  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 如果 Oracle Solaris : IP 过滤器正在运行,则将其停止。


    # svcadm disable network/ipfilter
    
  3. 通过在文件开头添加下面的行来编辑 /etc/ipf.conf/etc/ipf6.conf 文件:


    set intercept_loopback true;

    此行必须位于文件中定义的所有 IP 过滤器规则之前。不过,可以在此行之前插入注释,与以下示例类似:


    # 
    # Enable loopback filtering to filter between zones 
    # 
    set intercept_loopback true; 
    # 
    # Define policy 
    # 
    block in all 
    block out all 
    <other rules>
    ...
  4. 启动 Oracle Solaris : IP 过滤器。


    # svcadm enable network/ipfilter
    
  5. 要验证回送过滤的状态,请使用以下命令:


    # ipf —T ipf_loopback
    ipf_loopback    min 0   max 0x1 current 1
    #

    如果已禁用回送过滤,该命令将生成以下输出:


    ipf_loopback    min 0   max 0x1 current 0

取消激活和禁用 Oracle Solaris : IP 过滤器

在以下情况下,可能希望取消激活或禁用包过滤和 NAT:

以下任务列表提供了与取消激活或禁用 Oracle Solaris : IP 过滤器功能关联的过程。

表 26–2 取消激活和禁用 Oracle Solaris : IP 过滤器(任务列表)

任务 

说明 

参考 

取消激活包过滤。 

使用 ipf 命令取消激活包过滤。

如何取消激活包过滤

取消激活 NAT。 

使用 ipnat 命令取消激活 NAT。

如何取消激活 NAT

禁用包过滤和 NAT。 

使用 ipf 命令禁用包过滤和 NAT。

如何禁用包过滤

Procedure如何取消激活包过滤

以下过程通过从活动的过滤规则集中清除包过滤规则,取消激活 Oracle Solaris : IP 过滤器包过滤。该过程不禁用 Oracle Solaris : IP 过滤器。通过将规则添加到规则集,可以重新激活 Oracle Solaris : IP 过滤器。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用以下方法之一取消激活 Oracle Solaris : IP 过滤器规则:

    • 从内核中删除活动规则集。


      # ipf -Fa
      

      此命令取消激活所有的包过滤规则。

    • 删除传入包的过滤规则。


      # ipf -Fi
      

      此命令取消激活传入包的包过滤规则。

    • 删除传出包的过滤规则。


      # ipf -Fo
      

      此命令取消激活传出包的包过滤规则。

Procedure如何取消激活 NAT

以下过程通过从活动的 NAT 规则集中清除 NAT 规则,取消激活 Oracle Solaris : IP 过滤器 NAT 规则。该过程不禁用 Oracle Solaris : IP 过滤器。通过将规则添加到规则集,可以重新激活 Oracle Solaris : IP 过滤器。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 从内核中删除 NAT。


    # ipnat -FC
    

    -C 选项删除当前 NAT 规则列表中的所有项。-F 选项删除当前 NAT 转换表(它显示当前活动的 NAT 映射)中的所有活动项。

Procedure如何禁用包过滤

在执行此过程时,包过滤和 NAT 都会从内核中删除。如果使用此过程,则必须重新启用 Solaris IP 过滤器以便重新激活包过滤和 NAT。有关更多信息,请参见如何重新启用 Oracle Solaris : IP 过滤器

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 禁用包过滤,并允许所有包传入网络。


    # ipf –D
    

    注 –

    ipf -D 命令从规则集中清除规则。重新启用过滤时,必须将规则添加到规则集。


使用 pfil 模块

本节介绍如何使用 pfil STREAMS 模块激活或取消激活 Oracle Solaris : IP 过滤器以及如何查看 pfil 统计信息。该过程只适用于运行下列 Oracle Solaris 10 发行版之一的系统:

以下任务列表提供了与配置 pfil 模块关联的过程。

表 26–3 使用 pfil 模块(任务列表)

任务 

说明 

参考 

启用 Oracle Solaris : IP 过滤器 

缺省情况下不启用 Oracle Solaris : IP 过滤器。必须手动启用它,或者使用 /etc/ipf/ 目录中的配置文件并重新引导系统。

如何在以前的 Oracle Solaris 10 发行版中启用 Oracle Solaris : IP 过滤器

为包过滤激活 NIC 

配置 pfil 模块,以在 NIC 上激活包过滤

如何为包过滤激活 NIC

在 NIC 上取消激活 Oracle Solaris : IP 过滤器 

删除 NIC 并允许所有包通过 NIC。 

如何在 NIC 上取消激活 Oracle Solaris : IP 过滤器

查看 pfil 统计信息。

使用 ndd 命令查看 pfil 模块的统计信息,以帮助对 Oracle Solaris : IP 过滤器进行故障排除。

如何查看 Oracle Solaris : IP 过滤器的 pfil 统计信息

Procedure如何在以前的 Oracle Solaris 10 发行版中启用 Oracle Solaris : IP 过滤器

Oracle Solaris : IP 过滤器与 Oracle Solaris : 一同安装。但是,缺省情况下不启用包过滤。使用以下过程可以激活 Oracle Solaris : IP 过滤器。


注 –

如果您的系统运行的是 Solaris 10 7/07 发行版或更高版本,请执行如何启用 Oracle Solaris : IP 过滤器过程(使用包过滤器钩子)。


  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器,然后编辑 /etc/ipf/pfil.ap 文件。

    此文件包含主机上网络接口卡 (network interface card, NIC) 的名称。缺省情况下,这些名称已被注释掉。对传输要过滤的网络通信流量的设备名称取消注释。如果未列出您系统的 NIC 名称,则添加一行以指定 NIC。


    # vi /etc/ipf/pfil.ap
    # IP Filter pfil autopush setup
    #
    # See autopush(1M) manpage for more information.
    #
    # Format of the entries in this file is:
    #
    #major  minor lastminor modules
    
    #le     -1      0       pfil
    #qe     -1      0       pfil
    hme     -1      0       pfil (Device has been uncommented for filtering)
    #qfe    -1      0       pfil
    #eri    -1      0       pfil
    #ce     -1      0       pfil
    #bge    -1      0       pfil
    #be     -1      0       pfil
    #vge    -1      0       pfil
    #ge     -1      0       pfil
    #nf     -1      0       pfil
    #fa     -1      0       pfil
    #ci     -1      0       pfil
    #el     -1      0       pfil
    #ipdptp -1      0       pfil
    #lane   -1      0       pfil
    #dmfe   -1      0       pfil
  3. 通过重新启动 network/pfil 服务实例,激活对 /etc/ipf/pfil.ap 文件所做的更改。


    # svcadm restart network/pfil
    
  4. 创建包过滤规则集。

    包过滤规则集包含由 Oracle Solaris : IP 过滤器使用的包过滤规则。如果希望在引导时装入包过滤规则,请编辑 /etc/ipf/ipf.conf 文件以实现 IPv4 包过滤。对于 IPv6 包过滤规则,请使用 /etc/ipf/ipf6.conf 文件。如果不希望在引导时装入包过滤规则,请将这些规则放置在所选的文件中,然后手动激活包过滤。有关包过滤的信息,请参见使用 Oracle Solaris : IP 过滤器的包过滤功能。有关使用配置文件的信息,请参见创建和编辑 Oracle Solaris : IP 过滤器配置文件

  5. (可选)创建网络地址转换 (network address translation, NAT) 配置文件。


    注 –

    网络地址转换 (Network Address Translation, NAT) 不支持 IPv6。


    如果要使用网络地址转换,请创建 ipnat.conf 文件。如果希望在引导时装入 NAT 规则,请创建一个名为 /etc/ipf/ipnat.conf 的文件,在其中放置 NAT 规则。如果不希望在引导时装入 NAT 规则,请将 ipnat.conf 文件放置在所选的位置中,然后手动激活 NAT 规则。

    有关 NAT 的更多信息,请参见使用 Oracle Solaris : IP 过滤器的 NAT 功能

  6. (可选)创建地址池配置文件。

    如果要将一组地址作为单个地址池引用,请创建 ipool.conf 文件。如果希望在引导时装入地址池配置文件,请创建一个名为 /etc/ipf/ippool.conf 的文件,在其中放置地址池。如果不希望在引导时装入地址池配置文件,请将 ippool.conf 文件放置在所选的位置中,然后手动激活这些规则。

    一个地址池可以只包含 IPv4 地址和 IPv6 地址中的一种,也可以同时包含这两种地址。

    有关地址池的更多信息,请参见使用 Oracle Solaris : IP 过滤器的地址池功能

  7. 使用以下方法之一激活 Oracle Solaris : IP 过滤器:

    • 启用 IP 过滤器并重新引导计算机。


      # svcadm enable network/ipfilter
      # reboot
      

      注 –

      如果无法在 NIC 上安全地使用 ifconfig unplumbifconfig plumb 命令,则需要重新引导。


    • 通过使用 ifconfig unplumbifconfig plumb 命令启用 NIC。然后启用 IP 过滤器。必须检测接口的 inet6 版本,以便实现 IPv6 包过滤。


      # ifconfig hme0 unplumb
      # ifconfig hme0 plumb 192.168.1.20 netmask 255.255.255.0 up
      # ifconfig hme0 inte6 unplumb
      # ifconfig hme0 inet6 plumb fec3:f849::1/96 up
      # svcadm enable network/ipfilter
      

      有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

Procedure如何为包过滤激活 NIC

如果 /etc/ipf/ipf.conf 文件(或使用 IPv6 时的 /etc/ipf/ipf6.conf 文件)存在,则在引导时启用 Oracle Solaris : IP 过滤器。如果需要在启用 Oracle Solaris : IP 过滤器后在 NIC 上启用过滤,请使用以下过程。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器,然后编辑 /etc/ipf/pfil.ap 文件。

    此文件包含主机上 NIC 的名称。缺省情况下,这些名称已被注释掉。对传输要过滤的网络通信流量的设备名称取消注释。如果未列出您系统的 NIC 名称,则添加一行以指定 NIC。


    # vi /etc/ipf/pfil.ap
    # IP Filter pfil autopush setup
    #
    # See autopush(1M) manpage for more information.
    #
    # Format of the entries in this file is:
    #
    #major  minor lastminor modules
    
    #le     -1      0       pfil
    #qe     -1      0       pfil
    hme     -1      0       pfil (Device has been uncommented for filtering)
    #qfe    -1      0       pfil
    #eri    -1      0       pfil
    #ce     -1      0       pfil
    #bge    -1      0       pfil
    #be     -1      0       pfil
    #vge    -1      0       pfil
    #ge     -1      0       pfil
    #nf     -1      0       pfil
    #fa     -1      0       pfil
    #ci     -1      0       pfil
    #el     -1      0       pfil
    #ipdptp -1      0       pfil
    #lane   -1      0       pfil
    #dmfe   -1      0       pfil
  3. 通过重新启动 network/pfil 服务实例,激活对 /etc/ipf/pfil.ap 文件所做的更改。


    # svcadm restart network/pfil
    
  4. 使用以下方法之一启用 NIC:

    • 重新引导计算机。


      # reboot
      

      注 –

      如果无法在 NIC 上安全地使用 ifconfig unplumbifconfig plumb 命令,则需要重新引导。


    • ifconfig 命令与 unplumbplumb 选项一起使用,以启用要过滤的 NIC。必须检测每个接口的 inet6 版本,以便实现 IPv6 包过滤。


      # ifconfig hme0 unplumb
      # ifconfig hme0 plumb 192.168.1.20  netmask 255.255.255.0  up
      # ifconfig hme0 inet6 unplumb
      # ifconfig hme0 inet6 plumb fec3:f840::1/96 up
      

      有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

Procedure如何在 NIC 上取消激活 Oracle Solaris : IP 过滤器

如果需要在 NIC 上停止过滤包,请使用以下过程。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器,然后编辑 /etc/ipf/pfil.ap 文件。

    此文件包含主机上 NIC 的名称。已经用于过滤网络通信流量的 NIC 被取消注释。注释掉不再希望用来过滤网络通信流量的设备名称。


    # vi /etc/ipf/pfil.ap
    # IP Filter pfil autopush setup
    #
    # See autopush(1M) manpage for more information.
    #
    # Format of the entries in this file is:
    #
    #major  minor lastminor modules
    
    #le     -1      0       pfil
    #qe     -1      0       pfil
    #hme    -1      0       pfil (Commented-out device no longer filters network traffic)
    #qfe    -1      0       pfil
    #eri    -1      0       pfil
    #ce     -1      0       pfil
    #bge    -1      0       pfil
    #be     -1      0       pfil
    #vge    -1      0       pfil
    #ge     -1      0       pfil
    #nf     -1      0       pfil
    #fa     -1      0       pfil
    #ci     -1      0       pfil
    #el     -1      0       pfil
    #ipdptp -1      0       pfil
    #lane   -1      0       pfil
    #dmfe   -1      0       pfil
  3. 使用以下方法之一取消激活 NIC:

    • 重新引导计算机。


      # reboot
      

      注 –

      如果无法在 NIC 上安全地使用 ifconfig unplumbifconfig plumb 命令,则需要重新引导。


    • ifconfig 命令与 unplumbplumb 选项一起使用,以取消激活 NIC。必须取消检测每个接口的 inet6 版本,以便取消激活 IPv6 包过滤。请执行以下步骤。系统中的样例设备为 hme

      1. 标识取消激活的设备的主要编号。


        # grep hme /etc/name_to_major
        hme 7
      2. 显示 hme0 的当前 autopush 配置。


        # autopush -g -M 7 -m 0
           Major     Minor     Lastminor       Modules
               7      ALL          -           pfil
      3. 删除 autopush 配置。


        # autopush -r -M 7 -m 0
        
      4. 打开设备并为设备指定 IP 地址。


        # ifconfig hme0 unplumb
        # ifconfig hme0 plumb 192.168.1.20  netmask 255.255.255.0  up
        # ifconfig hme0 inet6 unplumb
        # ifconfig hme0 inet6 plumb fec3:f840::1/96 up
        

        有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

Procedure如何查看 Oracle Solaris : IP 过滤器的 pfil 统计信息

在对 Oracle Solaris : IP 过滤器进行故障排除时,可以查看 pfil 统计信息。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看 pfil 统计信息。


    # ndd -get /dev/pfil qif_status
    

示例 26–1 查看 Oracle Solaris : IP 过滤器的 pfil 统计信息

以下示例显示如何查看 pfil 统计信息。


# ndd -get /dev/pfil qif_status
ifname ill q OTHERQ num sap hl nr nw bad copy copyfail drop notip nodata
   notdata
QIF6 0 300011247b8 300011248b0 6 806 0 4 9 0 0 0 0 0 0 0
dmfe1 3000200a018 30002162a50 30002162b48 5 800 14 171 13681 0 0 0 0 0 0 0

使用 Oracle Solaris : IP 过滤器规则集

以下任务列表提供了与 Oracle Solaris : IP 过滤器规则集相关的过程。

表 26–4 使用 Oracle Solaris : IP 过滤器规则集(任务列表)

任务 

说明 

参考 

管理、查看和修改 Oracle Solaris : IP 过滤器包过滤规则集。 

 

管理 Oracle Solaris : IP 过滤器的包过滤规则集

 

查看活动的包过滤规则集。 

如何查看活动的包过滤规则集

 

查看非活动的包过滤规则集。 

如何查看非活动的包过滤规则集

 

激活不同的活动规则集。 

如何激活不同的或更新的包过滤规则集

 

删除规则集。 

如何删除包过滤规则集

 

将规则添加到规则集。 

如何将规则附加到活动的包过滤规则集

如何将规则附加到非活动的包过滤规则集

 

在活动和非活动的规则集之间切换。 

如何在活动和非活动的包过滤规则集之间切换

 

从内核中删除非活动规则集。 

如何从内核中删除非活动的包过滤规则集

管理、查看和修改 Oracle Solaris : IP 过滤器 NAT 规则。 

 

管理 Oracle Solaris : IP 过滤器的 NAT 规则

 

查看活动的 NAT 规则。 

如何查看活动的 NAT 规则

 

删除 NAT 规则。 

如何删除 NAT 规则

 

将其他规则添加到 NAT 规则。 

如何将规则附加到 NAT 规则

管理、查看和修改 Oracle Solaris : IP 过滤器地址池。 

 

管理 Oracle Solaris : IP 过滤器的地址池

 

查看活动的地址池。 

如何查看活动地址池

 

删除地址池。 

如何删除地址池

 

将其他规则添加到地址池。 

如何将规则附加到地址池

管理 Oracle Solaris : IP 过滤器的包过滤规则集

启用 Solaris IP 过滤器后,活动和非活动的包过滤规则集都可以驻留在内核中。活动规则集确定正在对传入包和传出包执行的过滤。非活动规则集也存储规则,但不会使用这些规则,除非使非活动规则集成为活动规则集。可以管理、查看和修改活动和非活动的包过滤规则集。

Procedure如何查看活动的包过滤规则集

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看装入到内核中的活动包过滤规则集。


    # ipfstat -io
    

示例 26–2 查看活动的包过滤规则集

以下示例显示装入到内核中的活动包过滤规则集的输出。


# ipfstat -io
empty list for ipfilter(out)
pass in quick on dmfe1 from 192.168.1.0/24 to any
pass in all
block in on dmfe1 from 192.168.1.10/32 to any

Procedure如何查看非活动的包过滤规则集

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看非活动的包过滤规则集。


    # ipfstat -I -io
    

示例 26–3 查看非活动的包过滤规则集

以下示例显示非活动的包过滤规则集的输出。


# ipfstat -I -io
pass out quick on dmfe1 all
pass in quick on dmfe1 all

Procedure如何激活不同的或更新的包过滤规则集

如果要执行以下任一任务,请使用以下过程:

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 选择以下步骤之一:

    • 如果要激活完全不同的规则集,请在您选择的单独文件中创建一个新规则集。

    • 通过编辑包含该规则集的配置文件来更新当前规则集。

  3. 删除当前的规则集,并装入新规则集。


    # ipf -Fa -f filename
    

    filename 可以是包含新规则集的新文件,也可以是包含活动规则集的更新文件。

    活动规则集将从内核中删除。filename 文件中的规则将成为活动规则集。


    注 –

    即使是要重新装入当前配置文件,也仍需发出该命令。否则,将继续使用旧规则集,而不会应用更新的配置文件中的已修改规则集。

    请勿使用 ipf -Dsvcadm restart 之类的命令来装入更新的规则集。此类命令会在装入新规则集之前禁用防火墙,从而会公开您的网络。



示例 26–4 激活不同的包过滤规则集

以下示例说明如何在单独的配置文件 /etc/ipf/ipf.conf 中将一个包过滤规则集替换为另一个包过滤规则集。


# ipfstat -io
empty list for ipfilter(out)
pass in quick on dmfe all
# ipf -Fa -f /etc/ipf/ipf.conf
# ipfstat -io
empty list for ipfilter(out)
block in log quick from 10.0.0.0/8 to any


示例 26–5 重新装入更新的包过滤规则集

以下示例说明如何重新装入当前处于活动状态且已更新的包过滤规则集。在此示例中,使用的文件是 /etc/ipf/ipf.conf


# ipfstat -io (Optional)
empty list for ipfilter (out)
block in log quick from 10.0.0.0/8 to any

(Edit the /etc/ipf/ipf.conf configuration file.)

# ip -Fa -f /etc/ipf/ipf.conf
# ipfstat -io (Optional)
empty list for ipfilter (out)
block in log quick from 10.0.0.0/8 to any
block in quick on elx10 from 192.168.0.0/12 to any

Procedure如何删除包过滤规则集

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 删除规则集。


    # ipf -F [a|i|o]
    
    -a

    从规则集中删除所有过滤规则。

    -i

    删除传入包的过滤规则。

    -o

    删除传出包的过滤规则。


示例 26–6 删除包过滤规则集

以下示例显示如何从活动的过滤规则集中删除所有过滤规则。


# ipfstat -io
block out log on dmf0 all
block in log quick from 10.0.0.0/8 to any
# ipf -Fa
# ipfstat -io
empty list for ipfilter(out)
empty list for ipfilter(in)

Procedure如何将规则附加到活动的包过滤规则集

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用以下方法之一将规则附加到活动规则集:

    • 在命令行上使用 ipf -f - 命令,将规则附加到规则集。


      # echo "block in on dmfe1 proto tcp from 10.1.1.1/32 to any" | ipf -f -
      
    • 执行以下命令:

      1. 在所选的文件中创建规则集。

      2. 将已创建的规则添加到活动规则集。


        # ipf -f filename
        

        filename 中的规则将添加到活动规则集的结尾。由于 Solaris IP 过滤器使用“最后一个匹配规则”算法,因此,除非使用 quick 关键字,否则所添加的规则将确定过滤优先级。如果包与包含 quick 关键字的规则匹配,则执行该规则的操作,且不检查后续规则。


示例 26–7 将规则附加到活动的包过滤规则集

以下示例显示如何从命令行将规则添加到活动的包过滤规则集。


# ipfstat -io
empty list for ipfilter(out)
block in log quick from 10.0.0.0/8 to any
# echo "block in on dmfe1 proto tcp from 10.1.1.1/32 to any" | ipf -f -
# ipfstat -io
empty list for ipfilter(out)
block in log quick from 10.0.0.0/8 to any
block in on dmfe1 proto tcp from 10.1.1.1/32 to any

Procedure如何将规则附加到非活动的包过滤规则集

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在所选的文件中创建规则集。

  3. 将已创建的规则添加到非活动规则集。


    # ipf -I -f filename
    

    filename 中的规则将添加到非活动规则集的结尾。由于 Solaris IP 过滤器使用“最后一个匹配规则”算法,因此,除非使用 quick 关键字,否则所添加的规则将确定过滤优先级。如果包与包含 quick 关键字的规则匹配,则执行该规则的操作,且不检查后续规则。


示例 26–8 将规则附加到非活动规则集

以下示例显示如何将规则从文件添加到非活动规则集。


# ipfstat -I -io
pass out quick on dmfe1 all
pass in quick on dmfe1 all
# ipf -I -f /etc/ipf/ipf.conf
# ipfstat -I -io
pass out quick on dmfe1 all
pass in quick on dmfe1 all
block in log quick from 10.0.0.0/8 to any

Procedure如何在活动和非活动的包过滤规则集之间切换

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在活动和非活动的规则集之间切换。


    # ipf -s
    

    使用此命令,可以在内核中活动和非活动的规则集之间切换。请注意,如果非活动规则集为空,则没有包过滤。


示例 26–9 在活动和非活动的包过滤规则集之间切换

以下示例显示使用 ipf -s 命令如何导致非活动规则集成为活动规则集,并导致活动规则集成为非活动规则集。


Procedure如何从内核中删除非活动的包过滤规则集

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在“全部清除”命令中指定非活动规则集。


    # ipf -I -Fa
    

    此命令从内核中清除非活动规则集。


    注 –

    如果随后运行 ipf -s,则空的非活动规则集将成为活动规则集。空的活动规则集意味着会执行过滤。



示例 26–10 从内核中删除非活动的包过滤规则集

以下示例显示如何清除非活动的包过滤规则集以便删除所有规则。


# ipfstat -I -io
empty list for inactive ipfilter(out)
block in log quick from 10.0.0.0/8 to any
block in on dmfe1 proto tcp from 10.1.1.1/32 to any
# ipf -I -Fa
# ipfstat -I -io
empty list for inactive ipfilter(out)
empty list for inactive ipfilter(in)

管理 Oracle Solaris : IP 过滤器的 NAT 规则

使用以下过程可以管理、查看和修改 NAT 规则。

Procedure如何查看活动的 NAT 规则

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看活动的 NAT 规则。


    # ipnat -l
    

示例 26–11 查看活动的 NAT 规则

以下示例显示活动 NAT 规则集的输出。


# ipnat -l
List of active MAP/Redirect filters:
map dmfe0 192.168.1.0/24 -> 20.20.20.1/32

List of active sessions:

Procedure如何删除 NAT 规则

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 删除当前的 NAT 规则。


    # ipnat -C
    

示例 26–12 删除 NAT 规则

以下示例显示如何删除当前 NAT 规则中的项。


# ipnat -l
List of active MAP/Redirect filters:
map dmfe0 192.168.1.0/24 -> 20.20.20.1/32

List of active sessions:
# ipnat -C
1 entries flushed from NAT list
# ipnat -l
List of active MAP/Redirect filters:

List of active sessions:

Procedure如何将规则附加到 NAT 规则

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用以下方法之一将规则附加到活动规则集:

    • 在命令行上使用 ipnat -f - 命令,将规则附加到 NAT 规则集。


      # echo "map dmfe0 192.168.1.0/24 -> 20.20.20.1/32" | ipnat -f -
      
    • 执行以下命令:

      1. 在所选的文件中创建其他 NAT 规则。

      2. 将已创建的规则添加到活动的 NAT 规则。


        # ipnat -f filename
        

        filename 中的规则将添加到 NAT 规则的结尾。


示例 26–13 将规则附加到 NAT 规则集

以下示例显示如何从命令行将规则添加到 NAT 规则集。


# ipnat -l
List of active MAP/Redirect filters:

List of active sessions:
# echo "map dmfe0 192.168.1.0/24 -> 20.20.20.1/32" | ipnat -f -
# ipnat -l
List of active MAP/Redirect filters:
map dmfe0 192.168.1.0/24 -> 20.20.20.1/32

List of active sessions:

管理 Oracle Solaris : IP 过滤器的地址池

使用以下过程可以管理、查看和修改地址池。

Procedure如何查看活动地址池

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看活动地址池。


    # ippool -l
    

示例 26–14 查看活动地址池

以下示例显示如何查看活动地址池的内容。


# ippool -l
table role = ipf type = tree number = 13
        { 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24; };

Procedure如何删除地址池

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 删除当前地址池中的项。


    # ippool -F
    

示例 26–15 删除地址池

以下示例显示如何删除地址池。


# ippool -l
table role = ipf type = tree number = 13
        { 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24; };
# ippool -F
1 object flushed
# ippool -l

Procedure如何将规则附加到地址池

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用以下方法之一将规则附加到活动规则集:

    • 在命令行上使用 ippool -f - 命令,将规则附加到规则集。


      # echo "table role = ipf type = tree number = 13 
      {10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24};" | ippool -f -
      
    • 执行以下命令:

      1. 在所选的文件中创建其他地址池。

      2. 将已创建的规则添加到活动地址池。


        # ippool -f filename
        

        filename 中的规则将添加到活动地址池的结尾。


示例 26–16 将规则附加到地址池

以下示例显示如何从命令行将地址池添加到地址池规则集。


# ippool -l
table role = ipf type = tree number = 13
        { 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24; };
# echo "table role = ipf type = tree number = 100
 {10.0.0.0/32, 172.16.1.2/32, 192.168.1.0/24};" | ippool -f -
# ippool -l
table role = ipf type = tree number = 100
        { 10.0.0.0/32, 172.16.1.2/32, 192.168.1.0/24; };
table role = ipf type = tree number = 13
        { 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24; };

显示 Oracle Solaris : IP 过滤器的统计信息

表 26–5 显示 Oracle Solaris : IP 过滤器的统计信息(任务列表)

任务 

说明 

参考 

查看状态表。 

使用 ipfstat 命令查看状态表,以获取有关包过滤的信息。

如何查看 Oracle Solaris : IP 过滤器的状态表

查看状态统计信息。 

使用 ipfstat -s 命令查看有关包状态信息的统计信息。

如何查看 Oracle Solaris : IP 过滤器的状态统计信息

查看 NAT 统计信息。 

使用 ipnat -s 命令查看 NAT 统计信息。

如何查看 Oracle Solaris : IP 过滤器的 NAT 统计信息

查看地址池统计信息。 

使用 ippool -s 命令查看地址池统计信息。

如何查看 Oracle Solaris : IP 过滤器的地址池统计信息

Procedure如何查看 Oracle Solaris : IP 过滤器的状态表

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看状态表。


    # ipfstat
    

    注 –

    可以使用 -t 选项以 top 实用程序格式查看状态表。



示例 26–17 查看 Oracle Solaris : IP 过滤器的状态表

以下示例显示如何查看状态表。


# ipfstat
bad packets:            in 0    out 0
 input packets:         blocked 160 passed 11 nomatch 1 counted 0 short 0
output packets:         blocked 0 passed 13681 nomatch 6844 counted 0 short 0
 input packets logged:  blocked 0 passed 0
output packets logged:  blocked 0 passed 0
 packets logged:        input 0 output 0
 log failures:          input 0 output 0
fragment state(in):     kept 0  lost 0
fragment state(out):    kept 0  lost 0
packet state(in):       kept 0  lost 0
packet state(out):      kept 0  lost 0
ICMP replies:   0       TCP RSTs sent:  0
Invalid source(in):     0
Result cache hits(in):  152     (out):  6837
IN Pullups succeeded:   0       failed: 0
OUT Pullups succeeded:  0       failed: 0
Fastroute successes:    0       failures:       0
TCP cksum fails(in):    0       (out):  0
IPF Ticks:      14341469
Packet log flags set: (0)
        none

Procedure如何查看 Oracle Solaris : IP 过滤器的状态统计信息

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看状态统计信息。


    # ipfstat -s
    

示例 26–18 查看 Oracle Solaris : IP 过滤器的状态统计信息

以下示例显示如何查看状态统计信息。


# ipfstat -s
IP states added:
        0 TCP
        0 UDP
        0 ICMP
        0 hits
        0 misses
        0 maximum
        0 no memory
        0 max bucket
        0 active
        0 expired
        0 closed
State logging enabled

State table bucket statistics:
        0 in use        
        0.00% bucket usage
        0 minimal length
        0 maximal length
        0.000 average length

Procedure如何查看 Oracle Solaris : IP 过滤器的 NAT 统计信息

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看 NAT 统计信息。


    # ipnat -s
    

示例 26–19 查看 Oracle Solaris : IP 过滤器的 NAT 统计信息

以下示例显示如何查看 NAT 统计信息。


# ipnat -s
mapped  in      0       out     0
added   0       expired 0
no memory       0       bad nat 0
inuse   0
rules   1
wilds   0

Procedure如何查看 Oracle Solaris : IP 过滤器的地址池统计信息

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看地址池统计信息。


    # ippool -s
    

示例 26–20 查看 Oracle Solaris : IP 过滤器的地址池统计信息

以下示例说明如何查看地址池统计信息。


# ippool -s
Pools:  3
Hash Tables:    0
Nodes:  0

使用 Oracle Solaris : IP 过滤器的日志文件

表 26–6 使用 Oracle Solaris : IP 过滤器的日志文件(任务列表)

任务 

说明 

参考 

创建日志文件。 

创建单独的 Oracle Solaris : IP 过滤器日志文件。 

如何为 Oracle Solaris : IP 过滤器设置日志文件

查看日志文件。 

使用 ipmon 命令查看状态日志文件、NAT 日志文件和常规日志文件。

如何查看 Oracle Solaris : IP 过滤器的日志文件

清除包日志缓冲区。 

使用 ipmon -F 命令删除包日志缓冲区的内容。

如何清除包日志文件

将记录的包保存到文件中。 

将记录的包保存到文件中,以供日后参考。 

如何将记录的包保存到文件中

Procedure如何为 Oracle Solaris : IP 过滤器设置日志文件

缺省情况下,Oracle Solaris : IP 过滤器的所有日志信息都记录在 syslogd 文件中。应设置一个日志文件来单独记录 Oracle Solaris : IP 过滤器流量信息,以将其与可能记录在缺省日志文件中的其他数据相区分。请执行以下步骤。

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过添加以下两行来编辑 /etc/syslog.conf 文件:


    # Save IPFilter log output to its own file 
    local0.debug             /var/log/log-name
    

    注 –

    在第二行中,确保使用 Tab 键而不是 Spacebar 来分隔 local0.debug/var/log/log-name


  3. 创建新日志文件。


    # touch /var/log/log-name
    
  4. 重新启动系统日志服务。


    # svcadm restart system-log
    

示例 26–21 创建 Oracle Solaris : IP 过滤器日志

以下示例显示如何创建 ipmon.log 以归档 IP 过滤器信息。

/etc/syslog.conf 中:


# Save IPFilter log output to its own file 
local0.debug             /var/log/ipmon.log

在命令行中:


# touch /var/log/ipmon.log
# svcadm restart system-log

Procedure如何查看 Oracle Solaris : IP 过滤器的日志文件

开始之前

应创建一个单独的日志文件来记录 Oracle Solaris : IP 过滤器数据。请参阅如何为 Oracle Solaris : IP 过滤器设置日志文件

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看状态日志文件、NAT 日志文件或常规日志文件。要查看日志文件,请键入以下命令,并使用适当的选项:


    # ipmon -o [S|N|I] filename
    
    S

    显示状态日志文件。

    N

    显示 NAT 日志文件。

    I

    显示常规 IP 日志文件。

    要查看所有状态日志文件、NAT 日志文件和常规日志文件,请使用所有选项:


    # ipmon -o SNI filename
    
    • 如果您已事先手动停止了 ipmon 守护进程,那么还可以使用以下命令来显示状态日志文件、NAT 日志文件和 Oracle Solaris : IP 过滤器日志文件。


      # ipmon -a filename
      

      注 –

      如果 ipmon 守护进程仍在运行,请勿使用 ipmon -a 语法。通常,该守护进程会在系统引导期间自动启动。发出 ipmon -a 命令还会打开 ipmon 的另一个副本。在此情况下,两个副本将读取相同的日志信息,只有一个副本会获得特定日志消息。


    有关查看日志文件的更多信息,请参见 ipmon(1M) 手册页。


示例 26–22 查看 Oracle Solaris : IP 过滤器的日志文件

以下示例显示了来自 /var/ipmon.log 的输出。


# ipmon -o SNI /var/ipmon.log
02/09/2004 15:27:20.606626 hme0 @0:1 p 129.146.157.149 -> 
129.146.157.145 PR icmp len 20 84 icmp echo/0 IN


# pkill ipmon
# ipmon -aD /var/ipmon.log
02/09/2004 15:27:20.606626 hme0 @0:1 p 129.146.157.149 -> 
129.146.157.145 PR icmp len 20 84 icmp echo/0 IN

Procedure如何清除包日志文件

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 清除包日志缓冲区。


    # ipmon -F
    

示例 26–23 清除包日志文件

以下示例显示删除日志文件时的输出。即使未在日志文件中存储任何内容,系统也将提供一个报告,如此示例所示。


# ipmon -F
0 bytes flushed from log buffer
0 bytes flushed from log buffer
0 bytes flushed from log buffer

Procedure如何将记录的包保存到文件中

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 将记录的包保存到文件中。


    # cat /dev/ipl > filename
    

    继续将包记录到 filename 文件中,直到您通过键入 Ctrl-C 组合键使命令行提示符重新出现来中断该过程。


示例 26–24 将记录的包保存到文件中

以下示例显示将记录的包保存到文件中时所出现的结果。


# cat /dev/ipl > /tmp/logfile
^C#

# ipmon -f /tmp/logfile
02/09/2004 15:30:28.708294 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 52 -S IN
02/09/2004 15:30:28.708708 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 40 -A IN
02/09/2004 15:30:28.792611 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 70 -AP IN
02/09/2004 15:30:28.872000 hme0 @0:1 p 129.146.157.149,33923 -> 
 129.146.157.145,23 PR tcp len 20 40 -A IN
02/09/2004 15:30:28.872142 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 43 -AP IN
02/09/2004 15:30:28.872808 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 40 -A IN
02/09/2004 15:30:28.872951 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 47 -AP IN
02/09/2004 15:30:28.926792 hme0 @0:1 p 129.146.157.149,33923 -> 
  129.146.157.145,23 PR tcp len 20 40 -A IN 
.
.
(output truncated)

创建和编辑 Oracle Solaris : IP 过滤器配置文件

必须直接编辑配置文件以创建和修改规则集及地址池。配置文件遵循标准的 UNIX 语法规则:

Procedure如何为 Oracle Solaris : IP 过滤器创建配置文件

以下过程介绍如何设置以下文件:

  1. 承担拥有 IP 过滤器管理权限配置文件的角色,或者成为超级用户。

    可以将 IP 过滤器管理权限配置文件指定给您创建的角色。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 启动所选的文件编辑器。为要配置的功能创建或编辑配置文件。

    • 要为包过滤规则创建配置文件,请编辑 ipf.conf 文件。

      Oracle Solaris : IP 过滤器使用放置在 ipf.conf 文件中的包过滤规则。如果在 /etc/ipf/ipf.conf 文件中放置包过滤的规则文件,则在引导系统时会装入此文件。如果不希望在引导时装入过滤规则,请将其放置在所选的文件中。然后可以使用 ipf 命令激活规则,如如何激活不同的或更新的包过滤规则集中所述。

      有关创建包过滤规则的信息,请参见使用 Oracle Solaris : IP 过滤器的包过滤功能


      注 –

      如果 ipf.conf 文件为空,则没有过滤。空的 ipf.conf 文件相当于具有以下规则集:


      pass in all
      pass out all

    • 要为 NAT 规则创建配置文件,请编辑 ipnat.conf 文件。

      Oracle Solaris : IP 过滤器使用放置在 ipnat.conf 文件中的 NAT 规则。如果在 /etc/ipf/ipnat.conf 文件中放置 NAT 的规则文件,则在引导系统时会装入此文件。如果不希望在引导时装入 NAT 规则,请将 ipnat.conf 文件放置在所选的位置中。然后可以使用 ipnat 命令激活 NAT 规则。

      有关为 NAT 创建规则的信息,请参见使用 Oracle Solaris : IP 过滤器的 NAT 功能

    • 要为地址池创建配置文件,请编辑 ippool.conf 文件。

      Oracle Solaris : IP 过滤器使用放置在 ippool.conf 文件中的地址池。如果在 /etc/ipf/ippool.conf 文件中放置地址池的规则文件,则在引导系统时会装入此文件。如果不希望在引导时装入地址池,请将 ippool.conf 文件放置在所选的位置中。然后可以使用 ippool 命令激活地址池。

      有关创建地址池的信息,请参见使用 Oracle Solaris : IP 过滤器的地址池功能

Oracle Solaris : IP 过滤器配置文件示例

以下示例说明了在过滤配置中使用的包过滤规则。


示例 26–25 Oracle Solaris : IP 过滤器主机配置

此示例显示具有 elxl 网络接口的主机上的配置。


# pass and log everything by default
pass in log on elxl0 all
pass out log on elxl0 all

# block, but don't log, incoming packets from other reserved addresses
block in quick on elxl0 from 10.0.0.0/8 to any
block in quick on elxl0 from 172.16.0.0/12 to any

# block and log untrusted internal IPs. 0/32 is notation that replaces 
# address of the machine running Solaris IP Filter.
block in log quick from 192.168.1.15 to <thishost>
block in log quick from 192.168.1.43 to <thishost>

# block and log X11 (port 6000) and remote procedure call 
# and portmapper (port 111) attempts
block in log quick on elxl0 proto tcp from any to elxl0/32 port = 6000 keep state
block in log quick on elxl0 proto tcp/udp from any to elxl0/32 port = 111 keep state

此规则集以两个无限制规则开始,分别允许将任何内容传入和传出 elxl 接口。第二个规则集阻止从专用地址空间 10.0.0.0172.16.0.0 传入的任何包进入防火墙。下一个规则集阻止来自主机的特定内部地址。最后一个规则集阻止从端口 6000 和端口 111 上传入的包。



示例 26–26 Oracle Solaris : IP 过滤器服务器配置

此示例显示用作 Web 服务器的主机的配置。此计算机具有 eri 网络接口。


# web server with an eri interface
# block and log everything by default; then allow specific services
# group 100 - inbound rules
# group 200 - outbound rules
# (0/32) resolves to our IP address)
*** FTP proxy ***


# block short packets which are packets fragmented too short to be real.
block in log quick all with short


# block and log inbound and outbound by default, group by destination
block in log on eri0 from any to any head 100
block out log on eri0 from any to any head 200


# web rules that get hit most often
pass in quick on eri0 proto tcp from any \
to eri0/32 port = http flags S keep state group 100
pass in quick on eri0 proto tcp from any \
to eri0/32 port = https flags S keep state group 100


# inbound traffic - ssh, auth
pass in quick on eri0 proto tcp from any \
to eri0/32 port = 22 flags S keep state group 100
pass in log quick on eri0 proto tcp from any \
to eri0/32 port = 113 flags S keep state group 100
pass in log quick on eri0 proto tcp from any port = 113 \
to eri0/32 flags S keep state group 100


# outbound traffic - DNS, auth, NTP, ssh, WWW, smtp
pass out quick on eri0 proto tcp/udp from eri0/32 \
to any port = domain flags S keep state group 200
pass in quick on eri0 proto udp from any port = domain to eri0/32 group 100

pass out quick on eri0 proto tcp from eri0/32 \
to any port = 113 flags S keep state group 200
pass out quick on eri0 proto tcp from eri0/32 port = 113 \
to any flags S keep state group 200

pass out quick on eri0 proto udp from eri0/32 to any port = ntp group 200
pass in quick on eri0 proto udp from any port = ntp to eri0/32 port = ntp group 100

pass out quick on eri0 proto tcp from eri0/32 \
to any port = ssh flags S keep state group 200

pass out quick on eri0 proto tcp from eri0/32 \
to any port = http flags S keep state group 200
pass out quick on eri0 proto tcp from eri0/32 \
to any port = https flags S keep state group 200

pass out quick on eri0 proto tcp from eri0/32 \
to any port = smtp flags S keep state group 200


# pass icmp packets in and out
pass in quick on eri0 proto icmp from any to eri0/32  keep state group 100
pass out quick on eri0 proto icmp from eri0/32 to any keep state group 200


# block and ignore NETBIOS packets
block in quick on eri0 proto tcp from any \
to any port = 135 flags S keep state group 100

block in quick on eri0 proto tcp from any port = 137 \
to any flags S keep state group 100
block in quick on eri0 proto udp from any to any port = 137 group 100
block in quick on eri0 proto udp from any port = 137 to any group 100

block in quick on eri0 proto tcp from any port = 138 \
to any flags S keep state group 100
block in quick on eri0 proto udp from any port = 138 to any group 100

block in quick on eri0 proto tcp from any port = 139 to any flags S keep state
group 100
block in quick on eri0 proto udp from any port = 139 to any group 100


示例 26–27 Oracle Solaris : IP 过滤器路由器配置

此示例显示具有内部接口 ce0 和外部接口 ce1 的路由器的配置。


# internal interface is ce0 at 192.168.1.1
# external interface is ce1 IP obtained via DHCP
# block all packets and allow specific services
*** NAT ***
*** POOLS ***


# Short packets which are fragmented too short to be real.
block in log quick all with short


# By default, block and log everything.
block in log on ce0 all
block in log on ce1 all
block out log on ce0 all
block out log on ce1 all


# Packets going in/out of network interfaces that aren't on the loopback
# interface should not exist.
block in log quick on ce0 from 127.0.0.0/8 to any
block in log quick on ce0 from any to 127.0.0.0/8
block in log quick on ce1 from 127.0.0.0/8 to any
block in log quick on ce1 from any to 127.0.0.0/8


# Deny reserved addresses.
block in quick on ce1 from 10.0.0.0/8 to any
block in quick on ce1 from 172.16.0.0/12 to any
block in log quick on ce1 from 192.168.1.0/24 to any
block in quick on ce1 from 192.168.0.0/16 to any


# Allow internal traffic
pass in quick on ce0 from 192.168.1.0/24 to 192.168.1.0/24
pass out quick on ce0 from 192.168.1.0/24 to 192.168.1.0/24


# Allow outgoing DNS requests from our servers on .1, .2, and .3
pass out quick on ce1 proto tcp/udp from ce1/32 to any port = domain keep state
pass in quick on ce0 proto tcp/udp from 192.168.1.2 to any port = domain keep state
pass in quick on ce0 proto tcp/udp from 192.168.1.3 to any port = domain keep state


# Allow NTP from any internal hosts to any external NTP server.
pass in quick on ce0 proto udp from 192.168.1.0/24 to any port = 123 keep state
pass out quick on ce1 proto udp from any to any port = 123 keep state


# Allow incoming mail
pass in quick on ce1 proto tcp from any to ce1/32 port = smtp keep state
pass in quick on ce1 proto tcp from any to ce1/32 port = smtp keep state
pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = smtp keep state


# Allow outgoing connections: SSH, WWW, NNTP, mail, whois
pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = 22 keep state
pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = 22 keep state

pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = 80 keep state
pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = 80 keep state
pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = 443 keep state
pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = 443 keep state

pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = nntp keep state
block in quick on ce1 proto tcp from any to any port = nntp keep state
pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = nntp keep state

pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = smtp keep state

pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = whois keep state
pass out quick on ce1 proto tcp from any to any port = whois keep state


# Allow ssh from offsite
pass in quick on ce1 proto tcp from any to ce1/32 port = 22 keep state


# Allow ping out
pass in quick on ce0 proto icmp all keep state
pass out quick on ce1 proto icmp all keep state


# allow auth out
pass out quick on ce1 proto tcp from ce1/32 to any port = 113 keep state
pass out quick on ce1 proto tcp from ce1/32 port = 113 to any keep state


# return rst for incoming auth
block return-rst in quick on ce1 proto tcp from any to any port = 113 flags S/SA


# log and return reset for any TCP packets with S/SA
block return-rst in log on ce1 proto tcp from any to any flags S/SA


# return ICMP error packets for invalid UDP packets
block return-icmp(net-unr) in proto udp all