ACL的高级应用

本篇讲一下ACL的一些更高级的运用,包括动态ACL、基于时间ACL、单向流量ACL及自反ACL。

动态ACL

传统的标准ACL和扩展 ACL不能创建动态访问条目。一旦在传统ACL中加入了一个语句,除非手工删除,该语句将一直产生作用。而在动态ACL中,网络管理员可以根据用户认证过程来创建特定的、临时的ACL.注意:CiscoIOS 只支持使用扩展 IP 访问控制列表定义动态ACL。在一个ACL内只能有一条动态规则语句。

动态ACL配置命令

ACL配置:
R2(config)#ip access-list extended csdn //定义ACL名称
R2(config-ext-nacl)#permit tcp any host 12.1.1.2 eq 23 //允许任何IPtelnet到R2.关键语句,用于认证用户.
R2(config-ext-nacl)#permit tcp any host 12.1.1.2 eq 3001 //允许任何IPtelnet到R2.关键语句,用户管理设备.
R2(config-ext-nacl)#dynamic ccie timeout 60 permit iphost 12.1.1.1 host 23.1.1.3 //当用户登录成功后激活的的语句.timeout 60,是绝对超时时间,以分钟为单位,也就是说这条语句最多存活一小时。后面还有一个叫作闲时超时时间。
本地用户数据库与VTY配置配置:
R2(config)#username yelsj password kaiche //定义用户名和密码
R2(config)#line vty 0 4 //进入0,1,2,3的VTY链路用于认证
R2(config-line)#login local //使用本地用户数据库来认证
R2(config-line)#autocommand access-enable host timeout10 //关键命令.设置vty0,1,2,3链路作用用户认证链路,自动建立动态ACL。
timeout 10 指的是空闲超时时间。就是当激活后,用户没有流量经过,这个条动态的语句就会失效,需要重新激活。如果不加上host。那么产生的ACL就是一个网段的。加上host就是单个主机的。换一句话说就是当一个网段内的一个主机认证后,其他主机都不需要认证了,如果不加上host的话。设置了动态 ACL 以后,所有的 telnet 请求都会被路由器认为是要开启一个动态 ACL 条目,当用户被认证之后,telnet会话很快就会被关闭。这就带来了一个问题:网络管理员将不再能 够通过 telnet 对路由器进行管理。解决上述问题的方法是在一部分 VTY 线路上使用 rotary 命令开启其他的 telnet端口, 例如:“rotary 1"命令开启 3001 端口、 “rotary 2"命令开启 3002 端口,依此类推。
R2(config)#line vty 5 10
R2(config-line)#login local
R2(config-line)#rotary 1

动态ACL实例配置


如图所示,配置好OSPF,使得全网可以通信。
要求:

  1. 在R1上配置动态ACL使得只有PC1与PC2先telnetR1之后才可以正常访问R5。
  2. 设置绝对时间5分钟,闲时时间1分钟。
  3. 设置PC3可以直接telnet R1。

配置:
配置前,先检查是否可以实现PC1,PC2ping通R5。

先配置动态ACL,使得PC1与PC2无法ping通R5。
R1:
R1(config)#access-list 101 permit tcp any host 192.168.1.254 eq 23
R1(config)# access-list 101 dynamic ccie permit ip 192.168.1.0 0.0.0.255 host 172.16.1.1
配置完成,查看PC1pingR5,无法ping通。

配置本地用户数据库和VTY配置。设置用户名为cce,密码为ccie。
R1(config)#username ccie password ccie
R1(config)#line vty 0 4
R1(config-line)#login local
R1(config-line)#autocommand access-enable host
PC1telnetR1,再测试PC1是否能ping通R5。结果成功ping通。


这里来查看R1的access-list,发现只是PC1有了条目,若是相PC2也能ping通R5,则PC2也需先telnetR1才能ping通R5。
PC2成功telnet后ping通R5


再来查看R1access-list,发现多了一条PC2的。

需求2添加了绝对时间和闲时时间,那么我们就需要对ACL进行一定的修改,具体修改如下。
R1(config)# access-list 101 dynamic ccie time 5 permit ip 192.168.1.0 0.0.0.255 host 172.16.1.1(绝对时间)
R1(config-line)#autocommand access-enable host time 1 (闲时时间)
绝对时间指的是,这一次的telnet之后,只需要这段时间内通信,时间一到自动断网。
闲时时间指的是,telnet之后,若用户一定时间内没通信,则自动端午,理论上闲时时间低于绝对时间。
可以看得,修改之后的,这里后面多了时间,若是没通信,一分钟后自动断网。

