1、网络互联技术与实训,第十一章 访问控制列表,了解MAC地址访问控制列表,3,重点掌握防火墙的启动配置,4,1,理解访问控制列表的基本原理,重点掌握基本和高级访问控制列表配置,5,概念: ACL(Access Control List)技术是一种基于包过滤的流控制技术,它在路由器,三层交换机中被广泛采用。访问控制列表对数据包的源地址、目的地址、端口号及协议号等进行检查,并根据数据包是否匹配访问控制列表规定的条件来决定是否允许数据包通过。,访问控制列表概述,H3C设备上访问控制列表按数字标识分为五种:接口ACL:数字标识范围1000至1999,是基于接口的访问控制列表;基本ACL:数字标识范围20
2、00至2999,只根据源IP地址进行过滤;高级ACL:数字标识范围3000至3999,根据数据包的源和目的IP地址及端口,IP承载的协议类型,协议特性等三、四层信息进行过滤;,H3C设备上访问控制列表按数字标识分类(con.1),H3C设备上访问控制列表按数字标识分为五种:二层ACL:数字标识范围4000至4999,根据源和目的MAC地址,VLAN优先级,二层协议类型等二层信息进行过滤;用户自定义ACL:数字标识范围5000至5999,以数据包的头部为基准,指定从第几个字节开始进行“与”,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配报文来达到过滤的目的。,H3C设备上访问控制列
3、表按数字标识分类,首先要启用防火墙;接着创建一个ACL(为acl指定一个number);然后定义规则(即定义根据什么规则来过滤哪种数据包);最后声明ACL规则应用场所(指明在哪些端口上应用,在端口的哪个方向上进行应用),ACL的配置主要包含四个步骤,1.启用防火墙(系统视图下) SYS firewall enable /打开防火墙 SYS firewall default permit /缺省过滤模式为允许通过2.创建一个访问控制列表并进入ACL视图(系统视图下) SYS acl number 2100 /创建基本ACL3.增加一条访问控制列表的规则 (ACL配置视图下) SYS-acl-21
4、00 rule 1 permit source 210.1.1.1 0.0.0.255 SYS-acl-2100 rule 2 deny source any4.在指定场所应用ACL规则(接口视图下) SYS-Ethernet0/0 firewall packet-filter 2100 inbound /在Ethernet0/0流入方向上应用acl 2100,ACL的配置主要包含四个步骤示例,注意:一个acl number可以包含很多条rule(规则);配置时可省略规则号,系统会自行按顺序进行编号。 一个acl还可以同时在其他接口上应用,并不只限定于某一个接口。,1.启用防火墙(系统视图下)
5、SYS firewall enable | disable /打开或关闭防火墙 enable:允许防火墙过滤。disable:禁止防火墙过滤 SYS firewall default permit | deny /设置防火墙缺省过滤方式。 permit:防火墙缺省值过滤模式为允许规则匹配的数据包通过。 deny:防火墙缺省值过滤模式为禁止规则匹配的数据包通过。,启用防火墙,注意:读者在学习ACL配置指令时会觉得参数较多。其实学习ACL很简单,因为根本不必记住每个参数,掌握基本的几个配置就可以了,更具体的参数大家可以在配置时用指令查看。常用的ACL主要是基本的和高级的ACL。,注意:以下使用的是
6、H3C AR28路由器中的ACL指令,MSR路由器指令略有不同,部分不同体现在“rule”指令所带参数的顺序上。大家可以参看指令手册。,注意:H3C默认防火墙缺省过滤方式是允许的;华为的防火墙缺省过滤模式为允许所有数据包通过,而思科的防火墙缺省过滤模式为禁止通过的。,2.定义/删除一个ACL(系统视图下)SYSacl number acl-number match-order config | auto SYSundo acl number acl-number | all ,定义一个ACL,acl-number:访问控制列表的序号,值可以从10005999。match-order:指定规则的
7、匹配顺序。config:匹配规则时按规则(rule)的序号顺序进行。match-order缺省值为config。auto:匹配规则时系统自动排序(按“深度优先”的顺序),精确度相同时按用户的配置顺序进行匹配。,深度优先顺序的判断原则如下:先比较acl规则(rule)的协议范围。IP协议的范围为1255,承载在IP上的其他协议范围就是自己的协议号;协议范围小的优先;再比较源IP地址范围。源IP地址范围小(掩码长)的优先;然后比较目的IP地址范围。目的IP地址范围小(掩码长)的优先;最后比较四层端口号(TCP/UDP端口号)范围。四层端口号范围小的优先。,2.1 定义/删除基于接口的访问控制列表的
8、规则(acl-number 1000至1999)(ACL视图下)SYS-acl-aclnumber rule rule-id permit | deny| comment text interface interface-type interface-number | any time-range time-name logging SYS-acl-aclnumberundo rule rule-id comment text logging | time-range ,定义ACL规则(基于接口),参数说明如下:rule-id:可选参数,ACL的规则编号,范围为065534。deny:表示拒绝
9、符合条件的数据包通过。permit:表示允许符合条件的数据包通过。interface interface-type interface-number:指定数据包的接口信息,但不能是二层以太网端口信息。如果不指定,表示所有的接口都匹配。any代表所有的接口。time-range time-name:配置这条访问控制规则生效的时间段。logging:可选参数,是否对符合条件的数据包做日志。,注意:当指定了编号,如果与编号对应的规则已经存在,则会部分覆盖旧的规则,相当于重新编辑一个已经存在的规则。故建议用户在编辑一个已存在编号的规则前,先进行查看后将旧的规则删除,再创建新的规则,否则配置结果可能与预
10、期的效果不同。如果不指定编号,表示增加一个新规则,系统自动会为这个规则分配一个编号。,2.2 定义/删除基本访问控制列表的规则(acl-number 2000至2999) (ACL视图下)SYS-acl-aclnumber rule rule-id permit | deny| comment text source sour-addr sour-wildcard | any time-range time-name logging fragment vpn-instance vpn-instance-name SYS-acl-aclnumber undo rule rule-id comme
11、nt text source time-range logging fragment vpn-instance vpn-instance-name ,定义ACL规则(基本访问控制列表),参数说明如下:source:可选参数,指定ACL规则的源地址信息。如果不配置,表示报文的任何源地址都匹配。sour-addr:数据包的源地址;sour-wildcard:源地址的反子网掩码;或用“any” 。fragment:指定该规则是否仅对非首片分片报文有效。vpn-instance:可选参数,指定报文是属于哪个VPN实例的。vpn-instance-name:指定具体的VPN实例的名字。,源地址是否与AC
12、L规则匹配原则: 将数据包的源地址与ACL中sour-wildcard导出的子网掩码进行“与”操作,“与”的结果如果和ACL中的sour-addr和子网掩码进行“与”操作后得出的结果一致,那么该数据包与ACL规则匹配;反之不匹配。高级访问控制列表的目的地址匹配原则与这里的源地址匹配原则一致。,2.3 定义/删除高级访问控制列表的规则(acl-number 3000至3999) (ACL视图下)SYS-acl-aclnumber rule rule-id permit | deny | comment text protocol source sour-addr sour-wildcard |
13、any destination dest-addr wildcard | any source-port operator port1 port2 destination-port operator port1 port2 icmp-type icmp-message |icmp-type icmp-code precedence precedence tos tos time-range time-name logging fragment vpn-instance vpn-instance-name,定义ACL规则(高级访问控制列表),参数说明如下一:protocol:用协议名字或数字(协
14、议号)表示的IP承载的协议类型。数字范围为1255;用名字表示时,可以选取:gre、icmp、igmp、ip、ipinip、ospf、tcp、udp等。source-port:可选参数,指定UDP或者TCP报文的源端口信息,仅仅在规则指定的协议号是TCP或者UDP有效。如果不指定,表示TCP/UDP报文的任何源端口信息都匹配。destination:可选参数,指定ACL规则的目的地址信息。如果不配置,表示报文的任何目的地址都匹配。,参数说明如下二:destination:可选参数,指定ACL规则的目的地址信息。如果不配置,表示报文的任何目的地址都匹配。dest-addr:数据包的目的地址des
15、t-wildcard:目的地址的反子网掩码,点分十进制表示;或用“any”代表源地址0.0.0.0,反子网掩码255.255.255.255表示任何目的地址。高级访问控制列表的目的地址匹配原则与基本ACL中的源地址匹配原则一致。,参数说明如下三:destination-port:可选参数,指定UDP或者TCP报文的目的端口信息,仅仅在规则指定的协议号是TCP或者UDP时有效。如果不指定,表示TCP/UDP报文的任何目的端口信息都匹配。operator:可选参数。比较源或者目的地址的端口号的操作符。port1、port2:可选参数。TCP或UDP的端口号,用名字或数字表示,参数说明如下四:icm
16、p-type:可选参数,指定ICMP报文的类型和消息码信息,仅仅在报文协议是ICMP的情况下有效。如果不配置,表示任何ICMP类型的报文都匹配。icmp-message:ICMP包可以依据ICMP消息类型名字或ICMP消息类型和码的名字进行过滤。icmp-type:ICMP包可以依据ICMP的消息类型进行过滤。取值为0255的数字。icmp-code:依据ICMP的消息类型进行过滤的ICMP包也可以依据消息码进行过滤。取值为0255的数字。,参数说明如下五:precedence precedence:可选参数,数据包可以依据优先级字段进行过滤。取值为07的数字,或名字,与参数tos互斥。tos
17、 tos:可选参数,数据包可以依据服务类型字段进行过滤。取值为015的数字,或名字,与参数precedence互斥。,注意:source-port和destination-port参数仅仅在规则(rule)指定的协议号是TCP或者UDP时有效。port1、port2:可选参数。TCP或UDP的端口号,除了数字还可以用名字表示。,2.4 定义/删除二层访问控制列表的规则(acl-number 4000至4999) (ACL视图下)SYS-acl-aclnumber rule rule-id deny | permit | comment text type type-code type-mask
18、 | lsap lsap-code lsap-mask source-mac sour-addr sour-mask dest-mac dest-addr dest-mask time-range time-name SYS-acl-aclnumber undo rule rule-id comment text,定义ACL规则(二层访问控制列表),参数说明如下一:type-code:数据帧的类型,一个16比特的十六进制数,对应Ethernet_II类型和Ethernet_SNAP类型帧中的type-code域。type-mask:类型掩码,是一个16比特的十六进制数,用于指定屏蔽位。lsap
19、-code:数据帧的封装格式的值,是一个16比特的十六进制数。lsap-mask:lsap值的掩码,是一个16比特的十六进制数,用于指定屏蔽位。,注意:acl-number值(二层的、基本的、高级的、基于接口的)的选取主要依赖于我们要实现的控制目标。譬如要控制端口最好使用acl-number从3000至3999的高级ACL。,参数说明如下二:sour-addr:源MAC地址,用两个“-”分隔的十六进制表示,格式为xxxx-xxxx-xxxx,用来匹配一个分组的目的地址。如:0011-4f01-a19e。sour-mask:源MAC地址的掩码, 用两个“-”分隔的十六进制表示。如:ffff-ff
20、ff-ffff-ffff。dest-addr:目的MAC地址,用两个“-”十六进制表示,格式为xxxx-xxxx-xxxx,用来匹配一个分组的目的地址。dest-mask:目的MAC地址的掩码,用两个“-”分隔的十六进制表示。,配置时间段(系统视图下)ACL规则定义指令里有一个可选参数“ time-range time-name ”,这个参数使用前需要定义一个规则工作的时间段。 SYS time-range time-name start-time to end-time days-of-the-week from start-time start-date to end-time end-d
21、ate | from start-time start-date to end-time end-date | to end-time end-date ,配置时间段,参数说明如下一:time-name:时间段的名字。start-time:一个时间范围的开始时间,格式为hh:mm,小时和分钟之间使用“:”分隔,hh的范围为023,mm的范围为059。end-time:一个时间范围的结束时间,格式为hh:mm,小时和分钟之间使用“:”分隔,hh的范围为023,mm的范围为059。,参数说明如下二:days-of-the-week:表示配置的时间范围在每周几有效,数字(0-6)、星期日到星期六、工
22、作日(Working-day)、休息日(Off-day、所有日子(Daily) from start-time start-date:为可选项,表示从某一天某一时间开始。 to end-time end-date:为可选项,表示到某一天某一时间结束。,注意:如果一个时间段(已定义的time-name)同时定义了绝对时间段和周期时间段,则只有它们同时被满足时,这个时间段才进入激活状态。如果一个时间段内定义了多个绝对时间段,则这些绝对时间段之间是“或”的关系,即在多个绝对时间段内都处于激活状态;如果一个时间段内定义了多个周期段,那么在这几个周期段内都处于激活状态。,例如:SYS time-rang
23、e test 16:30 to 18:00 daily from 01:00 01/01/2009 to 23:00 12/01/2009SYS time-range test 19:00 to 21:30 daily from 23:00 01/01/2009 to 23:00 12/01/2009 以上指令说明2009年1月1号到12月1号的每天16:30 至18:00和19:00 至 21:30点时间段test激活。,在指定场所应用/删除ACL规则(接口视图下)SYS-interface firewall packet-filter acl-number inbound | outbou
24、nd SYS-interface undo firewall packet-filter acl-number inbound | outbound 参数说明如下: inbound:在接口的流入方向上应用ACL。 outbound:在接口的流出方向上应用ACL。,在指定场所应用ACL规则,指令结总,指令结总(con.1),指令结总(con.2),指令结总(con.3),指令结总(con.4),基本访问控制列表配置示例,要求:定义一个ACL,要求在以太网接口Ethernet0/0流入方向上只允许210.1.1.0这个网段发送的数据包通过,而其他所有网段的数据包被禁止通过,并且在2009年1月1号
25、到12月1号的每天16:30 至18:00和19:00 至 21:30点时间段激活。,SYSfirewall enable /打开防火墙SYSfirewall default permit /缺省过滤模式为允许通过SYS time-range test 16:30 to 18:00 daily from 01:00 01/01/2009 to 23:00 12/01/2009 /定义ACL激活的时间段SYS time-range test 19:00 to 21:30 daily from 01:00 01/01/2009 to 23:00 12/01/2009 /定义ACL激活的时间段SYS
26、acl number 2100 / 创建一个基本访问控制列表SYS-acl-2100rule 1 permit source 210.1.1.1 0.0.0.255 time-range test /定义规则1 SYS-acl-2100rule 2 deny source any time-range test /定义规则2SYS-acl-2100interface ethernet0/0SYS-Ethernet0/0firewall packet-filter 2100 inbound /端口上应用,高级访问控制列表配置示例,请定义一个ACL,要求在串口Serial0/0的流出方向上应用,且
27、这个ACL要满足以下五个要求。其详细配置指令及要求如下:SYSfirewall enable /打开防火墙SYSfirewall default permit /缺省过滤模式为允许通过SYSacl number 3100 / 创建一个高级访问控制列表禁止接收和发送RIP报文。 SYS-acl-3100rule 1 deny udp destination-port eq rip,高级访问控制列表配置示例(con.1),2. 允许129.9.0.0/16网段的主机向202.38.160.0/24网段的主机发送WWW报文。 SYS-acl-3100rule 2 permit tcp source
28、129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq www3. 禁止从一切主机建立与IP地址为202.38.160.1的主机的Telnet(23)的连接,并对违反此规则的事件作日志。 SYS-acl-3100rule 3 deny tcp destination 202.38.160.1 0 destination-port eq 23 logging,高级访问控制列表配置示例(con.2),4. 禁止从129.9.8.0/24网段内的主机建立与202.38.160.0/24网段内的主机的端口
29、号大于128的UDP(用户数据报协议)连接。 SYS-acl-3100rule deny udp source 129.9.8.0 0.0.0.255 destination 202.38.160.0 0.0.0.255 destination-port gt 1285. 禁止VPN vrf1中的源地址为1.1.1.1的报文通过。 SYS-acl-3100rule deny ip source 1.1.1.1 0 vpn-instance vrf1 SYS-acl-3100interface ethernet0/0 /进入接口视图 SYS-Ethernet0/0firewall packet-
30、filter 3100 inbound /接口上应用,显示配置的访问控制列表的规则 (任意视图) display acl all | acl-number 清除访问控制列表的统计信息(用户视图) reset acl counter all | acl-number 显示时间段的配置和状态(任意视图)display time-range all | time-name ,其它常用指令,接口流入方向访问控制列表(inbound):将到来的分组路由到出站接口之前对其进行处理。接口流出方向访问控制列表(outbound):到来的分组首先被路由到出站接口,并在将其传输出去之前根据接口流出方向的访问控制列
31、表对其进行处理。 当访问控制列表默认过滤方式为deny时,应至少包含一条permit语句,否则将禁止任何数据流通过;当访问控制列表默认过滤方式为permit时,应至少包含一条deny语句,否则将允许任何数据流通过。同一个访问控制列表被用于多个接口。但是在每个接口的每个方向上,针对每种协议的访问控制列表只能有一个。 同一个接口上可以有多个访问控制列表,但必须是针对不同协议的。,ACL访问控制列表配置总结,将具体的条件放在一般性条件的前面;将常发生的条件放在不常发生的条件前面。 创建访问控制列表后再将其应用于接口,如果应用于接口的访问控制列表未定义或不存在,该接口将允许所有数据流通过。 访问控制列
32、表只过滤经由当前路由器的数据流,而不能过滤当前路由器发送的数据流。 应将扩展访问控制列表放在离禁止通过的数据流源尽可能近的地方。 基本访问控制列表无指定目标地址,应将其放在离目的地尽可能近的地方。,ACL访问控制列表配置总结(con.1),请大家思考一下ACL的rule中什么情况使用permit会使规则的定义变得简单呢;什么时候应该使用deny?而防火墙缺省包处理方式什么时候用permit,什么情况使用deny?rule的match-order什么情况使用config,什么时候使用auto?它们的区别在哪里?ACL应用在什么位置对减少网络中的数据流量?ACL可以控制OSPF报文吗?一个接口是否可以应用多个ACL,并且让每个ACL都生效?ACL的几个序号范围含义有什么不同?基本ACL与高级ACL的功能有何不同,他们的分别在什么场景下使用?高级ACL一定具备基本ACL的功能吗?,习题与思考,Thank You !,http:/