7月31 ACL
CISCO ACL配置详解
什么是ACL?
访问控制列表简称为ACL,访问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源端口,目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。该技术初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL的支持了。
&nb sp;
访问控制列表的原理
对路由器接口来说有两个方向
出:已经经路由器的处理,正离开路由器接口的数据包
入:已经到达路由器接口的数据包,将被路由器处理。
匹配顺序为:"自上而下,依次匹配".默认为拒绝
访问控制列表的类型
标准访问控制列表:一般应用在out出站接口。建议配置在离目标端最近的路由上
扩展访问控制列表:配置在离源端最近的路由上,一般应用在入站in方向
命名访问控制列表:允许在标准和扩展访问列表中使用名称代替表号
访问控制列表使用原则
1、最小特权原则
只给受控对象完成任务所必须的最小的权限。也就是说被控制的总规则是各个规则的交集,只满足部分条件的是不容许通过规则的。
2、最靠近受控对象原则
所有的网络层访问权限控制。也就是说在检查规则时是采用自上而下在ACL中一条条检测的,只要发现符合条件了就立刻转发,而不继续检测下面的ACL语句。
3、默认丢弃原则
在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ANY,也就是丢弃所有不符合条件的数据包。这一点要特别注意,虽然我们可以修改这个默认,但未改前一定要引起重视。
由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到端到端的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。
一、标准访问列表
访问控制列表ACL分很多种,不同场合应用不同种类的ACL.其中最简单的就是标准访问控制列表,标准访问控制列表是通过使用IP包中的源IP地址进行过滤,使用访问控制列表号1到99来创建相应的ACL.
它的具体格式:
access-list access-list-number [permit | deny ] [sourceaddress][wildcard-mask]
access-list-number 为1-99 或者 1300-1999之间的数字,这个是访问列表号。
例如: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命令。
标准访问列表配置实例:
R1(config)#access-list 10 deny 192.168.2.0 0.0.0.255
R1(config)#access-list 10 permit any
R1(config)#int fa0/0.1
R1(config-subif)#ip access-group 10 out
上面配置的含义是阻止来自网段192.168.2.0的机器从int fa0/0.1端口出去,访问列表在配置好之后,要把它在端口上应用,否则配置了还是无效的。
注意事项:
1、标准访问列表,一般来说配置尽量靠近目的端。
2、配置的第二条命令中的any相当于 0.0.0.0 255.255.255.255
3、一定要加pemint any,使其他的网络可通。
4、访问列表是从上到下一条一条进行匹配的,所以在设置访问列表的时候要注意顺序。如果从第一条匹配到最后一条还是不知道要怎么做,路由器就会丢弃这个数据包,也就是为什么上面的例子中上一定要加permit any.
5、如果只阻止一个主机,那可以用 host 192.168.1.12 或者 192.168.1.12 0.0.0.0,这两种配置是等价的。
删除已建立的标准ACL
R1(config)#no access-list +access-list number
对标准的ACL来说,不能删除单个acl语句,只能删除整个ACL
总结:标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。如果要更加复杂的控制数据包的传输就需要使用扩展访问控制列表了,他可以满足我们到端口级的要求。
二、扩展访问控制列表
上面我们提到的标准访问控制列表是基于IP地址进行过滤的,是最简单的ACL.那么如果我们希望将过滤细到端口怎么办呢?或者希望对数据包的目的地址进行过滤。这时候就需要使用扩展访问控制列表了。使用扩展IP访问列表可以有效的容许用户访问物理LAN而并不容许他使用某个特定服务(例如WWW,FTP等)。扩展访问控制列表使用的ACL号为100到199.
扩展访问控制列表的格式:
access-list access-list number {permit/deny} protocol +源地址+反码 +目标地址+反码+operator operan(It小于,gt大于,eq等于,neq不等于。具体可?)+端口号
1、扩展访问控制列表号的范围是100-199或者2000-2699.
2、因为默认情况下,每个访问控制列表的末尾隐含deny all,所以在每个扩展访问控制列表里面必须有:access-list 110 permit ip any any .
3、不同的服务要使用不同的协议,比如TFTP使用的是UDP协议。
4、更多注意事项可以参考上面标准访问控制列表部分
例如:access-list 101 deny tcp any host 192.168.1.1 eq www //将所有主机访问192.168.1.1这个地址网页服务(WWW)TCP连接的数据包丢弃。
小提示:同样在扩展访问控制列表中也可以定义过滤某个网段,当然和标准访问控制列表一样需要我们使用反向掩码定义IP地址后的子网掩码。
扩展访问控制列表配置实例:
R2(config)#access-list 110 deny tcp any host 192.168.1.12 eq www
R2(config)#access-list 110 deny tcp any host 192.168.1.12 eq ftp
R2(config)#int fa0/0
R2(config-if)#ip access-group 110 out
上面配置的含义是拒绝访问192.168.1.12的www和ftp服务
实例二:
路由器连接了二个网段,分别为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只写此一句即可。
进入相应端口
ip access-group 101 out //将ACL101应用到端口
设置完毕后172.16.3.0的计算机就无法访问172.16.4.0的计算机了,就算是服务器172.16.4.13开启了FTP服务也无法访问,惟独可以访问的就是172.16.4.13的WWW服务了。
删除已建立的扩展标准ACL
删除和标准一样,不能单条删除,只能删除整个acl
总结:扩展ACL功能很强大,他可以控制源IP,目的IP,源端口,目的端口等,能实现相当精细的控制,扩展ACL不仅读取IP包头的源地址/目的地址,还要读取第四层包头中的源端口和目的端口的IP.不过他存在一个缺点,那就是在没有硬件ACL加速的情况下,扩展ACL会消耗大量的路由器CPU资源。所以当使用中低档路由器时应尽量减少扩展ACL的条目数,将其简化为标准ACL或将多条扩展ACL合一是最有效的方法。
三、命名访问控制列表
不管是标准访问控制列表还是扩展访问控制列表都有一个弊端,那就是当设置好ACL的规则后发现其中的某条有问题,希望进行修改或删除的话只能将全部ACL信息都删除。也就是说修改一条或删除一条都会影响到整个ACL列表。这一个缺点影响了我们的工作,为我们带来了繁重的负担。不过我们可以用基于名称的访问控制列表来解决这个问题。
命名访问控制列表格式:
ip access-list {standard/extended} access-list-name(可有字母,数字组合的字符串)
例如:ip access-list standard softer //建立一个名为softer的标准访问控制列表。
命名访问控制列表使用方法:
router(config)#ip access-list standard +自定义名
router(config-std-nac1)#11 permit host +ip //默认情况下第一条为10,第二条为20.如果不指定序列号,则新添加的ACL被添加到列表的末尾
router(config-std-nac1)#deny any
对于命名ACL来说,可以向之前的acl中插入acl,删除也可以删除单条acl,
如:router(config)#ip access-list standard benet
router(config-std-nasl)#no 11
使用show access-lists可查看配置的acl信息
总结:如果设置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的。
进入路由相应端口
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防病毒命令还可以正常生效。
五、定时访问控制列表
设置步骤:
1、定义时间段及时间范围。
2、ACL自身的配置,即将详细的规则添加到ACL中。
3、宣告ACL,将设置好的ACL添加到相应的端口中。
定义时间范围的名称:
router(config)#time-range time-range-name
定义一个时间周期
router(config-time-range)#periodic(周期) days-of-the-week hh:mm to [days-of-the-week] hh:mm
其中days-of-the-week的取值有
Monday Tuesday Wednesday Thursday Friday Saturday Sunday{周一到周日}
daily(每天)weekdays(在平日)weekend(周末)
定义一个绝对时间
router(config)#time-range time-range-name
router(config-time-range)#absolute [start hh:mm day month year] [end hh:mm day month year]
在扩展ACL中引入时间范围
router(config)#access-list access-list-number {permit|deny} protocol {source ip +反码 destination ip +反码 +operator+time-range+time-range-name}
定时访问控制列表实例:
路由器连接了二个网段,分别为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,容许其他时间段和其他条件下的正常访问。
进入相应端口。
ip access-group 101 out //应用到端口
基于时间的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最后加上log-input,则不仅会保存流量信息,还会将数据包通过的端口信息也进行保存。使用LOG记录了满足访问控制列表规则的数据流量就可以完整的查询公司网络哪个地方流量大,哪个地方有病毒了。简单的一句命令就完成了很多专业工具才能完成的工作。
http://baike.baidu.com/view/18596.htm
求助编辑百科名片
访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。这张表中包含了匹配关系、条件和查询语句,表只是一个框架结构,其目的是为了对某种访问进行控制。
编辑本段ACL介绍
信息点间通信和内外网络的通信都是企业网络中必不可少的业务需求,但是为了保证内网的安全性,需要通过安全策略来保障非授权用户只能访问特定的网络资源,从而达到对访问进行控制的目的。简而言之,ACL可以过滤网络中的流量,是控制访问的一种网络技术手段。 ACL的定义也是基于每一种协议的。如果路由器接口配置成为支持三种协议(IP、AppleTalk以及IPX)的情况,那么,用户必须定义三种ACL来分别控制这三种协议的数据包。 [1]编辑本段ACL的作用
ACL可以限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定数据包的优先级。 ACL提供对通信流量的控制手段。例如,ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量。 ACL是提供网络安全访问的基本手段。ACL允许主机A访问人力资源网络,而拒绝主机B访问。 ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞。例如,用户可以允许E-mail通信流量被路由,拒绝所有的Telnet通信流量。 例如:某部门要求只能使用 WWW 这个功能,就可以通过ACL实现; 又例如,为了某部门的保密性,不允许其访问外网,也不允许外网访问它,就可以通过ACL实现。编辑本段ACL 3p原则
记住 3P 原则,您便记住了在路由器上应用 ACL 的一般规则。您可以为每种协议 (per protocol)、每个方向 (per direction)、每个接口 (per interface) 配置一个 ACL: 每种协议一个 ACL 要控制接口上的流量,必须为接口上启用的每种协议定义相应的 ACL。 每个方向一个 ACL 一个 ACL 只能控制接口上一个方向的流量。要控制入站流量和出站流量,必须分别定义两个 ACL。 每个接口一个 ACL 一个 ACL 只能控制一个接口(例如快速以太网 0/0)上的流量。 ACL 的编写可能相当复杂而且极具挑战性。每个接口上都可以针对多种协议和各个方向进行定义。示例中的路由器有两个接口配置了 IP、AppleTalk 和 IPX。该路由器可能需要 12 个不同的 ACL — 协议数 (3) 乘以方向数 (2),再乘以端口数 (2)。编辑本段ACL的执行过程
一个端口执行哪条ACL,这需要按照列表中的条件语句执行顺序来判断。如果一个数据包的报头跟表中某个条件判断语句相匹配,那么后面的语句就将被忽略,不再进行检查。 数据包只有在跟第一个判断条件不匹配时,它才被交给ACL中的下一个条件判断语句进行比较。如果匹配(假设为允许发送),则不管是第一条还是最后一条语句,数据都会立即发送到目的接口。如果所有的ACL判断语句都检测完毕,仍没有匹配的语句出口,则该数据包将视为被拒绝而被丢弃。这里要注意,ACL不能对本路由器产生的数据包进行控制。编辑本段ACL的分类
目前有两种主要的ACL:标准ACL和扩展ACL。其他的还有标准MAC ACL、时间控制ACL、以太协议 ACL 、IPv6 ACL等。 标准的ACL使用 1 ~ 99 以及1300~1999之间的数字作为表号,扩展的ACL使用 100 ~ 199以及2000~2699之间的数字作为表号。 标准ACL可以阻止来自某一网络的所有通信流量,或者允许来自某一特定网络的所有通信流量,或者拒绝某一协议簇(比如IP)的所有通信流量。 扩展ACL比标准ACL提供了更广泛的控制范围。例如,网络管理员如果希望做到“允许外来的Web通信流量通过,拒绝外来的FTP和Telnet等通信流量”,那么,他可以使用扩展ACL来达到目的,标准ACL不能控制这么精确。 在标准与扩展访问控制列表中均要使用表号,而在命名访问控制列表中使用一个字母或数字组合的字符串来代替前面所使用的数字。使用命名访问控制列表可以用来删除某一条特定的控制条目,这样可以让我们在使用过程中方便地进行修改。 在使用命名访问控制列表时,要求路由器的IOS在11.2以上的版本,并且不能以同一名字命名多个ACL,不同类型的ACL也不能使用相同的名字。 随着网络的发展和用户要求的变化,从IOS 12.0开始,思科(CISCO)路由器新增加了一种基于时间的访问列表。通过它,可以根据一天中的不同时间,或者根据一星期中的不同日期,或二者相结合来控制网络数据包的转发。这种基于时间的访问列表,就是在原来的标准访问列表和扩展访问列表中,加入有效的时间范围来更合理有效地控制网络。首先定义一个时间范围,然后在原来的各种访问列表的基础上应用它。 基于时间访问列表的设计中,用time-range 命令来指定时间范围的名称,然后用absolute命令,或者一个或多个periodic命令来具体定义时间范围。[2]