搜索
您的当前位置:首页正文

ACL基础

来源:好土汽车网
什么是ACL?

访问控制列表简称为ACL,访问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源端口,目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。该技术初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL的支持了。

访问控制列表使用原则

由于ACL涉及的配置命令很灵活,功能也很强大,所以我们不能只通过一个小小的例子就完全掌握全部ACL的配置。在介绍例子前为大家将ACL设置原则罗列出来,方便各位读者更好的消化ACL知识。

1、最小特权原则

只给受控对象完成任务所必须的最小的权限。也就是说被控制的总规则是各个规则的交集,只满足部分条件的是不容许通过规则的。

2、最靠近受控对象原则

所有的网络层访问权限控制。也就是说在检查规则时是采用自上而下在ACL中一条条检测的,只要发现符合条件了就立刻转发,而不继续检测下面的ACL语句。

3、默认丢弃原则

在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ANY,也就是

丢弃所有不符合条件的数据包。这一点要特别注意,虽然我们可以修改这个默认,但未改前一定要引起重视。

由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到端到端的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。

标准访问列表:

访问控制列表ACL分很多种,不同场合应用不同种类的ACL。其中最简单的就是标准访问控制列表,标准访问控制列表是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号1到99来创建相应的ACL

标准访问控制列表的格式

访问控制列表ACL分很多种,不同场合应用不同种类的ACL。其中最简单的就是标准访问控制列表,他是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号1到99来创建相应的ACL。

标准访问控制列表是最简单的ACL。

它的具体格式如下:access-list ACL号 permit|deny host ip地址

例如:access-list 10 deny host 192.168.1.1这句命令是将所有来自192.168.1.1地址的数据包丢弃。

当然我们也可以用网段来表示,对某个网段进行过滤。命令如下:access-list 10 deny 192.168.1.0 0.0.0.255

通过上面的配置将来自192.168.1.0/24的所有计算机数据包进行过滤丢弃。为什么后头的子网掩码表示的是0.0.0.255呢?这是因为CISCO规定在ACL中用反向掩玛表示子网掩码,反向掩码为0.0.0.255的代表他的子网掩码为255.255.255.0。

小提示:对于标准访问控制列表来说,默认的命令是HOST,也就是说access-list 10 deny 192.168.1.1表示的是拒绝192.168.1.1这台主机数据包通讯,可以省去我们输入host命令。

标准访问控制列表实例一

我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供WWW服务,IP地址为172.16.4.13。

实例1:禁止172.16.4.0/24网段中除172.16.4.13这台计算机访问172.16.3.0/24的计算机。172.16.4.13可以正常访问172.16.3.0/24。

路由器配置命令

access-list 1 permit host 172.16.4.13 设置ACL,容许172.16.4.13的数据包通过。

access-list 1 deny any 设置ACL,阻止其他一切IP地址进行通讯传输。

int e 1 进入E1端口。

ip access-group 1 in 将ACL 1宣告。

经过设置后E1端口就只容许来自172.16.4.13这个IP地址的数据包传输出去了。来自其他IP地址的数据包都无法通过E1传输。

小提示:由于CISCO默认添加了DENY ANY的语句在每个ACL中,所以上面的access-list 1 deny any这句命令可以省略。另外在路由器连接网络不多的情况下也可以在E0端口使用ip access-group 1 out命令来宣告,宣告结果和上面最后两句命令效果一样。

标准访问控制列表实例二

配置任务:禁止172.16.4.13这个计算机对172.16.3.0/24网段的访问,而172.16.4.0/24中的其他计算机可以正常访问。

路由器配置命令:

access-list 1 deny host 172.16.4.13 设置ACL,禁止172.16.4.13的数据包通过

access-list 1 permit any 设置ACL,容许其他地址的计算机进行通讯

int e 1 进入E1端口

ip access-group 1 in 将ACL1宣告,同理可以进入E0端口后使用ip access-group 1 out来完成宣告。

配置完毕后除了172.16.4.13其他IP地址都可以通过路由器正常通讯,传输数据包。

总结:标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。如果要更加复杂的控制数据包的传输就需要使用扩展访问控制列表了,他可以满足我们到端口级的要求。

扩展访问控制列表:

上面我们提到的标准访问控制列表是基于IP地址进行过滤的,是最简单的ACL。那么如果我们希望将过滤细到端口怎么办呢?或者希望对数据包的目的地址进行过滤。这时候就需要使用扩展访问控制列表了。使用扩展IP访问列表可以有效的容许用户访问物理LAN而并不容许他使用某个特定服务(例如 WWW,FTP等)。扩展访问控制列表使用的ACL号为100到199。

扩展访问控制列表的格式