依照上面的理论,理论上我们telnet他就直接去匹配ACL了,那我们想去真正的telnet控制R1呢,这里我们就讲到一个端口的映射问题,我们前面定义 line vty 0 4,这里有五个端口,都是telnet匹配ACL的。那么假设有这五个端口都被占用,我们再次telnet的话就是控制R1了。这里就不做测试,我们这里讲端口映射来解决问题。
配置:
R2(config)#line vty 5 10
R2(config-line)#login local
R2(config-line)#rotary 1

当然这里我们需要添加一条ACL,不然无法通过3001口。
R1(config)#access-list 101 permit tcp any any eq 3001

用PC3测试,很明显,但我们不加端口号,它执行的就是去匹配ACL的,若是加了端口号,访问的就是控制R1了。区别就在于我们前面定义的端口。

基于时间的ACL

基于时间的 ACL 是对传统 ACL 的一种功能增强,它在传统扩展 ACL 中加入了时间范围以增强ACL 的控制能力。基于时间的 ACL 可以根据一天中的不同时间,或者根据一星期中的不同日期,或二者相结合的方式来控制数据包的转发。CiscoIOS 只支持使用扩展 IP 访问控制列表定义基于时间的 ACL。

基于时间的ACL配置命令

时间配置:
在日常生活中,运用这种基于时间的ACL时要注意设备时间。并不是我们生活时间。
R2#show clock //在R2上查看设备时间。
时间可以通过我们的手动修改,也可以使用NTP服务器来同步我们的设备时间。这里只介绍手动修改。
R2(config)#clock timezone UTC 8 //配置时区东八区
R2#clock set 15:48:00 AUG 4 2016 //设置时间。 注意设置时间时用使用24小时制,格式分别为: hh:mm:ss 时间 AUG 月份 4 日 2016
年份,其中月份使用英文缩写。这里不必担心打错。因为如果月份打错了。后面是没有命令可跟的,如下:
一月:January 简写Jan.
二月:February 简写Feb.
三月:March 简写Mar.
四月:April 简写Apr.
五月:May 简写May.
六月:June 简写Jun.
七月:July 简写Jul.
八月:August 简写Aug.
九月:September 简写Sep. / Sept.
十月:October 简写Oct.
十一月:November 简写Nov.
十二月:December 简写Dec.
ACL配置:
R2(config)#time-range csdn //定义Time-range策略名称,这个Time-range是一个时间策略,可以在这个Time-range里面定义一些准确时间,或者时间段。一次性的,或者周期性的。
R2(config-time-range)#absolute start 16:00 4 AUG 2016 end 17:00 4 AUG 2016 //定义一个绝对时间(一次性):开始时间为2016年8月4日16点,结束时间为2016年8月4日17点。这个时间可以被一个ACL里的某一个条目调用,那就意味着这个条目会在这个规定时间内生效其他时间均为失效。
R2(config-time-range)#absolute start 16:00 4 AUG 2016//定义一个绝对时间(一次性):开始时间为2016年8月4日16点。这个时间可以被
一个ACL里的某一个条目调用,那就意味着这个条目会在这个规定时间点生效。往后的时间也会一直生效。
R2(config-time-range)#absolute end 17:00 4 AUG 2016//定义一个绝对时间(一次性):结束时间为2016年8月4日17点。这个时间可以被
一个ACL里的某一个条目调用,那就意味着这个条目会立刻生效,在这个时间点过后会永久失效。
注意:在一个time-range策略里。absolute绝对时间只有一条。也就是说。当你打多条absolute命令时,只有最新打的那条会生效(覆盖前面打的命令)。
R2(config-time-range)#periodic monday wednesday friday 9:00 to 18:00 //定义一个周期性的时间:每周一,周三,周五,上午9点到下午6点。这个时间可以被一个ACL里的某一个条目调用,那就意味着这个条目在这时间内这个条目会生效,其余时间都为失效状态。而这个生效时间时周期性的。
R2(config-time-range)#periodic daily //每天(星期一到星期日)
R2(config-time-range)#periodic weekdays //工作日(星期一到星期五)
R2(config-time-range)#periodic weekend //周末(周六,周日)
注意:一个time-range下只能有一个absolute语句,但可以有多条periodic语句,如果在一个time-range下即有absolute语句,又有periodic语句,则先匹配absolute语句。
R2(config)#ip access-list extended ccie //建立名字为ccie的扩展访问控制列表
R2(config-ext-nacl)#permit ip host 12.1.1.1 host 23.1.1.3 time-range yels-j //允许注意12.1.1.1到23.1.1.3 并且调用time-range为yels-j的策略使得这个时间段内。这个规则生效。
R2(config)#interface f0/0 //进入f0/0接口
R2(config-if)#ip access-group ccie in //在这个接口的in方向调用名字为ccie的ACL

