二、学会编写IPFfilter 规则
典型的防火墙设置有两个网卡:一个流入,一个流出。IPFfilter读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。 通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用IPFfilter系统提供的特殊命令建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:
action [in|out] option keyword, keyword...
参数说明:
1. 每个规则都以操作开头。如果包与规则匹配,则 Solaris IP 过滤器将操作应用于该包。以下列表包括应用于包的常用操作。
block :阻止包通过过滤器。
pass :允许包通过过滤器。
log :记录包但不确定是阻止包还是传递包。使用 ipmon 命令可查看日志。
count :将包包括在过滤器统计信息中。使用 ipfstat 命令可查看统计信息。
skip number :使过滤器跳过 number 个过滤规则。
auth :请求由验证包信息的用户程序执行包验证。该程序会确定是传递包还是阻止包。
preauth :请求过滤器查看预先验证的列表以确定如何处理包。
2. 操作后面的下一个单词必须是 in 或 out。您的选择将确定是将包过滤规则应用于传入包还是应用于传出包。
3. 接下来,可以从选项列表中进行选择。如果使用多个选项,则这些选项必须采用此处显示的顺序。
log :如果规则是最后一个匹配规则,则记录包。使用 ipmon 命令可查看日志。
quick :如果存在匹配的包,则执行包含 quick 选项的规则。所有进一步的规则检查都将停止。
on interface-name :仅当包移入或移出指定接口时才应用规则。
dup-to interface-name:复制包并将 interface-name 上的副本向外发送到选择指定的 IP 地址。
to interface-name :将包移动到 interface-name 上的外发队列。
4. 指定选项后,可以从确定包是否与规则匹配的各关键字中进行选择。必须按此处显示的顺序使用以下关键字。
tos :基于表示为十六进制或十进制整数的服务类型值,对包进行过滤。
ttl :基于包的生存时间值与包匹配。在包中存储的生存时间值指明了包在被废弃之前可在网络中存在的时间长度。
proto :与特定协议匹配。可以使用在 /etc/protocols 文件中指定的任何协议名称,或者使用十进制数来表示协议。关键字 tcp/udp 可以用于与 TCP 包或 UDP 包匹配。
from/to/all/any :与以下任一项或所有项匹配:源 IP 地址、目标 IP 地址和端口号。all 关键字用于接受来自所有源和发往所有目标的包。
with :与和包关联的指定属性匹配。在关键字前面插入 not 或 no 一词,以便仅当选项不存在时才与包匹配。
flags :供 TCP 用来基于已设置的 TCP 标志进行过滤。
icmp-type :根据 ICMP 类型进行过滤。仅当 proto 选项设置为 icmp 时才使用此关键字;如果使用 flags 选项,则不使用此关键字。
keep keep-options :确定为包保留的信息。可用的 keep-options 包括 state 选项和 frags 选项。state 选项会保留有关会话的信息,并可以保留在 TCP、UDP 和 ICMP 包中。frags 选项可保留有关包片段的信息,并将该信息应用于后续片段。keep-options 允许匹配包通过,而不会查询访问控制列表。
head number :为过滤规则创建一个新组,该组由数字 number 表示。
group number :将规则添加到编号为 number 的组而不是缺省组。如果未指定其他组,则将所有过滤规则放置在组 0 中。