刚刚我们提到了标准访问控制列表,他是基于IP地址进行过滤的,是最简单的ACL。那么如果我们希望将过滤细到端口怎么办呢?或者希望对数据包的目的地址进行过滤。这时候就需要使用扩展访问控制列表了。使用扩展IP访问列表可以有效的容许用户访问物理LAN而并不容许他使用某个特定服务(例如 WWW,FTP等)。扩展访问控制列表使用的ACL号为100到199。

扩展访问控制列表的格式:

扩展访问控制列表是一种高级的ACL,配置命令的具体格式如下:

access-list ACL号 [permit|deny] [协议] [定义过滤源主机范围] [定义过滤源端口] [定义过滤目的主机访问] [定义过滤目的端口]

例如:access-list 101 deny tcp any host 192.168.1.1 eq www这句命令是将所有主机访问192.168.1.1这个地址网页服务(WWW)TCP连接的数据包丢弃。

小提示:同样在扩展访问控制列表中也可以定义过滤某个网段,当然和标准访问控制列表一样需要我们使用反向掩码定义IP地址后的子网掩码。

扩展访问控制列表实例

我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供WWW服务,IP地址为172.16.4.13。

配置任务:禁止172.16.3.0的计算机访问172.16.4.0的计算机,包括那台服务器,不过惟独可以访问172.16.4.13上的WWW服务,而其他服务不能访问。

路由器配置命令:

access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www 设置ACL101,容许源地址为任意IP,目的地址为172.16.4.13主机的80端口即WWW服务。由于CISCO默认添加DENY ANY的命令,所以ACL只写此一句即可。

int e 1 进入E1端口

ip access-group 101 out 将ACL101宣告出去

设置完毕后172.16.3.0的计算机就无法访问172.16.4.0的计算机了,就算是服务器172.16.4.13开启了FTP服务也无法访问,惟独可以访问的就是172.16.4.13的WWW服务了。而172.16.4.0的计算机访问172.16.3.0的计算机没有任何问题。

扩展ACL有一个最大的好处就是可以保护服务器,例如很多服务器为了更好的提供服务都是暴露在公网上的,这时为了保证服务正常提供所有端口都对外界开放,很容易招来黑客和病毒的攻击,通过扩展ACL可以将除了服务端口以外的其他端口都封锁掉,降低了被攻击的机率。如本例就是仅仅将80端口对外界开放。

总结:扩展ACL功能很强大,他可以控制源IP,目的IP,源端口,目的端口等,能实现相当精细的控制,扩展ACL不仅读取IP包头的源地址/ 目的地址,还要读取第四层包头中的源端口和目的端口的IP。不过他存在一个缺点,那就是在没有硬件ACL加速的情况下,扩展ACL会消耗大量的路由器 CPU资源。所以当使用中低档路由器时应尽量减少扩展ACL的条目数,将其简化为标准ACL或将多条扩展ACL合一是最有效的方法。

基于名称的访问控制列表

不管是标准访问控制列表还是扩展访问控制列表都有一个弊端,那就是当设置好ACL的规则后发现其中的某条有问题,希望进行修改或删除的话只能将全部ACL信息都删除。也就是说修改一条或删除一条都会影响到整个ACL列表。这一个缺点影响了我们的工作,为我们带来了繁重的负担。不过我们可以用基于名称的访问控制列表来解决这个问题。

一、基于名称的访问控制列表的格式:

ip access-list [standard|extended] [ACL名称]

例如:ip access-list standard softer就建立了一个名为softer的标准访问控制列表。

二、基于名称的访问控制列表的使用方法:

当我们建立了一个基于名称的访问列表后就可以进入到这个ACL中进行配置了。

例如我们添加三条ACL规则

permit 1.1.1.1 0.0.0.0

permit 2.2.2.2 0.0.0.0

permit 3.3.3.3 0.0.0.0

如果我们发现第二条命令应该是2.2.2.1而不是2.2.2.2,如果使用不是基于名称的访问控制列表的话,使用no permit 2.2.2.2 0.0.0.0后整个ACL信息都会被删除掉。正是因为使用了基于名称的访问控制列表,我们使用no permit 2.2.2.2 0.0.0.0后第一条和第三条指令依然存在。

总结:如果设置ACL的规则比较多的话,应该使用基于名称的访问控制列表进行管理,这样可以减轻很多后期维护的工作,方便我们随时进行调整ACL规则。

反向访问控制列表:

我们使用访问控制列表除了合理管理网络访问以外还有一个更重要的方面,那就是防范病毒,我们可以将平时常见病毒传播使用的端口进行过滤,将使用这些端口的数据包丢弃。这样就可以有效的防范病毒的攻击。