基于时间的ACL的配置实例


按要求1来说是设置time-range 周一周五的9:00-18:00,和周末的全天。允许访问网络,但是我这里就反则来理解,除了周一到周五的18:01-23.59,0:00-8:59两个时间段deny,其余可以上网。
所以先配置time-range
R3(config)#time-range sbsj
R3(config-time-range)# periodic weekdays 18:01 to 23:59
R3(config-time-range)#periodic weekdays 0:00 to 8:59
再配置ACL,接口调用ACL。
R3(config)#ip access-list extended swkz
R3(config-ext-nacl)#10 deny ip host 172.16.1.1 192.168.1.0 0.0.0.255 time-range sbsj
R3(config-ext-nacl)#20 permit ip any any
R3(config)#interface f0/0
R3(config-if)#ip access-group swkz in

需求2是指的2020.3.6下午六点开始,使得取消禁止R5对R7的访问。这里一样,我们先设置time-range,再配置ACL。
R3(config)#time-range qxkz
R3(config-time-range)# absolute start 18:00 06 March 2020
配置ACL,需注意这里配置与需求1配置在一起要注意ACL的先后顺序,这里是要优先。
R3(config-ext-nacl)# 5 permit ip host 172.16.1.1 host 192.168.1.3 time-range qxkz

测试查看
先查看time-range

将时间设置在2020.03.05的15:30:30.(上班时间)
查看是否R5能够访问192.168.1.0网段。成功通信。



将时间设置在2020.03.05的19:30:30.(下班时间)
查看是否R5能够访问192.168.1.0网段。通信失败。


最后将时间设置在2020.03.06的19:30:30.(下班时间)
查看是否R5能够访问192.168.1.3(R7)。通信成功。


ACL established

在扩展 ACL语句的最后,我们可以加上 established参数,它可以用来作 TCP的单向访问控制。扩展Acl中的established可以根据数据 段中是否设置了ACK位来对分组进行过滤(没有ACK位的不符合established条件)

ACL established 配置命令

ACL配置:
R2(config)#ip access-list extended ccie //定义扩展ACL名字
R2(config-ext-nacl)#permit tcp host 23.1.1.3 host12.1.1.1 established //允许R3对R1的TCP回包
R2(config)#interface f0/1 //进入接口调用,注意是F0/1
R2(config-if)#ip access-group yels-j in //调用ACL

ACL established 配置实例


要求:在R2上配置,实现PC1能够单向的访问R5的ICMP服务,R5能够单向的访问PC1的远程登录服务。PC1能够单向的访问R5的http服务。

R2:
配置ACL:
R2(config)#ip access-list extended cjc
R2(config-ext-nacl)# permit icmp host 192.168.1.1 host 172.16.1.1 echo //echo也能够进行单向访问
R2(config-ext-nacl)# permit ospf any any
R2(config-ext-nacl)# permit tcp host 192.168.1.1 eq telnet host 172.16.1.1 established
R2(config-ext-nacl)# permit tcp host 192.168.1.1 host 172.16.1.1 eq 80
接口调用ACL
R2(config)#interface f0/1
R2(config-if)#ip access-group cjc in

配置完成,查看效果。
PC1pingR5,R5pingPC1。结果PC1可以访问R5,R5无法访问PC1。

PC1telnetR5,R5telnetPC1。结果PC1无法telnetR5,R5则可以telnetPC1。
查看之前先配置一下远程登录设置。
PC1(config)#username ccie password ccie
PC1(config)#line vty 0 4
PC1(config-line)#login local
R5(config)#username ccie password ccie
R5(config)#line vty 0 4
R5(config-line)#login local

