简介

ACL:Acess Control List,即访问控制列表。这张表中包含了匹配关系、条件和查询语句,ACL表只是一个框架结构,其目的是为了对某种访问进行控制,使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。

访问控制列表ACL增加了在路由器接口上过滤数据包出入的灵活性,可以用来限制网络流量,也可以控制用户和设备对网络的使用,一般的路由器都提供了ACL功能,对于一些网络流量不是很大的场合,完全可以借助ACL使路由器实现防火墙的部分功能,但他不能完全的代替防火墙。当接收一个数据包时,ACL先检查访问控制列表,再执行相应的接受和拒绝的步骤,并不能像专业的防火强那样作相应的数据包的分析。如果让ACL代替防火墙,会让路由器无法工作,ACL只是初级防范。

局限性:过滤的依据仅仅只是第三层和第四层包头中的部分信息,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要和系统级及应用级的访问权限控制结合使用。

通过acl过滤ospf报文 acl匹配过滤路由_通过acl过滤ospf报文

访问控制列表在接口应用的方向

  • 出:已经过路由器的处理,正离开路由器接口的数据包
  • 入:已到达路由器接口的数据包,将被路由器处理

ACL的实例运用,使某重要的部门只能经理办公室访问,普通部门的上网时间管理,禁止ping等等。

工作过程

设备自己产生的流量不会产生ACL

1.无论路由器上有没有ACL,接到数据包后,当数据进入某个入站口时,路由器首先对其进行检查,看其是否可路由,如果不可路由那么就丢弃,否则通过查路由选择表发现该路由的详细信息及对应的出接口。

2.假设可路由,则找出要将其送出站的接口,此时路由器检查该出站口有没有被编入ACL,没有,则直接从该口送出。如果有ACL,路由器将依照从上到下的顺序依次将该数据和ACL进行匹配,逐条执行,如果与其中某条ACL匹配,根据该ACL指定操作对数据进行相应处理(允许或拒绝),并停止继续查询;如果查到ACL的末尾也未找到匹配,华为默认允许通过数据包,思科默认拒绝通过。

通过acl过滤ospf报文 acl匹配过滤路由_时间段_02


3.ACL有两种类型:入站ACL和出站ACL。上面的工作过程的解释是针对出站ACL,它是在数据包进入路由器并进行了路由选择找到了出接口后进行的匹配操作;而入站ACL是指当数据刚进入路由器接口时进行的匹配操作,减少了查表过程,但并不能说入站表省略了路由过程就认为它较之出站表更好,要依照实际情况。

访问控制列表的类型
  • 标准(基本)访问控制列表

    基于源IP地址过滤数据包
    标准访问控制列表的访问控制列表号是(思科:1~99,华为:2000~2999)
  • 扩展(高级)访问控制列表

    基于源IP地址、目的IP地址、指定协议、端口和标志来过滤数据包
    扩展访问控制列表的访问控制列表号是(思科:100~199,华为:3000~3999)
  • 命名访问控制列表

    命名访问控制列表允许在标准和扩展访问控制列表中使用名称代替表号
标准访问控制列表的配置命令

匹配规则:
在实施ACL的过程中,应当遵循如下三个基本原则:
1. 最小特权原则:只给受控对象完成任务所必须的最小的权限。
2. 最靠近受控对象原则:所有的网络层访问权限控制。
3. 默认丢弃原则:在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ,也就是丢弃所有不符合条件的数据包,而HUAWEI路由交换设备中默认是允许。这一点要特别注意,虽然我们可以修改这个默认,但未改前一定要引起重视。

同一个ACL中的多个规则,按照创建ACL时指定的匹配类型不同,有两种情况:
auto:即自动匹配,又称为“最小匹配”或“深度匹配”。根据匹配范围最小的规则实施动作。例如规则1是“允许来自192.168.1.0/24网段的IP地址的报文”,规则2是“禁止来自IP地址192.168.1.100的报文”,则来自192.168.1.100的报文最终的动作将是禁止。因为规则2限定的IP地址范围更小更精确。
config:即按规则号进行匹配,是缺省匹配方式。规则号越小的规则越先匹配,一旦匹配成功就不再匹配剩下的规则。
设定步长是为了系统在自动分配规则号时按照步长递增,为两个规则之间预留一定的规则号范围,使管理员后续可以在两条规则之间插入一条新规则。
默认匹配模式(match-order)为config,默认步长为5。在步长大于1的情况下,采用config匹配模式,管理员可方便在其中插入规则项(rule)。