不过即使再科学的访问控制列表规则也可能会因为未知病毒的传播而无效,毕竟未知病毒使用的端口是我们无法估计的,而且随着防范病毒数量的增多会造成访问控制列表规则过多,在一定程度上影响了网络访问的速度。这时我们可以使用反向控制列表来解决以上的问题。

反向访问控制列表的用途及格式

一、反向访问控制列表的用途

反向访问控制列表属于ACL的一种高级应用。他可以有效的防范病毒。通过配置反向ACL可以保证AB两个网段的计算机互相PING,A可以PING通B而B不能PING通A。

说得通俗些的话就是传输数据可以分为两个过程,首先是源主机向目的主机发送连接请求和数据,然后是目的主机在双方建立好连接后发送数据给源主机。反向ACL控制的就是上面提到的连接请求。

二、反向访问控制列表的格式

反向访问控制列表格式非常简单,只要在配置好的扩展访问列表最后加上established即可。我们还是通过实例为大家讲解。

我们采用如图所示的网络结构。路由器连接了二个网段,分别为

172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中的计算机都是服务器,我们通过反向ACL设置保护这些服务器免受来自172.16.3.0这个网段的病毒攻击。

配置实例:禁止病毒从172.16.3.0/24这个网段传播到172.16.4.0/24这个服务器网段。

路由器配置命令:

access-list 101 permit tcp 172.16.3.0 0.0.0.255 172.16.4.0 0.0.0.255 established 定义ACL101,容许所有来自172.16.3.0网段的计算机访问172.16.4.0网段中的计算机,前提是TCP连接已经建立了的。当TCP连接没有建立的话是不容许172.16.3.0访问172.16.4.0的。

int e 1 进入E1端口

ip access-group 101 out 将ACL101宣告出去

设置完毕后病毒就不会轻易的从172.16.3.0传播到172.16.4.0的服务器区了。因为病毒要想传播都是主动进行TCP连接的,由于路由器上采用反向ACL禁止了172.16.3.0网段的TCP主动连接,因此病毒无法顺利传播。

小提示:检验反向ACL是否顺利配置的一个简单方法就是拿172.16.4.0里的一台服务器PING在172.16.3.0中的计算机,如果可以PING通的话再用172.16.3.0那台计算机PING172.16.4.0的服务器,PING不通则说明ACL配置成功。

通过上文配置的反向ACL会出现一个问题,那就是172.16.3.0的计算机不能访问服务器的服务了,假如图中172.16.4.13提供了 WWW服务的话也不能正常访问。解决的方法

是在ESTABLISHED那句前头再添加一个扩展ACL规则,例如:access-list 101 permit tcp 172.16.3.0 0.0.0.255 172.16.4.13 0.0.0.0 eq www

这样根据“最靠近受控对象原则”即在检查ACL规则时是采用自上而下在ACL中一条条检测的,只要发现符合条件了就立刻转发,而不继续检测下面的ACL语句。172.16.3.0的计算机就可以正常访问该服务器的WWW服务了,而下面的ESTABLISHED防病毒命令还可以正常生效。

笔者所在公司就使用的这种反向ACL的方式进行防病毒的,运行了一年多效果很不错,也非常稳定。

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

上面我们介绍了标准ACL与扩展ACL,实际上我们数量掌握了这两种访问控制列表就可以应付大部分过滤网络数据包的要求了。不过实际工作中总会有人提出这样或那样的苛刻要求,这时我们还需要掌握一些关于ACL的高级技巧。基于时间的访问控制列表就属于高级技巧之一。

配置实例:

要想使基于时间的ACL生效需要我们配置两方面的命令:

1、定义时间段及时间范围。

2、ACL自身的配置,即将详细的规则添加到ACL中。

3、宣告ACL,将设置好的ACL添加到相应的端口中。

网络环境介绍:

我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供FTP服务,IP地址为172.16.4.13。

配置任务:只容许172.16.3.0网段的用户在周末访问172.16.4.13上的FTP资源,工作时间不能下载该FTP资源。

路由器配置命令:

time-range softer 定义时间段名称为softer

periodic weekend 00:00 to 23:59 定义具体时间范围,为每周周末(6,日)的0点到23点59分。当然可以使用periodic weekdays定义工作日或跟星期几定义具体的周几。

access-list 101 deny tcp any 172.16.4.13 0.0.0.0 eq ftp time-range softer 设置ACL,禁止在时间段softer范围内访问172.16.4.13的FTP服务。

access-list 101 permit ip any any 设置ACL,容许其他时间段和其他条件下的正常访问。

int e 1 进入E1端口。

ip access-group 101 out 宣告ACL101。

基于时间的ACL比较适合于时间段的管理,通过上面的设置172.16.3.0的用户就只能在周末访问服务器提供的FTP资源了,平时无法访问。

访问控制列表流量记录