PC1telnetR5的80服务,R5telnetPC1的80服务。结果是PC1可以访问R5的80服务,R5则无法访问PC1的80服务。查看之前需开启路由器HTTP服务。ip http server (全局模式下)

自反ACL

自反 ACL 提供了一种真正意义上的单向访问控制,它的工作原理是:当内部网络发起一个会话(基于 TCP、UDP 都可以)并且将数据发送给外部网络时,反射 ACL 就被触发并且生成一个新的临时条目。如果从外部网络过来的数据流符合临时条目,则允许其进入内部网络,否则禁止其进入内部网络
自反ACL的特点:
自反ACL永远是permit的;
自反ACL允许高层Session信息的IP包过滤;利用自反ACL可以只允许出去的流量,但是阻止从外部网络产生的向内部网络的流量,从而可以更好地保护内部网络;
自反ACL是在有流量产生时(如出方向的流量)临时自动产生的,并且当Session结束时条目就自动删除;
自反ACL不是直接被应用到某个接口下的,而是嵌套在一个扩展命名访问列表下的。
自反 ACL 允许最近出站数据包的目的地发出的应答流量回到该出站数据包的源地址。这样您可以更加严格地控制哪些流量能进入您的网络,并提升了扩展访问列表的能力。
自反 ACL 不能直接应用到接口,而是“嵌套”在接口所使用的扩展命名 IP ACL 中
自反 ACL 仅可在扩展命名 IP ACL 中定义。自反 ACL 不能在编号 ACL 或标准命名 ACL 中定义,也不能在其它协议 ACL 中定义。自反 ACL 可以与其它标准和静态扩展 ACL 一同使用。

自反ACL配置命令

ACL配置:
R2(config)#ip access-list extended R1-R3
R2(config-ext-nacl)#permit ip any any reflect ccie //允许R1到R3的所有流量,并且定义反射的名字叫做ccie
R2(config)#ip access-list extended R3-R1
R2(config-ext-nacl)#evaluate ccie //评估名字为ccie 的反射。
R2(config)#interface f0/0
R2(config-if)#ip access-group R1-R3 in
R2(config-if)#ip access-group R3-R1out

自反 配置实例


配置:
第一步,配置IP地址,再配置路由协议eigrp。使得全网通信。
R1(config)#int f0/0
R1(config-if)#ip address 202.100.1.1 255.255.255.0
R1(config)#int loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1(config)#router eigrp 10
R1(config-router)#network 1.1.1.0 0.0.0.255
R1(config-router)#network202.100.1.0 0.0.0.255
R2(config)#int f0/0
R2(config-if)#ip address 202.100.1.2 255.255.255.0
R2(config)#int f0/1
R2(config-if)#ip address 202.100.2.2 255.255.255.0
R2(config)#router eigrp 10
R2(config-router)#network 202.100.2.0 0.0.0.255
R2(config-router)#network202.100.1.0 0.0.0.255
R3(config)#int f0/0
R3(config-if)#ip address 202.100.2.1 255.255.255.0
R3(config)#int loopback 0
R3(config-if)#ip address 3.3.3.3 255.255.255.0
R3(config)#router eigrp 10
R3(config-router)#network 3.3.3.0 0.0.0.255
R3(config-router)#network202.100.2.0 0.0.0.255

第二部,配置DCHP获取,使得R1能通过DHCP获取地址。

R3(config)#ip dhcp pool cjc
R3(dhcp-config)#network 202.100.1.0 255.255.255.0
R3(dhcp-config)#default-router 202.100.1.2
R2(config)#int f0/0
R2(config-if)#ip helper-address 3.3.3.3

第三部,配置DHCP使得R3也能从R1获取DHCP地址

再通过配置单反ACL,来使得R3无法获取IP地址,
配置命令如下:
R2(config)#ip access-list extended R1-R3
R2(config-ext-nacl)# 10 permit udp any eq bootpc any eq bootps reflect ccie
R2(config)#ip access-list extended R3-R1
R2(config-ext-nacl)#evaluate ccie 。
R2(config)#interface f0/0
R2(config-if)#ip access-group R1-R3 in
R2(config-if)#ip access-group R3-R1 out

结尾

到此,ACL的讲解就结束了,ACL的运用极为广泛,在于我们对数据包流量的需求问题。面对不同的问题运用不同的ACL更加方便以使用,最后感谢观看。

