ACL---毕业论文

  1. 云栖社区>
  2. 博客>
  3. 正文

ACL---毕业论文

余二五 2017-11-14 14:47:00 浏览825
展开阅读全文

2011年毕业论文:基于ACL的访问控制在园区网中的解决方案---1

 

基于ACL的访问控制在园区网中的实现方案

许小明

(渭南师范学院 信息工程系 07)

 

  随着网络规模的扩大和流量的增加,园区网络设计中对网络安全的控制和对带宽的分配已成为网络管理的重要内容。ACL即是通过配置对报文的匹配规则和处理操作来实现数据包安全过滤、流量过滤,数据包标识等功能。本文主要介绍了ACL的基本概念和功能,阐述了ACL的技术原理,并针对“诺达”网络科技有限公司的需求,使用ACL技术,实现对Internet的远程访问和网络安全等方面的访问控制,而且在该网络的应用中对本文设计的访问控制策略进行测试,证明它是有效的,可靠的,能较好的实现数据包过滤,可以有效的防止非法用户对网络的访问,同时也可以控制流量。

关键词ACL;网络安全;访问控制列表。

 

引言

因特网的飞速发展,全国各企事业单位以及家庭用户都在建设局域网并接入互联网,互联网已经成为人们日常生活中不可或缺的一部分。据CNNIC最新发布的第27次中国互联网络发展状况统计报告显示,截至201012月底,我国网民规模达到4.57亿,宽带普及率接近100%。主流计算机用户几乎已经通过各种渠道连接上了互联网。但是 网络恶意活动也成为2010年头号新闻。人们经历了推特、Facebook以及Android商城的诈骗和木马病毒,同时还有不断上升的网络政治攻击。另据数据显示,在病毒木马的传播途径中,有93.2%直接依赖互联网完成,其中有82.2%是通过下载行为感染计算机。也就是说,脱离互联网环境,病毒木马即失去感染计算机的主要机会,报告显示,2010年,互联网安全形势发生着巨大的变化,新增病毒木马的"互联网化"特征日益明显,以钓鱼网站为首的互联网传播方式时刻威胁着广大网民的上网安全,网络安全面临着病毒更毒,黑客更黑,诸如从间谍软件、网游木马、流氓软件、IM通讯病毒、病毒邮件的肆虐,到性质极为严重的网络银行钓鱼和针对性很强的木马、蠕虫病毒的不断出现。

如今,网络安全越来越受到大家的重视,构建网络安全环境时,在技术手段,管理制度等方面都逐步加强,设置防火墙,安装入侵检测系统等等。但网络安全是个全方位的问题,忽略哪一点都会造成木桶效应,使得整个安全系统虚设。

特别是一些大型企业有很多分支机构,有些分支机构与总部之间的通信是通过互联网来实现的业务,很容易遭受网络黑客的攻击,造成大量数据被盗。只有加强对用户端数据进行验证、控制,才能有效地防止黑客入侵。防止黑客远程入侵对网络管理员来说,一直是很头疼的事情。

近年来,一个新的安全防护名词越来越流行,这就是“访问控制”技术,访问控制是网络安全防范和保护的主要策略,它的主要任务是保证网络资源不被非法使用和访问。它是保证网络安全最重要的核心策略之一,一个小企业在节约成本的情况下,利用ACL就可以达到我们所期望的效果。

顾名思义,ACL即访问控制列表,它是工作在OSI参考模型三层以上设备,通过对数据包中的第三、四层中的包头信息按照给定的规则进行分析,判断是否转发该数据包。基于ACL的网络病毒的过滤技术在一定程度上可以比较好的保护局域网用户免遭外界病毒的干扰,是一种比较好的中小型局域网网络安全控制技术。随着网络技术的不断发展,出现了大量的基于网络的服务,网络安全问题也就变得越来越重要。网络中的节点分为资源节点和用户节点两大类,其中资源节点提供服务或数据,用户节点访问资源节点所提供的服务与数据。ACL可以当作一种网络控制的有力工具,用来过滤流入和流出路由器或三层交换机接口的数据包。ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点所能具备的访问权限。通过灵活地增加访问控制列表,ACL可以当作一种网络控制的有力工具,用来过滤流入和流出路由器接口的数据包。

2 ACL技术详述

2.1  ACL简介

