在防火墙生成器中使用IP服务对象
作者:vadim@fwbuilder.org http://www.fwbuilder.org |
本文继续关于Fireall Builder的一系列文章,一个支持许多开源防火墙平台以及Cisco IOS访问列表和Cisco ASA(PIX)的图形化防火墙配置和管理工具。 防火墙生成器早期在此站点上引入, 使用 防火墙生成器入门,在防火墙生成器中使用内置版本控制,在防火墙生成器中使用内置策略安装程序 , 在防火墙生成器中使用防火墙对象 。 本文演示如何使用防火墙构建器中的IP服务对象。
有关Firewall Builder,预构建的二进制包和源代码,文档和Firewall Builder Cookbook的更多信息 ,请访问项目网站www.fwbuilder.org 。 观看项目博客 ,了解使用Firewall Builder的所有方面的公告和文章。
在防火墙生成器中使用IP服务对象
在防火墙生成器中,服务对象表示ICMP中的“主机不可达”,TCP中的HTTP,IP中的GRE或UDP中的IP,ICMP,TCP和UDP服务。 防火墙生成器为ICMP(IP协议编号1),TCP(IP协议号6)和UDP(IP协议号17)中的一百多种知名和常用的服务提供服务对象。
IP服务
IP服务对象描述不是ICMP,TCP或UDP的协议。 (ICMP,TCP和UDP都有自己的服务对象)IP协议由IP包头中的8位字段定义。 下面的屏幕截图表示使用IP协议号50的ESP对象(封装安全有效负载,IPSEC协议族的一部分)。
注意:协议号由IANA分配; 可以在以下URL 查找特定协议的号码: http : //www.iana.org/assignments/protocol-numbers/
除了协议号,IP包的报头也有一个称为“选项”的字段,该字段是数据包的可选信息的可变长度列表。 并不是所有的防火墙都可以检查选项,而那些防火墙通常可以对它们匹配的选项有一定的限制。 防火墙生成器尝试为最复杂的防火墙支持的许多流行选项提供控件。 所有目标防火墙平台都不支持Firewall Builder支持的所有选项:
支持各种防火墙平台上的IP选项和碎片:
防火墙 | lsrr | ssrr | rr | ttimestamp | 所有片段 | “短”包 |
---|---|---|---|---|---|---|
iptables | + | + | + | + | + | - |
ipfilter | - | + | + | + | + | + |
pf | - | - | - | - | + | - |
思科PIX | - | - | - | - | - | - |
源路由选项LSRR,SSRR
通常,IP路由是动态的,每个路由器作出关于哪个下一跳路由器发送分组的决定。 但是,存在发件人可以选择路由的另一个选项。 在松散源路由的情况下,发送方(主机)可以指定数据包必须遍历的路由器的列表,但也可以通过列表中任意两个地址之间的其他路由器。 严格源路由的工作方式非常相同,只不过数据包必须只通过指定的地址才能遍历。 即使这些主机使用通常不能通过Internet访问的专用IP地址,源路由也可能用于到达防火墙后面的主机。
记录路由选项RR
此选项将导致处理数据包的每个路由器将其IP地址添加到选项字段中的列表中。 当用“-R”命令行开关调用该实用程序时,此选项将使用该选项; 它可能被利用来发现防火墙后面的内部网络寻址和布局。 虽然风险很低,但一些防火墙管理员更喜欢使用此选项来阻止数据包。
时间戳选项
此选项告诉处理数据包的路由器记录其时间戳和有时地址(如在记录路由选项的情况下)。 此选项很少使用,但可能会被利用来收集有关受保护网络的信息,因此一些防火墙管理员更喜欢使用此选项集来阻止数据包。
片段选项
IP数据包有时可能会碎片化。 如果原始数据报大于物理网络层可以传输的数据报,则会发生这种情况。 IP包头具有特殊字段(称为“标志”和“片段偏移”),用于检测碎片包并帮助重新组合它们。 许多防火墙也可以检查这些位。 某些组合的标签和碎片偏移量在正常操作中永远不会发生,但被认为被攻击者使用。 防火墙构建器为分组分片的最常用案例提供了两个选项:“所有片段”选项与第二个和其他片段匹配,而“短”选项用于匹配太短的数据包,甚至不包含完整的IP头。
Firewall Builder附带的标准IP服务对象显示在“ 服务/ IP”分支中的标准对象库中。
支持TOS和DSCP
一些防火墙可以根据TOS(“服务类型”)或DSCP(“差分服务代码点”)位设置匹配IP数据包。 这些位用于定义“服务质量”。 由于TOS和DSCP在IP报头中使用相同的字节,所以这两个是相互排斥的。 IP服务对话框使用单选按钮在TOS和DSCP之间进行选择,并提供实际代码的输入字段。 代码通常是在生成的防火墙配置中逐字使用的十六进制数字或类别代码,例如“BE”,“EF”,“AFxx”或“CSx”。
在策略规则中使用IP服务对象
考虑以下IP服务对象:
对象EF启用DSCP匹配,匹配流量级EF 。 对象TOS 0x10匹配TOS位设置为0x10(低延迟)的数据包。 对象all_fragments已打开标志“所有碎片”,最后对象lsrr匹配“松散源路由”选项。 当我们在策略规则中使用这些对象时,我们获得了iptables,如下所示:
# Rule 0 (global)
#
$IPTABLES -N RULE_0
$IPTABLES -A FORWARD -p all -f -j RULE_0
$IPTABLES -A FORWARD -p all -m ipv4options --lsrr -j RULE_0
$IPTABLES -A RULE_0 -j LOG --log-level info --log-prefix "RULE 0 -- DENY "
$IPTABLES -A RULE_0 -j DROP
#
# Rule 1 (global)
#
$IPTABLES -A FORWARD -o + -p all -m dscp --dscp-class EF -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o + -p all -m tos --tos 0x10 -m state --state NEW -j ACCEPT
iptables的编译器使用模块ipv4options匹配lsrr ,命令行选项-f匹配所有片段,模块tos匹配TOS和模块dscp匹配dscp类。
当为IPv6编译时,这些规则产生以下iptables命令:
# Rule 0 (global)
#
$IP6TABLES -N RULE_0
$IP6TABLES -A FORWARD -m frag --fragmore -j RULE_0
$IP6TABLES -A RULE_0 -j LOG --log-level info --log-prefix "RULE 0 -- DENY "
$IP6TABLES -A RULE_0 -j DROP
#
# Rule 1 (global)
#
$IP6TABLES -A FORWARD -o + -m dscp --dscp-class EF -m state --state NEW -j ACCEPT
$IP6TABLES -A FORWARD -o + -m tos --tos 0x10 -m state --state NEW -j ACCEPT
ip6tables没有命令行标志-f ,而是使用模块frag来匹配碎片。 Fwbuilder目前不支持ip6tables模块ipv6header ,并且源路由选项不存在于IPv6中,因此对象“lsrr”不能在规则中使用。
PF不能匹配DSCP位和源路由选项,但可以匹配TOS。 在PF的策略规则中尝试相同的IPService对象“tos 0x10”:
pass out quick inet from any to (eth0) tos 0x10 keep state
Cisco IOS访问列表不能匹配源路由选项,但可以匹配片段,TOS和DSCP位。 如果我们尝试使用相同的IPService对象为Cisco IOS访问列表目标防火墙平台编译相同的规则,那么我们得到的是:
ip access-list extended e1_0_out
!
! Rule 0 (global)
!
deny ip any any log fragments
!
! Rule 1 (global)
!
permit ip any any tos 0x10
permit ip any any dscp EF
exit