20-ACL操作
本章节下载 (286.84 KB)
随着网络规模的扩大和流量的增加,对网络安全的控制和对带宽的分配成为网络管理的重要内容。通过对数据包进行过滤,可以有效防止非法用户对网络的访问,同时也可以控制流量,节约网络资源。ACL(Access Control List,访问控制列表)即是通过配置对报文的匹配规则和处理操作来实现包过滤的功能。
当交换机的端口接收到报文后,即根据当前端口上应用的ACL规则对报文的字段进行分析,在识别出特定的报文之后,根据预先设定的策略允许或禁止相应的数据包通过。
由ACL定义的数据包匹配规则,也可以被其它需要对流量进行区分的功能引用,如QoS中流分类规则的定义。
ACL通过一系列的匹配条件对数据包进行分类,这些条件可以是数据包的源地址、目的地址、端口号等。根据应用目的,可将ACL分为以下几种:
l
基本ACL:只根据数据包的源IP地址制定规则。
l
高级ACL:根据数据包的源IP地址、目的IP地址、IP承载的协议类型、协议特性等三、四层信息制定规则。
l
二层ACL:根据数据包的源MAC地址、目的MAC地址、VLAN优先级、二层协议类型等二层信息制定规则。
l
用户自定义ACL:以数据包的头部为基准,指定从第几个字节开始与掩码进行“与”操作,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配的报文。
一条ACL中可以包含多个规则,而每个规则都指定不同的报文范围。这样,在匹配报文时就会出现匹配顺序的问题。
ACL支持两种匹配顺序:
l
配置顺序:根据用户配置规则的先后顺序进行规则匹配。
l
自动排序:根据“深度优先”的顺序进行规则匹配。
(1)
先比较源IP地址范围,源IP地址范围小(反掩码中“0”位的数量多)的规则优先;
(2)
如果源IP地址范围相同,则比较是否带有fragment参数,带有fragment参数的规则优先;
(3)
如果源IP地址范围、是否带有fragment参数这两个判断条件也相同,则先配置的规则优先。
(1)
首先比较协议范围,指定了IP协议承载的协议类型的规则优先;
(2)
如果协议范围相同,则比较源IP地址范围,源IP地址范围小(反掩码中“0”位的数量多)的规则优先;
(3)
如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP地址范围小(反掩码中“0”位的数量多)的规则优先;
(4)
如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先;
(5)
如果协议范围、源IP地址范围、目的IP地址范围、四层端口号范围相同,则比较规则中参数的个数,参数个数多的规则优先。
如果规则A与规则B的协议范围、源IP地址范围、目的IP地址范围、四层端口号范围完全相同,并且其它的参数个数也相同,将按照加权规则进行排序。设备为每个参数设定一个固定的权值,最终的匹配顺序由各个参数的权值和参数的取值来决定。各个参数自身的权值从大到小排列为icmp-type、established、dscp、tos、precedence、fragment。比较规则如下:
l
设备以一个固定权值依次减去规则中所配置的各个参数自身的权值,所得结果小的规则优先;
l
如果各个规则中参数种类完全相同,则这些参数取值的累加和小的规则优先。
ACL可以直接下发到交换机的硬件,用于数据转发过程中的报文过滤和流分类。此时一条ACL中多个规则的匹配顺序是由交换机的硬件决定的,对于S5100系列以太网交换机,匹配顺序为先下发的规则先匹配。
ACL直接下发到硬件的情况包括:通过ACL过滤转发数据、配置QoS功能时引用ACL等。
ACL也可以用来对由软件处理的报文进行过滤和流分类。此时ACL规则的匹配顺序有两种:
l
config:按用户配置的先后顺序。
l
auto:按“深度优先”的顺序。
用户可以在定义ACL的时候指定一条ACL中多个规则的匹配顺序。用户一旦指定某一条ACL的匹配顺序,就不能再更改该顺序。只有把该ACL中所有的规则全部删除后,才能重新指定其匹配顺序。
ACL被上层软件引用的情况包括:路由策略引用ACL、对Telnet、SNMP和WEB登录用户进行控制时引用ACL等。
& 说明:
l
当ACL直接下发到硬件对报文进行过滤时,如果报文没有与ACL中的规则匹配,此时设备对此类报文采取的动作为permit,即允许报文通过。
l
当ACL被上层软件引用,对Telnet、SNMP和WEB登录用户进行控制时,如果报文没有与ACL中的规则匹配,此时设备对此类报文采取的动作为deny,即拒绝报文通过。
S5100-SI系列以太网交换机支持的ACL如下:
l
基本ACL
l
高级ACL
S5100-EI系列以太网交换机支持的ACL如下:
l
基本ACL
l
高级ACL
l
二层ACL
S5100-SI系列以太网交换机上定义的ACL只能用于被上层软件引用的情况,不支持下发到硬件中;S5100-EI系列以太网交换机上定义的ACL支持被上层软件引用和下发到硬件。
用户可以根据时间段对报文进行控制。ACL中的每条规则都可以选择一个时间段。如果规则引用的时间段未配置,则系统给出提示信息,并允许这样的规则创建成功。但是规则不能立即生效,直到用户配置了引用的时间段,并且系统时间在指定时间段范围内才能生效。
对时间段的配置有如下两种情况:
l
配置周期时间段:采用每个星期固定时间段的形式,例如从星期一至星期五的8:00至18:00。
l
配置绝对时间段:采用从某年某月某日某时某分起至某年某月某日某时某分结束的形式,例如从2000年1月28日15:00起至2004年1月28日15:00结束。
& 说明:
S5100-SI/EI系列以太网交换机支持的绝对时间段范围从1970/1/1 00:00起至2100/12/31 24:00结束。
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个时间段 |
time-range time-name { start-time to end-time days-of-the-week
[ from start-time start-date ] [ to
end-time end-date ] | from start-time start-date [ to
end-time end-date ] | to end-time end-date } |
必选 |
需要注意的是:
l
如果一个时间段只定义了周期时间段,则只有系统时钟在该周期时间段内,该时间段才进入激活状态。如果一个时间段下定义了多个周期时间段,则这些周期时间段之间是“或”的关系。
l
如果一个时间段只定义了绝对时间段,则只有系统时钟在该绝对时间段内,该时间段才进入激活状态。如果一个时间段下定义了多个绝对时间段,则这些绝对时间段之间是“或”的关系。
l
如果一个时间段同时定义了绝对时间段和周期时间段,则只有同时满足绝对时间段和周期时间段的定义时,该时间段才进入激活状态。例如,一个时间段定义了绝对时间段:从2004年1月1日0点0分到2004年12月31日23点59分,同时定义了周期时间段:每周三的12:00到14:00。该时间段只有在2004年内每周三的12:00到14:00才进入激活状态。
l
配置绝对时间段时,如果不配置开始日期,时间段就是从1970/1/1 00:00起到配置的结束日期为止。如果不配置结束日期,时间段就是从配置的开始日期起到2100/12/31 23:59为止。
# 配置周期时间段,时间范围为周一到周五每天8:00到18:00。
<H3C> system-view
[H3C] time-range test 8:00 to 18:00 working-day
[H3C] display time-range test
Current time is 13:27:32 Apr/16/2005 Saturday
Time-range : test ( Inactive
)
08:00 to 18:00 working-day
# 配置绝对时间段,时间范围为2006年1月28日15:00起至2008年1月28日15:00结束。
<H3C> system-view
[H3C] time-range test from 15:00 1/28/2006 to 15:00 1/28/2008
[H3C] display time-range test
Current time is 13:30:32 Apr/16/2005 Saturday
Time-range : test ( Inactive
)
From 15:00 Jan/28/2006 to 15:00 Jan/28/2008
基本ACL只根据源IP地址制定规则,对数据包进行相应的分析处理。
基本ACL的序号取值范围为2000~2999。
l
如果要配置带有时间段参数的规则,则需要定义相应的时间段。定义时间段的配置请参见1.2.1 配置时间段。
l
确定了规则中的源IP地址。
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建并进入基本ACL视图 |
acl number acl-number [ match-order { auto | config } ] |
必选 缺省情况下,匹配顺序为config |
定义ACL规则 |
rule [ rule-id ] { deny | permit } [ rule-string
] |
必选 rule-string的具体内容请参见命令手册 |
定义ACL的描述信息 |
description text |
可选 缺省情况下,ACL没有描述信息 |
需要注意的是:
l
当基本ACL的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当基本ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。
l
在定义一条ACL规则的时候,用户可以不指定规则的编号,设备将自动为这个规则分配一个编号:如果此ACL中没有规则,编号为0;如果此ACL中已有规则,编号为现有规则的最大编号+1。
l
新创建或修改后的规则不能和已经存在的规则相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
l
当基本ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
# 配置基本ACL 2000,禁止源IP地址为192.168.0.1的报文通过。
<H3C> system-view
[H3C] acl number 2000
[H3C-acl-basic-2000] rule deny source 192.168.0.1 0
# 显示基本ACL 2000的配置信息。
[H3C-acl-basic-2000] display acl 2000
Basic ACL 2000, 1 rule
Acl's step is 1
rule 0 deny source 192.168.0.1 0
高级ACL可以使用数据包的源IP地址、目的IP地址、IP承载的协议类型、针对协议的特性(例如TCP或UDP的源端口、目的端口,ICMP协议的消息类型、消息码等)内容定义规则。
高级ACL序号取值范围3000~3999(3998与3999是系统为集群管理预留的编号,用户无法配置)。
高级ACL支持对三种报文优先级的分析处理:ToS(Type of Service,服务类型)优先级、IP优先级和DSCP(Differentiated Services Codepoint,差分服务编码点)优先级。
用户可以利用高级ACL定义比基本ACL更准确、更丰富、更灵活的规则。
l
如果要配置带有时间段参数的规则,则需要定义相应的时间段。定义时间段的配置请参见1.2.1 配置时间段。
l
确定了规则中源IP地址、目的IP、IP承载的协议类型、针对协议的特性等参数的取值。
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建并进入高级ACL视图 |
acl number acl-number [ match-order { auto | config } ] |
必选 缺省情况下,匹配顺序为config |
定义ACL规则 |
rule [ rule-id ] { permit | deny } protocol [ rule-string ] |
必选 protocol和rule-string的具体内容请参见命令手册 |
定义ACL规则的注释信息 |
rule rule-id comment text |
可选 缺省情况下,ACL规则没有注释信息 |
定义ACL的描述信息 |
description text |
可选 缺省情况下,ACL没有描述信息 |
需要注意的是:
l
当高级ACL的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当高级ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。
l
在定义一条ACL规则的时候,用户可以不指定规则的编号,设备将自动为这个规则分配一个编号:如果此ACL中没有规则,编号为0;如果此ACL中已有规则,编号为现有规则的最大编号+1。
l
新创建或修改后的规则不能和已经存在的规则相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
l
当高级ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
# 配置高级ACL 3000,允许从129.9.0.0/16网段的主机向202.38.160.0/24网段的主机发送的端口号为80的TCP报文通过。
<H3C> system-view
[H3C] acl number 3000
[H3C-acl-adv-3000] rule permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq 80
# 显示高级ACL 3000的配置信息。
[H3C-acl-adv-3000] display acl 3000
Advanced ACL 3000, 1 rule
Acl's step is 1
rule 0 permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq www
二层ACL根据源MAC地址、目的MAC地址、VLAN优先级、二层协议类型等二层信息制定规则,对数据进行相应处理。
二层ACL的序号取值范围为4000~4999。
l
如果要配置带有时间段参数的规则,则需要定义相应的时间段。定义时间段的配置请参见1.2.1 配置时间段。
l
确定了规则中源MAC地址、目的MAC地址、VLAN优先级、二层协议类型等参数的取值。
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建并进入二层ACL视图 |
acl number acl-number |
必选 |
定义ACL规则 |
rule [ rule-id ] { permit | deny } [ rule-string ] |
必选 rule-string的具体内容请参见命令手册 |
定义ACL规则的注释信息 |
rule rule-id comment text |
可选 缺省情况下,ACL规则没有注释信息 |
定义ACL的描述信息 |
description text |
可选 缺省情况下,ACL没有描述信息 |
需要注意的是:
l
用户可以修改二层ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态。
l
在定义一条ACL规则的时候,用户可以不指定规则的编号,设备将自动为这个规则分配一个编号:如果此ACL中没有规则,编号为0;如果此ACL中已有规则,编号为现有规则的最大编号+1。
l
新创建或修改后的规则不能和已经存在的规则相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
# 配置二层ACL 4000,禁止从MAC地址000d-88f5-97ed发送到MAC地址011-4301-991e且802.1p优先级为3的报文通过。
<H3C> system-view
[H3C] acl number 4000
[H3C-acl-ethernetframe-4000] rule deny cos 3 source 000d-88f5-97ed ffff-ffff-ffff dest 0011-4301-991e ffff-ffff-ffff
# 显示二层ACL 4000的配置信息。
[H3C-acl-ethernetframe-4000] display acl 4000
Ethernet frame ACL 4000, 1 rule
Acl's step is 1
rule 0 deny cos excellent-effort source 000d-88f5-97ed ffff-ffff-ffff dest 0011-4301-991e ffff-ffff-ffff
S5100-EI系列以太网交换机支持将ACL下发到硬件,对报文进行包过滤。下发方式如下:
l
全局下发ACL:对所有端口接收的报文应用ACL规则进行包过滤。
l
VLAN下发ACL:对所有端口接收的属于指定VLAN的报文应用ACL规则进行包过滤。
l
端口组下发ACL:对端口组内所有端口接收的报文应用ACL规则进行包过滤。关于端口组的配置请参见“端口基本配置”部分的介绍。
l
端口下发ACL:对端口接收的报文应用ACL规则进行包过滤。
用户可以根据不同的需要灵活方便地下发ACL。
注意:
l 当报文同时匹配了全局下发和VLAN下发的ACL中的规则时,如果动作冲突,全局下发的ACL的优先级高于VLAN下发的ACL的优先级,设备会执行全局下发的ACL中定义的动作。
l 当报文同时匹配了全局(或VLAN)下发和端口(或端口组)下发的ACL中的规则时,如果动作冲突,设备会执行deny动作。
l 在全局或VLAN下发ACL时,用户定义的规则的优先级高于设备默认的处理协议报文规则的优先级,设备会执行用户定义的规则中的动作,因此可能会影响用户通过Telnet等方式对设备进行管理。
下发ACL之前需要首先定义ACL。定义ACL的配置请参见1.2.2 定义基本ACL,1.2.3
定义高级ACL,1.2.4
定义二层ACL。
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局下发ACL |
packet-filter inbound acl-rule |
必选 acl-rule的具体内容请参见命令手册 |
# 在全局下发ACL,对所有端口接收的报文应用基本ACL 2000进行包过滤。
<H3C> system-view
[H3C] packet-filter inbound ip-group 2000
下发ACL之前需要首先定义ACL。定义ACL的配置请参见1.2.2 定义基本ACL,1.2.3 定义高级ACL,1.2.4 定义二层ACL。
表1-6 VLAN下发ACL
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
VLAN下发ACL |
packet-filter vlan vlan-id inbound acl-rule |
必选 acl-rule的具体内容请参见命令手册 |
# 在VLAN 10下发ACL,对所有端口接收的属于VLAN 10的报文应用基本ACL 2000进行包过滤。
<H3C> system-view
[H3C] packet-filter vlan 10 inbound ip-group 2000
下发ACL之前需要首先定义ACL。定义ACL的配置请参见1.2.2 定义基本ACL,1.2.3 定义高级ACL,1.2.4 定义二层ACL。
表1-7 端口组下发ACL
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入端口组视图 |
port-group group-id |
- |
端口组下发ACL |
packet-filter inbound acl-rule |
必选 acl-rule的具体内容请参见命令手册 |
& 说明:
在端口组下发ACL后,如果将某一端口加入此端口组,系统会将端口组下发的ACL自动下发到端口上。
# 在端口组1下发ACL,对端口组内所有端口接收的报文应用基本ACL 2000进行包过滤。
<H3C> system-view
[H3C] port-group 1
[H3C-port-group-1] packet-filter inbound ip-group 2000
下发ACL之前需要首先定义ACL。定义ACL的配置请参见1.2.2 定义基本ACL,1.2.3 定义高级ACL,1.2.4 定义二层ACL。
表1-8 端口下发ACL
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
端口下发ACL |
packet-filter inbound acl-rule |
必选 acl-rule的具体内容请参见命令手册 |
& 说明:
如果某个端口属于端口组,则不能在该端口下发ACL。
# 在端口GigabitEthernet
1/0/1下发ACL,对端口接收的报文应用基本ACL 2000进行包过滤。
<H3C> system-view
[H3C] interface GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1] packet-filter inbound ip-group 2000
完成上述配置后,在任意视图下执行display命令,可以显示配置ACL后的运行情况。通过查看显示信息,用户可以验证配置的效果。
表1-9 ACL的显示
操作 |
命令 |
说明 |
显示配置的ACL规则 |
display acl { all | acl-number } |
display命令可以在任意视图下执行 |
显示时间段 |
display time-range { all | time-name } |
|
显示包过滤的应用信息 |
display packet-filter { global | interface interface-type interface-number | port-group [
group-id ] | unitid unit-id | vlan
[ vlan-id ] } |
|
显示ACL剩余表项资源 |
display acl remaining entry |
通过源IP地址对Telnet登录用户进行控制,仅允许IP地址为10.110.100.52的Telnet用户登录到交换机。
图1-1 通过源IP对Telnet登录用户进行控制组网图
# 定义基本ACL 2000。
<H3C> system-view
[H3C] acl number 2000 match-order config
[H3C-acl-basic-2000] rule 1 permit source 10.110.100.52 0
[H3C-acl-basic-2000] quit
# 在VTY用户界面引用基本ACL 2000,对Telnet登录用户进行控制。
[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] acl 2000 inbound
通过源IP地址对WEB登录用户进行控制,仅允许IP地址为10.110.100.46的WEB用户通过HTTP方式访问交换机。
图1-2 通过源IP对WEB登录用户进行控制组网图
# 定义基本ACL 2001。
<H3C> system-view
[H3C] acl number 2001 match-order config
[H3C-acl-basic-2001] rule 1 permit source 10.110.100.46 0
[H3C-acl-basic-2001] quit
# 配置WEB服务器引用基本ACL 2001,对WEB登录用户进行控制。
[H3C] ip http acl 2001
PC 1和PC 2通过端口GigabitEthernet1/0/1接入交换机,PC 1的IP地址为10.1.1.1。要求配置基本ACL,实现在每天8:00~18:00的时间段内对PC 1发出的IP报文进行过滤。
图1-3 基本ACL配置组网图
# 定义周期时间段test,时间范围为每天的8:00~18:00。
<H3C> system-view
[H3C] time-range test 8:00 to 18:00 daily
# 定义基本ACL 2000,配置源IP地址为10.1.1.1的访问规则。
[H3C] acl number 2000
[H3C-acl-basic-2000] rule 1 deny source 10.1.1.1 0 time-range test
[H3C-acl-basic-2000] quit
# 在端口GigabitEthernet1/0/1上应用ACL 2000。
[H3C] interface GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1] packet-filter inbound ip-group 2000
公司企业网通过Switch的端口实现各部门之间的互连。研发部门由端口GigabitEthernet1/0/1接入交换机,工资查询服务器的地址为192.168.1.2。要求配置高级ACL,禁止研发部门在工作日8:00~18:00的时间段内访问工资查询服务器。
图1-4 高级ACL配置组网图
# 定义周期时间段test,时间范围为工作日的8:00~18:00。
<H3C> system-view
[H3C] time-range test 8:00 to 18:00 working-day
# 定义高级ACL 3000,配置目的IP地址为工资服务器的访问规则。
[H3C] acl number 3000
[H3C-acl-adv-3000] rule 1 deny ip destination 192.168.1.2 0 time-range test
[H3C-acl-adv-3000] quit
# 在端口GigabitEthernet1/0/1上应用ACL 3000。
[H3C] interface GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1] packet-filter inbound ip-group 3000
PC 1和PC 2通过端口GigabitEthernet1/0/1接入交换机,PC 1的MAC地址为000f-e20f-0101。要求配置二层ACL,在每天8:00~18:00的时间段内,对PC 1发出的目的MAC为000f-e20f-0303的报文进行过滤。
图1-5 二层ACL配置组网图
# 定义周期时间段test,时间范围为每天的8:00~18:00。
<H3C> system-view
[H3C] time-range test 8:00 to 18:00 daily
# 定义二层ACL 4000,配置源MAC为000f-e20f-0101,目的MAC为000f-e20f-0303的访问规则。
[H3C] acl number 4000
[H3C-acl-ethernetframe-4000] rule 1 deny source 000f-e20f-0101 ffff-ffff-ffff dest 000f-e20f-0303 ffff-ffff-ffff time-range test
[H3C-acl-ethernetframe-4000] quit
# 在端口GigabitEthernet 1/0/1上应用ACL 4000。
[H3C] interface GigabitEthernet1/0/1
[H3C-GigabitEthernet1/0/1] packet-filter inbound link-group 4000
PC 1、PC 2和PC 3属于VLAN 10,分别通过端口GigabitEthernet
1/0/1、GigabitEthernet 1/0/2和GigabitEthernet 1/0/3接入交换机,数据库服务器的IP地址为192.168.1.2。要求配置高级ACL 3000,禁止VLAN 10内的PC在工作日8:00~18:00的时间段内访问数据库服务器。
图1-6 在VLAN上应用ACL配置组网图
# 定义周期时间段test,时间范围为工作日的8:00~18:00。
<H3C> system-view
[H3C] time-range test 8:00 to 18:00 working-day
# 定义高级ACL 3000,配置目的IP地址为数据库服务器的访问规则。
[H3C] acl number 3000
[H3C-acl-adv-3000] rule 1 deny ip destination 192.168.1.2 0 time-range test
[H3C-acl-adv-3000] quit
# 在VLAN 10上应用ACL 3000。
[H3C] packet-filter vlan 10 inbound ip-group 3000
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!