一个访问控制列表是一组按顺序排列的过滤器,每台过滤器是由匹配标准和一个过滤动作构成的,过滤动作不是允许就是拒绝,而过滤标准既可以用像源地址一样简单的参数(标准访问控制列表),也可以复杂到使用诸如源和目的地址,协议类型,端口号或者套接字和某些标记状态(如TCP ACK位)等参数的组合(扩展访问控制列表)。

2.2  ACL的种类

2.2.1 标准的 ACL

当我们要想阻止来自某一网络的所有通信流量,或者充许来自某一特定网络的所有通信流量,或者想要拒绝某一协议簇的所有通信流量时,可以使用标准访问控制列表来实现这一目标。标准 ACL使用源地址进行数据包过滤,将对整个TCP/IP协议生效,从而允许或拒绝基于网络、子网或主机的IP地址的所有通信流量通过路由器的接口。其格式如下:

access-list access-list-number{permit|deny}source[source-wildcard ]

access-list-number:编号的范围适用数字1-99/1300-1999,该列表号不必按照任何特殊顺序,这表明该access-list语句是一个普通的标准型IP访问列表语句。list number参数具有双重功能①定义访问列表的操作协议②通知IOS在处理access-list语句时,把相同的list number参数作为同一实体对待。正如本文在后面所讨论的,扩展型IP访问列表也是通过list number而表现其特点的。

permit | deny :设置执行的动作,是允许还是拒绝。

source:指定源地址。可以是一台主机或者一个网段。

source-wildcard :源地址的反掩码。

当设置完访问控制列表的ACE时,还必须把它应用到接口上才能使其生效,其格式如下:

ip access-group access-list-number {in |out}

将访问控制列表应用于接口,访问组在配置时要求指定其应用是in还是out模式,该选项inout代表着访问控制列表对于接口来说使用的方式,其中,out表示访问控制列表用于所有输出数据包, 到来的分组首先被路由到出站接口,并在将其传输出去之前根据出站访问列表对其进行处理。选项out不会对产生于路由器自身的数据包进行过滤,而in则是说明访问控制列表用于所有输入的数据包,将到来的分组路由到出站接口之前对其进行处理。如果根据过滤条件分组被丢弃,则无需查找路由选择表;如果分组被允许通过,则对其做路由选择方面的处理。如果没有定义任何访问控制列表的条目的访问组用于这个接口,那么缺省是出站,当然,访问编号指定了接收该命令所发送数据包的访问列表,多个接口可以调用相同的访问控制列表,但是在任意一个接口上,对每一种协议仅能有一个进入和离开的访问控制列表。

标准IP列表仅能过滤源地址,因而,使用标准访问控制列表的过滤器时必须被放置在尽可能靠近目标的地方,以便源点还可以访问到其他没有被过滤的目标,其结果是带宽和CPU周期被浪费在最终将要丢弃的数据包上。

另一种调用访问控制列表的命令是access-class ,该命令用于控制到达路由器或者由路由器虚拟终端线路发起的telnet会话,而不进行数据包过滤,命令格式如下:

access-calss access-list-number {in|out}

命令access-class 对于路由器传输的telnet流量不起作用,它仅影响到达路由器以及路由器发起的会话。

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

2.2.2扩展的ACL

扩展型IP访问列表在数据包的过滤方面增加了不少功能和灵活性。IP扩展访问列表可以根据IP上层协议号、源IP地址、目的IP地址、源TCP/UDP端口号、目的TCP/UDP端口号、TCP标志、ICMP消息类型和代码、TOS优先级、IP分片标志等属性对数据包进行过滤,即可以对同一地址允许使用某些协议通信流量通过,而拒绝使用其他协议的流量通过,他可以更精确的过滤流量,,扩展型IP访问列表的通用格式如下:

access-list access-list-number [dynamic dynamic-name [timeout minutes]] {permit | deny}protocol source source-wildcard destination  destination-wildcard[precedence precedence][tostos][log|log-input]

[time-range time-range-name][ operator operan ] [established][fragment]

access-list-number:扩展ACL适用数字100-199或者2000—2699

dynamic:表示这个列表时一个动态访问控制列表。

timeout:定义了一个临时条目在一个动态列表中保留的最大时间。

protocol:协议类型,,其中包括IPTCPUDPICMP等等由于IP头部传送TCPUDP、路由协议和ICMP协议,所以在访问列表的语句中,IP协议的级别比其他协议更为重要。

source source-wildcard :源地址和反掩码,

destination  destination-wildcard:目标地址和反掩码。如果主机的反掩码是0.0.0.0那么可以写成:host  ip地址 这样的格式。如果地址是 0.0.0.0 255.255.255.255可以写成 any