操作步骤
1. 执行命令system-view,进入系统视图。
2. 执行命令acl [ number ] acl-number [ match-order { auto | config } ],使用编号创建一个数字型的基本ACL,并进入基本ACL视图;或者执行命令acl name acl-name { basic | acl-number } [ match-order { auto | config } ],使用名称创建一个命名型的基本ACL,进入基本ACL视图。
3. 执行命令rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | fragment | logging | time-range time-name ]建立规则.
4. Any表示任意网段,表示主机用0:例如192.168.10.1 0
5. 应用于接口:进入接口视图应用ACL
traffic-filter

示例:

sys
acl 2000
rule permit ip source any destination 20.0.0.1 0
rule deny ip source any destination any
q
traffic-filter inbound acl 2000

取消命令:
删除ACL
undo acl 2000
删除ACL语句
acl 2000
undo rule 5
undo rule permit source 192.168.10.0 0.0.0.255
取消接口上应用的ACL
undo traffic-filter {inbound | outbound}

time-range命令
执行命令system-view,进入系统视图。
执行命令time-range time-name { start-time to end-time days | from time1 date1 [ to time2 date2 ] },创建一个时间段。
设备支持具有相同time-name的多个时间段共同描述某个时间范围,此时可以使用相同的time-name反复执行本步骤。
说明:
使用同一time-name可以配置多条不同的时间段,以达到这样的效果:各周期时间段之间以及各绝对时间段之间分别取并集之后,再取二者的交集作为最终生效的时间范围。例如,时间段“test”配置了三个生效时段:
从2010年1月1日00:00起到2010年12月31日23:59生效,这是一个绝对时间段。
在周一到周五每天8:00到18:00生效,这是一个周期时间段。
在周六、周日下午14:00到18:00生效,这是一个周期时间段。
则时间段“test”最终描述的时间范围为:2010年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。

示例:
建立一个时间段,应用于rule规则上,使只能是192.168.20.1这台主机在指定的时间里,网络数据能通过该接口

[Huawei]time-range mytime 09:00 to 12:00 working-day   
[Huawei]time-range mytime 14:00 to 17:00 working-day
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule permit source 192.168.20.1 0 time-range mytime
[Huawei-acl-basic-2000]rule deny source any
[Huawei-acl-basic-2000]quit
[Huawei]interface g0/0/2    
[Huawei-GigabitEthernet0/0/2]traffic-filter outbound acl 2000
扩展访问控制列表的配置
  1. 执行命令system-view,进入系统视图。
  2. 执行命令acl [ number ] acl-number [ match-order { auto | config } ]
  3. 使用编号创建一个数字型的高级ACL,并进入高级ACL视图;
  4. 请根据不同情况进行以下配置ACL规则。
  5. 根据IP承载的协议类型不同,在设备上配置不同的高级ACL。对于不同 协议类型,有不同的参数组合。
1.  rule [ rule-id ] { deny | permit } protocol [source { source-address source-wildcard | any | address-set address-set-name } | source-port { operator port1 [ port2 ] | port-set port-set-name } ][ destination { destination-address destination-wildcard | any | address-set address-set-name } | destination-port { operator port1 [ port2 ] | port-set port-set-name } | precedence precedence | | time-range time-name | tos tos | icmp-type icmp-type icmp-code | logging ]

高级访问控制列表端口号操作符的含义

操作符及语法

意义

equal portnumber

等于端口号 portnumber

greater-than portnumber

大于端口号portnumber

less-than portnumber

小于端口号portnumber

not-equal portnumber

不等于端口号portnumber

range portnumber1 portnumber2

介于端口号portnumber1 和portnumber2之间

示例:

[Huawei]acl 3000
[Huawei-acl-adv-3000]rule permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
[Huawei-acl-adv-3000]rule permit tcp source any destination 192.168.20.1 0 destination-port eq 80