跳过导航链接 | |
退出打印视图 | |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- IP 过滤器防火墙监视守护进程
/lib/svc/bin/svc.ipfd
svc:/network/ipfilter:default
svc.ipfd 守护进程监视使用防火墙配置的服务操作,并启动更新服务的 IP 过滤器配置。此守护进程使得系统能够在每个服务级别以递增方式对系统的防火墙配置的变化作出反应。
服务被启用时,将激活服务的防火墙策略;服务被禁用时,将停用服务的防火墙策略;服务的配置属性组被修改时,将更新该服务的防火墙策略。svc.ipfd 监视服务管理工具 (Service Management Facility, SMF) 系统信息库以注意这些操作,并调用 IP 过滤器规则生成进程来实施服务的防火墙策略。
此守护进程由 network/ipfilter 服务通过 start 或 refresh 方法启动。因此,此守护进程继承相应方法的环境变量和凭证,并以具有所有区域特权的超级用户身份运行。
静态定义描述了服务用于生成特定于服务的 IPF 规则的网络资源配置。每个服务的 firewall_context 属性组包含服务的静态定义,类似于 inetd 管理的服务中的 inetd 属性组。该属性组支持:
适用于非 inetd 服务。IANA 名称或 RPC 名称,等同于 inetd/name 属性。
适用于非 inetd 服务。布尔属性,其中 true 值表示 RPC 服务,等同于 inetd/isrpc 属性。对于 RPC 服务,firewall_context/name 的值不是 IANA 名称,而是 RPC 程序编号或名称。请参见 rpc(4)。
另外,某些服务可能需要一种机制来生成和提供其自己的 IPF 规则。可选属性 ipf_method 提供了一种允许此类自定义规则生成的机制:
一个命令。通常是一个用于为服务生成 IPF 规则的脚本。该框架不会为具有此属性定义的服务来生成规则。相反,该框架希望这些服务提供它们自己的规则。
服务的 ipf_method 指定一个命令,该命令接受一个附加参数、其自己的故障管理资源标识符 (fault management resource identifier, FMRI),生成服务的防火墙规则并将这些规则输出到 stdout。要为具有 ipf_method 属性的服务生成规则,该框架通过将服务 FMRI 传递为附加参数来执行 ipf_method 中指定的命令,并通过将命令输出、规则重定向到服务的规则文件来存储服务的规则。因为 ipf_method 是从 network/ipfilter start 或 refresh 方法进程上下文中执行的,因此它继承执行上下文并以超级用户身份运行。
服务静态配置是由服务开发者提供的,用户不能修改。这些属性仅在安装更新的服务定义时进行修改。
每个服务的属性组 firewall_config 存储服务的防火墙策略配置。因为 network/ipfilter:default 负责两个防火墙策略,即适用于整个系统范围的 Global Default(全局缺省值)和 Global Override(全局覆盖)策略(如 ipfilter(5) 中所述),因此它有两个属性组 firewall_config_default 和 firewall_config_override,分别存储适用于整个系统范围的这两个策略。
下面是属性、属性的可能值,以及相应的语义:
policy 有以下模式:
无访问限制。对于全局策略,此模式允许所有传入通信。对于服务策略,此模式允许发送到其服务的所有传入通信。
比 none 的限制性要强。此模式允许来自除 apply_to 中指定的源以外的所有源的传入通信。
限制性最强的模式。此模式阻止来自除 apply_to 中指定的源以外的所有源的传入通信。
一个多值属性,它列出了要实施所选的策略模式的网络实体。如果策略为 deny,则将拒绝 apply_to 属性中列出的实体;如果策略为 allow,则将允许列出的实体。可能值的语法如下:
host: host:IP "host:192.168.84.14" subnet: network:IP/netmask "network:129.168.1.5/24" ippool: pool:pool number "pool:77" interface: if:interface_name "if:e1000g0"
一个多值属性,它列出了需要排除在 apply_to 列表之外的网络实体。例如,当向某个子网应用 deny 策略时,通过在 exceptions 属性中指定该子网中的某些主机,可对这些主机进行例外处理。此属性具有与 apply_to 属性相同的值语法。
仅适用于各个网络服务:
还可以将服务的策略设置为 use_global。采用 use_global 策略模式的服务继承 Global Default(全局缺省值)防火墙策略。
仅适用于 Global Default(全局缺省值):
Global Default(全局缺省值)策略,svc:/network/ipfilter:default 中的 firewall_config 属性组也可以设置为 custom。用户可将 policy 设为 custom 以使用预填充的 IP 过滤器配置,例如,现有的 IP 过滤器配置或框架无法提供的自定义配置。此仅适用于 Global Default(全局缺省值)的策略模式允许用户提供一个包含完整的 IPF 规则集的文本文件。当选择了 custom 模式时,指定的 IPF 规则集是完整的,且框架不会基于所配置的防火墙策略生成 IPF 规则。
当 Global Default(全局缺省值)策略设为 custom 时要使用的文件路径。该文件包含用来提供所需的 IP 过滤器配置的 IPF 规则集。例如,在 /etc/ipf/ipf.conf 中具有现有 IPF 规则的用户可执行下列命令来使用现有的规则:
设置自定义策略:
# svccfg -s ipfilter:default setprop \ firewall_config_default/policy = astring: "custom"
指定自定义文件:
# svccfg -s ipfilter:default setprop \ firewall_config_default/custom_policy_file = astring: \ "/etc/ipf/ipf.conf"
刷新配置:
# svcadm refresh ipfilter:default
要求允许其传入通信的非服务程序可以请求防火墙允许将通信流量发往其通信端口。此多值属性包含协议和端口元组,格式如下:
"{tcp | udp}:{PORT | PORT-PORT}"
初始状态下,适用于整个系统范围的策略设为 none,网络服务的策略设为 use_global。由于适用于整个系统范围的策略为 none 且所有服务均继承该策略,因此启用 network/ipfilter 将使用一组空的 IP 过滤器规则来激活防火墙。要配置更具限制性的策略,请使用 svccfg(1M) 来修改网络服务的策略和适用于整个系统范围的策略。
用户可通过修改服务的 firewall_config 属性组来配置防火墙策略。已创建了一个新的授权 solaris.smf.value.firewall.config,用以允许将防火墙管理特权委托给用户。具有 Service Operator(服务操作员)特权的用户需要具有该新的授权才能配置防火墙策略。
在引导过程中,将在启动已启用的服务之前为其配置防火墙。因此,在引导时服务是受保护的。当系统在运行时,在为服务配置防火墙期间运行服务时,诸如服务重新启动、启用和刷新之类的管理操作可能会导致服务在短暂时间内存在漏洞。
svc.ipfd 监视服务的启动和停止事件,并在 SMF 启动或停止服务的同时配置或取消配置服务的防火墙。因为两个操作同步进行,如果在防火墙配置完成前启动服务,可能会暴露窗口(小于一秒)。RPC 服务通常在临时地址上侦听,在服务实际运行前这些地址是未知的。RPC 服务会面临同样的暴露,因为在服务运行前不会配置防火墙。
建议将提供远程功能的服务加入到防火墙框架中以控制对服务的网络访问。虽然该框架集成不是强制性的,但如果配置了适用于整个系统范围的策略,对未集成到框架中的服务的远程访问可能无法正常进行。
将服务集成到框架中非常简便,仅需在服务清单中定义两个附加的属性组及其相应的属性。当用户启用服务时将生成的 IP 过滤器规则。需要使用 shell 脚本生成非琐碎的自定义规则时,可以使用现有的一些脚本作为示例。
其他属性组(firewall_config 和 firewall_context)分别存储防火墙策略配置和提供静态防火墙定义。下面是新的属性组和属性及其相应的缺省值的摘要。
防火墙策略配置:
对系统的访问由一个新的授权定义和一个用户自定义属性类型予以保护。应当以如下方式将新的授权分配给属性组 value_authorization 属性:
<propval name='value_authorization' type='astring' value='solaris.smf.value.firewall.config' />
第三方应按照服务符号名称空间约定来生成用户自定义类型。Sun 提供的服务可以使用 com.sun,fw_configuration 作为属性类型。
有关更多信息,请参见上文中的“防火墙策略配置”。
此属性的初始值应为 use_global,因为缺省情况下服务会继承 Global Default(全局缺省值)防火墙策略。
一个空属性,此属性没有初始值。
一个空属性,此属性没有初始值。
防火墙静态定义:
第三方应按照服务符号名称空间约定来生成用户自定义类型,Oracle 提供的服务可以使用 com.sun,fw_definition 作为属性类型。
有关更多信息,请参见上文中的“防火墙静态配置”。
具有大家熟知的由 IANA 定义的端口的服务,可通过 getservbyname(3SOCKET) 获取。服务的 IANA 名称存储在此属性中。对于 RPC 服务,RPC 程序编号存储在此属性中。
对于 RPC 服务,创建此属性时应将其值设为 true。
通常,指定的防火墙策略将用于生成服务的通信端口(派生自 firewall_context/name 属性)的 IP 过滤器规则。没有由 IANA 定义的端口且不是 RPC 服务的服务将需要生成其自己的 IP 过滤器规则。生成其自己的规则的服务可以选择不使用 firewall_context/name 和 firewall_context/isrpc 属性。有关指南,请参见以下服务:
svc:/network/ftp:default svc:/network/nfs/server:default svc:/network/ntp:default
...以及具有 ipf_method 的其他服务。
有关以下属性的说明,请参见 attributes(5):
|
svcprop(1)、svcs(1)、ipf(1M)、svcadm(1M)、svccfg(1M)、getservbyname(3SOCKET)、rpc(4)、attributes(5)、ipfilter(5)、smf(5)