precedenceip报头中的优先级字段,范围是0-7

tosip报头中的服务类型。范围是0-15

log:任何访问控制列表后都可以加上一个log关键字,它起日志的作用。一旦访问列表作用于某个接口,那么包括关键字"log"的语句将记录那些满足访问列表中"permit""deny"条件的数据包。第一个通过接口并且和访问列表语句匹配的数据包将立即产生一个日志信息。后续的数据包根据记录日志的方式,或者在控制台上显示日志,或者在内存中记录日志。通过Cisco IOS的控制台命令可以选择记录日志方式。

log-input:如果在扩展ACL最后加上log-input,则不仅会保存流量信息,还会将数据包通过的端口信息也进行保存

time-range:定义一个时间列表。

operator operan :操作选项。等于 (eq)、不等于 (neq)、大于 (gt) 和小于 (lt)

established: 关键字established用来在TCP报头中查找确认(ACK)或者重置(RST)标志,如果设置了这些标志,那么就匹配,该选项只能用于tcp协议,目的是为了实现基于tcp数据段(四层pdu)中的代码控制位的标志进行会话的控制,例如只允许那些已经建立的tcp会话的流量(特征是ACK或者RST标志已置位)。这一命令用来使已经建立的数据流通过ACL,可以用作TCP的单项控制。

fragment:当使用fragment选项时,一个acl条目将只对分片数据包的后续分片(noninitial fragment)进行控制;并且ACL条目中不能包含四层信息。

虽然扩展IP访问列表可以非常准确的标识数据包特性,但在没有硬件ACL加速的情况下,扩展ACL会消耗大量的路由器CPU资源。所以它应放在离禁止通过的数据流源尽可能近的地方。这样可以防止带宽和CPU浪费在传输无用的数据包上,另一方面,扩展列表的复杂性意味着更多的处理负担,当决定在那里放置过滤器时,需要权衡考虑,因此在使用中低档路由器时应尽量减少扩展ACL的条目数,将其简化为标准ACL或将多条扩展ACL合一是最有效的方法。

将此ACL应用到一个特定的被怀疑的输入接口上,然后通过不停地输入“show access-list"来查看不同ACE的命中率,高的异常类型的命中率意味着在这个协议下的攻击类型,然后通过针对高命中率的协议类型的逐步细化(调节ACL)来定位攻击的流量类型。

虽然标准访问控制列表和扩展访问控制列表通常使用编号,但是他们也可以使用名字,在IOS 11.2及更高的版本中支持这一协定,在某些环境中,可能会使用大量的IP列表配置路由器,用名字代替数字,可以容易的标识单独的访问列表。

2.2.3  命名ACL

对于每台路由器,798个标准访问列表或者799个扩展访问列表,看上去已经足够了。但是有些情况(比如动态访问列表)可能就不够了,从IOS 11.2 开始提供的命名访问列表打破了这种限制,命名ACL允许对访问控制列表允许访问控制列表进行标识时使用一些描述性的名称,而不是像以前那样仅一个无描述作用的号码,描述名可以使数量庞大的访问列表更加便于管理。其语法格如下:

第一行应该使用:

ip  access-list  { standard | extended  } access-list-name

因为没有编号区分访问列表类型,所以该行可以将列表指定为标准IP列表或者扩展IP列表,下面紧接着可以使用允许或拒绝语句:

标准命名ACL语法如下:

[ Sequence-Number ]{ permit|deny }source[ source-wildcard ]

 扩展命名ACL语法如下:

[ Sequence-Number ]{permit|deny }protocol{ source source-wildcard destination  destination-wildcard }[ operator operan ]

在这两种情况下,都没有出现命令access-list access-list-number部分,但是其他部分完全相同,在相同路由器上标准和扩展访问列表不能同名,除了在接口上建立命名访问列表的命令涉及到用名字代替编号外,在其他方式中命令均保持不变。

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

在标准与扩展访问控制列表中均要使用表号,而在命名访问控制列表中使用一个字母或数字组合的字符串来代替前面所使用的数字。使用命名访问控制列表可以用来删除某一条特定的控制条目,这样可以让我们在使用过程中方便地进行修改。 在使用命名访问控制列表时,要求路由器的IOS11.2以上的版本,并且不能以同一名字命名多个ACL,不同类型的ACL也不能使用相同的名字。如果设置ACL的规则比较多的话,应该使用基于名称的访问控制列表进行管理,这样可以减轻很多后期维护的工作,方便我们随时进行调整ACL规则。

