ACL简介

定义

访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。

ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。

目的

随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。

  • 企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。
  • Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。
  • 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。

以上种种问题,都对正常的网络通信造成了很大的影响。因此,提高网络安全性服务质量迫在眉睫。ACL就在这种情况下应运而生了。

ACL工作原理

ACL使用包过滤技术,在路由器上读取OSI七层模型的第3层和第4层包头中的信息。如源地址,目标地址,源端口,目标端口等,根据预先定义好的规则,对包进行过滤,从而达到访问控制的目的。

ACL特性

ACl是一组规则的集合,它应用在路由器的某个接口上。对路由器接口而言,访问控制列表有两个方向。

出:已经过路由器的处理,正离开路由器的数据包。

入:已到达路由器接口的数据包。将被路由器处理。

配置ACL的基本规则

  • 在实施ACL的过程中,应当遵循如下两个基本原则:
  • 最小特权原则:只给受控对象完成任务所必须的最小的权限。
  • 最靠近受控对象原则:所有的网络层访问权限控制。

访问控制列表

  • 标准IP访问控制列表
  • 扩展IP访问控制列表
  • 命名访问控制列表
  • 基于时间的IP访问控制列表

标准IP访问控制列表


根据数据包的源IP地址来允许或拒绝数据包

配置方法:

全局配置模式下:

Access-list number {permit|deny} source-add source-wildcard

  • number就是访问控制列表的号,其编号取值范围为1—99或1300—1999
  • Permit就是允许数据包通过,Deny就是拒绝通过
  • Source-add就是允许或拒绝的源地址,source-wildcard就是通配符掩码。

将创建好的ACL接口应用于路由器接口上

标准ACL放置在靠近目的位置:

Router(config-if)#ip access-group access-list-number {in|out}

access-list-number:访问控制列表号,in:应用到入站接口。out:应用出站接口。

取消接口上的ACL应用可以使用如下命令:

Router(config-if)#no ip access-group access-list-number {in|out}

ACL注意事项

所有的ACL,缺省情况下,从安全角度考虑,最后都会隐含一句deny any(标准ACL)deny ip any any(扩展IP ACL),ACL对没有说明的行为(permit或deny),全部拒绝。

所以我们在写ACL的时候,特别是在写拒绝的ACL的时候,应该在最后加上一句permit any 或permit ip any any

扩展IP访问控制列表


根据数据包的源IP地址,目的IP地址,指定协议,端口和标志,来允许或拒绝数据包。扩展IP访问控制列表的功能比较强大,可以根据协议或服务进行配置,可以对网络访问实现精确控制。扩展访问控制列表的编号取值范围是100—199或2000—2699。 一般来说,扩展ACL放置在靠近源的位置。

配置方法:

ccess-list access-list-number {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]

  • ocol:用来指定协议的类型,如IP,TCP,UDP,ICMP等。
  • ce、destination:源和目的,分别用来标示源地址和目的地址。
  • e-wildcard是源反码,destination-wildcard是目标反码。
  • ator operan:lt(小于)、gt(大于)、eq(等于)、neq(不等于)一个端口号。

扩展知识

在设定好标准访问控制列表后,用ow access-list number令可以查看访问控制列表的配置情况,除ACL:o access-list number

注意:不管是标准ACL或者是扩展ACL,只要应用了该规则就不可以在向里面添加新的规则了,只能是删除整个ACL。这样很不方便我们管理ACL。

命名访问控制列表


所谓的命名控制列表就是给控制列表取个名字,而不是使用访问控制列表号。
我们通过命令访问控制列表可以很方便的管理ACL规则,可以随便添加和删除规则,而无需删除整个访问控制列表了。

配置方法:

uter(config)#ip access-list {standard|extended} access-list-name

  • dard:创建标准的命名访问控制列表。
  • nded:创建扩展的命名访问控制列表。
  • ss-list-name:命名控制列表的名字,可以是任意字母和数字的组合。

标准命名ACL

Router(config-std-nacl)#[Sequence-Number] {permit|deny} source [souce-wildcard]

扩展命名ACL语法

Router(config-ext-nacl)#[Sequence-Number] {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]

可选参数Sequence-Number。表明了配置的ACL语句在整个ACL中所处的位置,默认情况下,第一条为10,第二条为20,以此类推。

基于时间的IP访问控制列表


基于时间的IP访问控制列表是在访问控制中加入时间范围来更合理的控制网络访问。通过基于时间的访问控制列表,可以根据一天中的不同时间,或根据一个星期中的不同日期,或两者的结合,控制对数据包的转发,从而实现对网络访问的控制。

配置方法:

  • show clock查看当前时钟,clock set 修改时间
  • 定义时间范围

R1(config)#time-range time-range-name !进入时间控制模式
R1(config-time-range)absolute start begin-time end end-time
R1(config-time-range)periodic time week

  • time-range-name表示定义时间范围的名称
  • absolute用来定义时间范围,为绝对时间。只使用一次
  • periodic后面定义一个时间范围。为周期性重复使用的时间范围的定义。