网络(十三)之ACL的高级应用相关推荐

  1. 基本ACL与高级ACL

    ACL:Acess Control List,即访问控制列表.这张表中包含了匹配关系.条件和查询语句,表只是一个框架结构,其目的是为了对某种访问进行控制. 信息点间通信,内外网络的通信都是企业网络中必 ...

  2. 访问控制列表之基本ACL、高级ACL 、 高级ACL之ICMP、高级ACL之telnet

    在学习ACL(访问控制列表)之前首先要理解一下三个问题: 一.ACL的作用,以及不同类型的ACL的区别是什么? ACL的作用是:匹配感兴趣的数据包. ACL分为基本ACL和 高级ACL, 基本ACL, ...

  3. 网络基础之ACL(访问控制列表)

    本章目录 一.概念 1.ACL 2.ACL在接口上的应用 3.ACL的工作原理 4.ACL的作用 5.ACL种类 6.ACL的应用原则和规则 二.配置实验 一.概念 1.ACL ACL(Access ...

  4. Oracle入门(十三C)之高级查询(下)

    上章:Oracle入门(十三B)之高级查询(上) 四.常见组函数 SUM.AVG.COUNT.MIN.MAX 分组函数忽略null 值. 不能在WHERE 子句中使用组函数. MIN 和MAX 可用于 ...

  5. Oracle入门(十三B)之高级查询(上)

    下章:Oracle入门(十三C)之高级查询(下) 一.多表格查询 (1)定义 将两个或两个以上的表格,按照一定的关系连接起来进行查询. (2)多表格查询分类 连接查询 嵌套查询 集合查询 二.连接查询 ...

  6. 基本ACL和高级ACL

    ACL的分类 ACL的类型 编号范围 规则制定的主要依据 基本ACL 2000~2999 报文的源IP地址等信息 高级ACL 3000~3999 报文的源IP地址.目的IP地址.报文优先级.IP承载的 ...

  7. c语言遍历文件内容_跨平台的C语言网络框架库acl

    acl概述 acl (全称Advanced C Library)是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功 ...

  8. 华为ensp.访问控制列表(ACL):关于基本ACL和高级ACL————访问的代码基础讲解(允许或禁止访问)

    ACL 目的:为了在设备进行通信时,保障传输的数据足够的安全可靠和网络的型能稳定. 访问控制列表((ACL)Access Coutrol List): 通过定义一些规则,根据规则对数据包进行分类,并针 ...

  9. ACL原理与类型、基本ACL与高级ACL

    背景 在一些企业网络规划时,为了企业业务安全,要求不同不问对服务器有不同的权限 例如:要求PC1不能访问server.PC2允许访问Server,允许其他流量互通 现网中,实现流量访问控制的方法有两种 ...

最新文章

  1. 计算机网络第五章:运输层
  2. 6.13spring随笔
  3. Django从理论到实战(part52)--登录、注销及登录限制
  4. linux设备模型之kset/kobj/ktype分析
  5. js调用android本地java代码
  6. 【车间调度】基于matlab粒子群算法求解车间生产调度问题【含Matlab源码 245期】
  7. linux嵌入式面试300问,经典嵌入式Linux面试题3问
  8. java中display1_关于displaytag1.1的两种分页
  9. H264码流处理详解
  10. 1109 Group Photo (25分)/1055 集体照 (25分)后三个测试点
  11. 比较全的Struts介绍04
  12. 计算机的组成部件有,电脑的组成部件
  13. 给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐
  14. 我的周记3——“雨打梨花深闭门,忘了青春,误了青春”
  15. python小工具:文件批量改名
  16. java406错误怎么解决_Spring MVC Rest服务 返回json报406错误的解决办法
  17. 模态对话框 和 非模态对话框的区别
  18. 最新 2022百威英博AI面试真题题库
  19. 汤家凤强化五套卷(二)复盘
  20. 【Android】接入有米广告SDK

热门文章

  1. 分割网络-ExtremeC3Net(轻量级)
  2. 《Molecular Plant》新思路:比较转录组+比较基因组研究小麦高效氮利用分子机制
  3. 南邮-2043(有才华的罗老师)
  4. c++: Logger日志信息
  5. 考研经验贴 吉大调剂上岸
  6. 2017年应届生落户上海流程简介
  7. 如何开展数据安全风险评估(参考)
  8. EditTextand TextView
  9. liferay的几个配置
  10. SQL 取数值小数后两位,但不四舍五入。