2.2.4  基于时间的ACL

随着网络的发展和用户要求的变化,从IOS 12.0开始,思科(CISCO)路由器新增加了一种基于时间的访问列表。通过它,可以根据一天中的不同时间,或者根据一星期中的不同日期,或二者相结合来控制网络数据包的转发。这种基于时间的访问列表,就是在原来的标准访问列表和扩展访问列表中,加入有效的时间范围来更合理有效地控制网络。它需要先定义一个时间范围,然后在原来的各种访问列表的基础上应用它。并且,对于编号访问表和名称访问表都适用 。

 ①定义时间范围的名称

time-range time-range-name

time-range : 用来定义时间范围的命令。

time-range-name : 时间范围名称,用来标识时间范围,以便于在后面的访问列表中引用。

 ②指定该时间范围何时生效

定义一个时间周期

periodic days-of-the-week hh:mm to [days-of-the-week] hh:mm

periodic 主要是以星期为参数来定义时间范围的一个命令。它的参数主要有MondayTuesdayWednesdayThursdayFridaySaturdaySunday中的一个或者几个的组合,也可以是daily(每天)、weekday(周一至周五),或者weekend(周末)。

定义一个绝对时间

absolute [start hh:mm day month year]  [end hh:mm day month year]

absolute 该命令用来指定绝对时间范围。它后面紧跟着startend两个关键字。在这两个关键字后面的时间要以24小时制hh:mm表示,日期要按照日//年来表示。如果省略start及其后面的时间,则表示与之相联系的permit deny语句立即生效,并一直作用到end处的时间为止。如果省略end及其后面的时间,则表示与之相联系的permit deny语句在start处表示的时间开始生效,并且一直进行下去。一个时间范围只能有一个absolute语句,但是可以有几个periodic语句。

2.2.5  自反ACL

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

自反ACL是自动驻留的,暂时的,基于会话的过滤器,允许根据上层会话信息对IP分组进行过滤,如果某台路由器允许通过网络内部向外网的主机初始发起一个会话,那么自反访问控制列表就允许返回的会话数据流,自反列表和扩展命名的Ipv4访问列表一起使用。自反列表的会话过滤器可以与使用关键字establishedTCP过滤器进行比较,使用established关键字,TCP会话是从网络内部初始发起的,如果返回的数据流具有ACKRST的设置,那么该数据包就是以前建立连接的会话的一部分,并且该数据包被允许通过。并且带有established关键字的条目是访问列表中的永久条目,

established参数的扩展ACL相比,自反ACL能够提供更强大的会话过滤,尽管在概念上与established参数相似,但是自反ACL还可以适用于不含ACK或者RST位的UDPICMP数据包,established选项还不能用于会动态修改会话流量源端口的应用程序,permit established语句仅用于检查ACKRST位,而不检查源和目的地址。

自反访问控制列表使用不同的参数来确定数据包是否是以前建立的会话的一部分,对于TCP或者UDP数据包来说,自反访问控制列表使用源或目的IP地址,以及源和目的TCP或者UDP端口号,当存在一个从网络内部初始发起的会话时,自反访问列表就会保留从初始的数据包中收集的会话消息,反转并添加源和目的IP地址以及源和目的端口号,连同上层协议类型(例如TCPUDP)。作为临时自反列表的允许语句,该条目在出现以下几种情况之前都保持活动的:不再有任何有关该会话的数据流或超时值;收到两个FIN标记的数据包;或者在TCP数据包中设置了RST标记。

自反访问表的基本的工作原理是:只能由内部网络始发的,目的地是不能主动访问源,外部网络的响应流量可以进入,由外部网络始发的流量如果没有明确的允许,是禁止进入的。说得通俗些的话就是传输数据可以分为两个过程,首先是源主机向目的主机发送连接请求和数据,然后是目的主机在双方建立好连接后发送数据给源主机。反向ACL控制的就是上面提到的连接请求,

自反ACL允许最近出站数据包的目的地发出的应答流量回到该出站数据包的源地址,这样可以更加严格的控制哪些流量能进入内部网络,而且提升了扩展ACL的能力,

使用自反ACL来允许从内网发起的会话的IP流量,同时拒绝网络发起的IP流量,此类ACL使路由器能动态管理会话流量,路由器检查出站流量,当发现新的连接时,便会在临时的ACL中添加条目以允许应答流量进入,自反ACL仅包含临时条目,当新的IP会话开始时(例如,数据包出站),这些条目会自动创建,并在会话结束时自动删除。