网络管理员就是要能够合理的管理公司的网络,俗话说知己知彼方能百战百胜,所以有效的记录ACL流量信息可以第一时间的了解网络流量和病毒的传播方式。下面这篇文章就为大家简单介绍下如何保存访问控制列表的流量信息,方法就是在扩展ACL规则最后加上LOG命令。

实现方法:

log 192.168.1.1 为路由器指定一个日志服务器地址,该地址为192.168.1.1

access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www log 在希望监测的扩展ACL最后加上LOG命令,这样就会把满足该条件的信息保存到指定的日志服务器192.168.1.1中。

访问控制列表,全局模式下

ACL编号

标准1-99 1300-1999

扩展100-199 2000-2699

标准的访问列表 这种访问列表只能使用IP数据包的源IP地址作为条件测试。所有决定是基于源IP地址的。意味着标准的访问列表基本上不允许或拒绝整个协议组。他们不区分IP 流量类型,例如WWW,Telnet,UDP等服务。

扩展的访问列表 扩张的访问列表可以测试IP包的第三层和第四层报头中的其他字段。他们可以测试源IP地址和目的IP地址、网络层报头中的协议字段,以及位于传输层报头中的端口号。这使得扩展的访问列表有能力在控制流量时做细粒度更大的决定。

命名的访问列表

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ACL(Access Control List,访问控制列表)是控制网络访问的一种有利的工具。所谓ACL就是一种路由器配置脚本,它是根据从数据包包头中发现的信息(源地址、目的地址、源端口、目的端口和协议等)来控制路由器应该允许还是拒绝数据包通过,从而达到访问控制的目的。

ACL是Cisco IOS 软件中最常用的功能之一,ACL应用非常广泛,可以实现的主要功能如下:

1.检查和过滤数据包。

2.提供对通信流量的控制手段。

3.限制或减少不必要的路由更新。

4.按照优先级或用户队列处理数据包。

5.定义VPN感兴趣流量。

大体上分为 3 部分:

提供网络的基本安全手段

可以用于QoS(服务质量)对数据流量进行控制

提供对通信流量的控制手段

通过访问控制列表,可以在路由器接口处决定哪种类型的通信流量被转发,哪种类型的通信

量不能被阻塞

路由器对访问控制列表的处理过程

ACL是一组判断语句的集合:

从入站接口进入路由器的数据包

从出站接口离开路由器的数据包

在进行数据通信的时候,首先路由器检查接口是否应用了 ACL,如果有,则按照ACL里面

的条目进行相应的制度来决定是否允许访问某些网络;如果没有,则照常处理数据包

ACL工作方式的特征:

(1)自上而下的处理方式:ACL表项的检查按自上而下的顺序进行,并且从第一个表项开始,最后默认为deny any.一旦匹配某一条件,就停止检查后续的表项,所以必须考虑在ACL中语句配置的先后次序。

(2)遵循尾部添加表项原则:新的表项在不指定序号的情况下,默认被添加到ACL的末尾。

(3)ACL放置:尽量考虑将扩展ACL放在靠近源的位置上,保证被拒绝的数据包今早拒绝,避免浪费网络带宽。另外,尽量使标准ACL靠近目的,由于标准ACL只使用源地址,如果将其靠近源会阻止数据包流向其他端口。

(4)语句的位置:由于ip协议包含ICMP,TCP和UDP,所以应将更为具体的表项放在不太具体的表项前面,以保证位于另一语句不会否定ACL中后面语句的作用效果。

(5)3P原则:对于每种协议(Per Protocol)的每个接口(Per Interface)的每个方向(Per Direction)只能配置一个ACL。

(6)入站ACL和出站ACL:当在接口上应用ACL时,用户要指明ACL是应用于流入数据还是流出数据。入栈ACL在数据包被允许后,路由器才会处理路由工作。如果数据包被丢弃,则节省了执行路由查找的开销。出站ACL在传入数据包被路由到出站接口后,才由出站ACL进行处理。相比之下,入站ACL比出站ACL更加高效。

6.标准+扩展:

(1)每一个接口,每一个方向,每一种协议,只能设置一个ACL

(2)组织好ACL顺序将测试性最好的放在最前面

(3)删除其中任意一条,就以为着删除整个ACL

(4)默认时,结尾语句是deny

(5)配置完之后,必须应用到接口上

(6)Acl过滤经过router的数据包,但并不过滤router自身收益产生的数据包

(7)尽量把标准acl离目标近的地方,扩展的acl离源近的地方

命名型ACL有哪些有点?

1.有利于实施工程。(例如,用标准或者扩展,在实施工程的时候有很多ACL条目,记不住那个是干什么的,但是用命名,就知道他的意思了。)

2.编辑方便

命名型的ACL可以针对某一条规则进行删除。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top