跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中保护网络安全 Oracle Solaris 11.1 Information Library (简体中文) |
在以下情况下,可能希望修改或取消激活包过滤和 NAT 规则:
要进行测试
在认为系统问题是由 IP 过滤器所导致时,对这些问题进行故障排除
以下任务列表提供了与 IP 过滤器规则集合相关的过程。
表 5-2 使用 IP 过滤器规则集合(任务列表)
|
IP 过滤器允许活动和非活动的包过滤规则集合驻留在内核中。活动规则集合确定正在对传入包和传出包执行的过滤。非活动规则集合也存储规则,但不会使用这些规则,除非使非活动规则集合成为活动规则集合。可以管理、查看和修改活动和非活动的包过滤规则集合。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
以下示例显示装入到内核中的活动包过滤规则集合的输出。
$ ipfstat -io empty list for ipfilter(out) pass in quick on net1 from 192.168.1.0/24 to any pass in all block in on net1 from 192.168.1.10/32 to any
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
以下示例显示非活动的包过滤规则集合的输出。
$ ipfstat -I -io pass out quick on net1 all pass in quick on net1 all
如果要执行以下任一任务,请使用以下过程:
激活当前 IP 过滤器正在使用的包过滤规则集合之外的另一个包过滤规则集合。
重新装入最近已更新的同一过滤规则集合。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
如果要激活完全不同的规则集合,请在单独文件中创建一个新规则集合。
在配置文件中更新当前规则集合。
$ ipf -Fa -f filename
filename 中的规则将替换活动规则集合。
注 - 请勿使用 ipf -D 或 svcadm restart 之类的命令来装入更新的规则集合。此类命令会公开您的网络,因为它们在装入新规则集合之前禁用防火墙。
示例 5-1 激活不同的包过滤规则集合
以下示例说明如何将一个包过滤规则集替换为其他规则集合。
$ ipfstat -io empty list for ipfilter(out) pass in quick on net0 all $ ipf -Fa -f /etc/ipf/ipfnew.conf $ ipfstat -io empty list for ipfilter(out) block in log quick from 10.0.0.0/8 to any
示例 5-2 重新装入更新的包过滤规则集合
以下示例说明如何重新装入当前处于活动状态且已更新的包过滤规则集合。
$ ipfstat -io (Optional) empty list for ipfilter (out) block in log quick from 10.0.0.0/8 to any (Edit the /etc/ipf/myorg.ipf.conf configuration file.) $ svcadm refresh network/ipfilter $ ipfstat -io (Optional) empty list for ipfilter (out) block in log quick from 10.0.0.0/8 to any block in quick on net11 from 192.168.0.0/12 to any
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
$ ipf -F [a|i|o]
从规则集合中删除所有过滤规则。
删除传入包的过滤规则。
删除传出包的过滤规则。
示例 5-3 删除包过滤规则集合
以下示例显示如何从活动的过滤规则集合中删除所有过滤规则。
$ ipfstat -io block out log on net0 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)
将规则附加到现有规则集合在测试或调试时可能非常有用。IP 过滤器服务在添加规则时保持启用状态。但是,这些规则将在刷新、重启或启用服务时丢失,除非它们位于 IP 过滤器服务的属性文件中。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
在命令行上使用 ipf -f - 命令,将规则附加到规则集合。
$ echo "block in on net1 proto tcp from 10.1.1.1/32 to any" | ipf -f -
在刷新、重启或启用服务时,这些附加的规则不属于 IP 过滤器配置的一部分。
执行以下命令:
在所选的文件中创建规则集合。
将已创建的规则添加到活动规则集合。
$ ipf -f filename
filename 中的规则将添加到活动规则集合的结尾。由于 IP 过滤器使用“最后一个匹配规则”算法,因此,除非使用 quick 关键字,否则所添加的规则将确定过滤优先级。如果包与包含 quick 关键字的规则匹配,则执行该规则的操作,且不检查后续规则。
如果 filename 是其中一个 IP 过滤器配置文件属性的值,则将在启用、重启或刷新服务时重新装入这些规则。否则,附加的规则将提供一个临时的规则集合。
示例 5-4 将规则附加到活动的包过滤规则集合
以下示例显示如何从命令行将规则添加到活动的包过滤规则集合。
$ ipfstat -io empty list for ipfilter(out) block in log quick from 10.0.0.0/8 to any $ echo "block in on net1 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 net1 proto tcp from 10.1.1.1/32 to any
在内核中创建非活动规则集合在测试或调试时可能非常有用。该规则集合可与活动规则集合进行切换,而无需停止 IP 过滤器服务。但是,刷新、重启或启用该服务时,必须添加非活动规则集合。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
$ ipf -I -f filename
filename 中的规则将添加到非活动规则集合的结尾。由于 IP 过滤器使用“最后一个匹配规则”算法,因此,除非使用 quick 关键字,否则所添加的规则将确定过滤优先级。如果包与包含 quick 关键字的规则匹配,则执行该规则的操作,且不检查后续规则。
示例 5-5 将规则附加到非活动规则集合
以下示例显示如何将规则从文件添加到非活动规则集合。
$ ipfstat -I -io pass out quick on net1 all pass in quick on net1 all $ ipf -I -f /etc/ipf/ipftrial.conf $ ipfstat -I -io pass out quick on net1 all pass in quick on net1 all block in log quick from 10.0.0.0/8 to any
在内核中切换到其他规则集合在测试或调试时可能非常有用。无需停止 IP 过滤器服务即可激活规则集合。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
$ ipf -s
使用此命令,可以在内核中活动和非活动的规则集合之间切换。请注意,如果非活动规则集合为空,则没有包过滤。
注 - 刷新、重启或启用 IP 过滤器服务时,将会恢复 IP 过滤器服务属性文件中的规则。不会恢复非活动规则集合。
示例 5-6 在活动和非活动的包过滤规则集合之间切换
以下示例显示使用 ipf -s 命令如何导致非活动规则集合成为活动规则集合,并导致活动规则集合成为非活动规则集合。
运行 ipf -s 命令之前,ipfstat -I -io 命令的输出显示非活动规则集合中的规则。ipfstat -io 命令的输出显示活动规则集合中的规则。
$ ipfstat -io empty list for ipfilter(out) block in log quick from 10.0.0.0/8 to any block in on net1 proto tcp from 10.1.1.1/32 to any $ ipfstat -I -io pass out quick on net1 all pass in quick on net1 all block in log quick from 10.0.0.0/8 to any
运行 ipf -s 命令后,ipfstat -I -io 和 ipfstat -io 命令的输出显示两个规则集合的内容已切换。
$ ipf -s Set 1 now inactive $ ipfstat -io pass out quick on net1 all pass in quick on net1 all block in log quick from 10.0.0.0/8 to any $ ipfstat -I -io empty list for inactive ipfilter(out) block in log quick from 10.0.0.0/8 to any block in on net1 proto tcp from 10.1.1.1/32 to any
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
$ ipf -I -Fa
注 - 如果随后运行 ipf -s,则空的非活动规则集合将成为活动规则集合。空的活动规则集合意味着不会执行过滤。
示例 5-7 从内核中删除非活动的包过滤规则集合
以下示例显示如何刷新非活动的包过滤规则集合以便删除所有规则。
$ ipfstat -I -io empty list for inactive ipfilter(out) block in log quick from 10.0.0.0/8 to any block in on net1 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)
使用以下过程可以管理、查看和修改 IP 过滤器的 NAT 规则。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
以下示例显示活动 NAT 规则集合的输出。
$ ipnat -l List of active MAP/Redirect filters: map net0 192.168.1.0/24 -> 20.20.20.1/32 List of active sessions:
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
$ ipnat -FC
-C 选项删除当前 NAT 规则列表中的所有项。-F 选项删除当前 NAT 转换表(它显示当前活动的 NAT 映射)中的所有活动项。
示例 5-8 删除 NAT 规则
以下示例显示如何删除当前 NAT 规则中的项。
$ ipnat -l List of active MAP/Redirect filters: map net0 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:
将规则附加到现有规则集合在测试或调试时可能非常有用。IP 过滤器服务在添加规则时保持启用状态。但是,NAT 规则将在刷新、重启或启用服务时丢失,除非它们位于 IP 过滤器服务的属性文件中。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
在命令行上使用 ipnat -f - 命令,将规则附加到 NAT 规则集合。
$ echo "map net0 192.168.1.0/24 -> 20.20.20.1/32" | ipnat -f -
在刷新、重启或启用服务时,这些附加的规则不属于 IP 过滤器配置的一部分。
执行以下命令:
在所选的文件中创建其他 NAT 规则。
将已创建的规则添加到活动的 NAT 规则。
$ ipnat -f filename
filename 中的规则将添加到 NAT 规则的结尾。
如果 filename 是其中一个 IP 过滤器配置文件属性的值,则将在启用、重启或刷新服务时重新装入这些规则。否则,附加的规则将提供一个临时的规则集合。
示例 5-9 将规则附加到 NAT 规则集合
以下示例显示如何从命令行将规则添加到 NAT 规则集合。
$ ipnat -l List of active MAP/Redirect filters: List of active sessions: $ echo "map net0 192.168.1.0/24 -> 20.20.20.1/32" | ipnat -f - $ ipnat -l List of active MAP/Redirect filters: map net0 192.168.1.0/24 -> 20.20.20.1/32 List of active sessions:
使用以下过程可以管理、查看和修改地址池。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
以下示例显示如何查看活动地址池的内容。
$ ippool -l table role = ipf type = tree number = 13 { 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24; };
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
$ ippool -F
示例 5-10 删除地址池
以下示例显示如何删除地址池。
$ 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
将规则附加到现有规则集合在测试或调试时可能非常有用。IP 过滤器服务在添加规则时保持启用状态。但是,地址池规则将在刷新、重启或启用服务时丢失,除非它们位于 IP 过滤器服务的属性文件中。
开始之前
您必须成为分配有 "IP Filter Management"(IP 过滤器管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"。
在命令行上使用 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 -
在刷新、重启或启用服务时,这些附加的规则不属于 IP 过滤器配置的一部分。
执行以下命令:
在所选的文件中创建其他地址池。
将已创建的规则添加到活动地址池。
$ ippool -f filename
filename 中的规则将添加到活动地址池的结尾。
请按照如何将规则附加到活动的包过滤规则集合中的说明操作。
注 - 请不要刷新或重启 IP 过滤器服务,否则将丢失已添加的地址池规则。
示例 5-11 将规则附加到地址池
以下示例显示如何从命令行将地址池添加到地址池规则集合。
$ 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; };