自反ACL有两个局限性:第一是:状态功能的局限,因为只有TCP是有状态的,对于TCP会话,在连接完成或会话意外中断的时候,可以关闭临时条目(默认是5S后关闭),对于其他TCP/IP会话,如UDPICMP不得不在连接空闲期满后才关闭,这里可能存在安全问题。自反ACL的第二个问题,是应用程序的问题:比方FTP,多媒体,VOIP等,在应用程序的处理中,涉及不止一个连接,例如控制连接,数据连接,这些连接有些是客户端发起,有些是服务端发起,RACL并没有能力去处理这些连接。

2.3  ACL的匹配原则

2.3.1  隐式拒绝一切

任何定义好的访问控制列表,在表项末尾都有一条deny any或者deny any any,如果没有发生匹配,那么最后将应用这条默认条目,拒绝所有的数据包通过。

2.3.2  顺序性

一条ACL中可以包含多个规则,而每个规则都指定不同的报文范围。这样,在匹配报文时就会出现匹配顺序的问题。

ACL支持两种匹配顺序:

配置顺序:根据用户配置规则从上到下的先后顺序进行规则匹配。第一个配置项总是被执行的,在第一个匹配项匹配成功后,访问控制列表其余的配置项将被忽略。

自动排序:根据“深度优先”的顺序进行规则匹配。

① 标准ACL的“深度优先”顺序判断原则

(1)先比较源IP地址范围,源IP地址范围小(反掩码中“0”位的数量多)的规则优先;

(2)如果源IP地址范围相同,则比较是否带有fragment参数,带有fragment参数的规则优先;

(3) 如果源IP地址范围、是否带有fragment参数这两个判断条件也相同,则先配置的规则优先。

② 扩展ACL的“深度优先”顺序判断原则

(1)首先比较协议范围,指定了IP协议承载的协议类型的规则优先;

(2)如果协议范围相同,则比较源IP地址范围,源IP地址范围小(反掩码中“0”位的数量多)的规则优先;

(3)如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP地址范围小(反掩码中“0”位的数量多)的规则优先;

(4)如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口(TCP/UDP端口号)范围,四层端口号范围小的规则优先;

(5)如果协议范围、源IP地址范围、目的IP地址范围、四层端口号范围相同,则比较规则中参数的个数,参数个数多的规则优先。

如果规则A与规则B的协议范围、源IP地址范围、目的IP地址范围、四层端口号范围完全相同,并且其它的参数个数也相同,将按照加权规则进行排序。设备为每个参数设定一个固定的权值,最终的匹配顺序由各个参数的权值和参数的取值来决定。各个参数自身的权值从大到小排列为icmp-typeestablisheddscptosprecedencefragment。比较规则如下:(1)设备以一个固定权值依次减去规则中所配置的各个参数自身的权值,所得结果小的规则优先;(2)如果各个规则中参数种类完全相同,则这些参数取值的累加和小的规则优先。

2.4  ACL的应用方式

① ACL直接下发到硬件的情况

ACL可以直接下发到交换机的硬件,用于数据转发过程中的报文过滤和流分类。此时一条ACL中多个规则的匹配顺序是由交换机的硬件决定的。ACL直接下发到硬件的情况包括:通过ACL过滤转发数据、配置QoS功能时引用ACL等。

 ACL直接下发到硬件对报文进行过滤时,如果报文没有与ACL中的规则匹配,此时设备对此类报文采取的动作为permit,即允许报文通过。

② ACL被上层软件引用的情况

ACL也可以用来对由软件处理的报文进行过滤和流分类。此时ACL规则的匹配顺序有两种:config:按用户配置的先后顺序;auto:按“深度优先”的顺序。

ACL被上层软件引用的情况包括:路由策略引用ACL、对TelnetSNMPWEB登录用户进行控制时引用ACL等。

ACL被上层软件引用,对TelnetSNMPWEB登录用户进行控制时,如果报文没有与ACL中的规则匹配,此时设备对此类报文采取的动作为deny,即拒绝报文通过。用户可以在定义ACL的时候指定一条ACL中多个规则的匹配顺序。用户一旦指定某一条ACL的匹配顺序,就不能再更改该顺序。只有把该ACL中所有的规则全部删除后,才能重新指定其匹配顺序。









本文转自 帅枫小明 51CTO博客,原文链接:http://blog.51cto.com/576642026/653383,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注