一、ACL概述
ACL (Access Control List,访问控制列表)是一系列运用到路由器接口的指令列表。这些指令告诉路由器接收哪些数据包、拒绝哪些数据包,接收或者拒绝根据一定的规则进行,如源地址、目标地址、端口号等。ACL使得用户能够管理数据流,检测特定的数据包。
路由器将根据ACL中指定的条件,对经过路由器端口的数据包进行检査。ACL可以基于所有的Routed Protocols (被路由协议,如IP、IPX等)对经过路由器的数据包进行过滤。ACL在路由器的端口过滤数据流,决定是否转发或者阻止数据包。ACL应该根据路由器的端口所允许的每个协议来制定,如果需要控制流经某个端口的所有数据流,就需要为该端口允许的每一个协议分别创建ACL。例如,如果端口被配置为允许IP、AppleTalk和IPX协议的数据流,那么就需要创建至少3个ACL, 本文中仅讨论IP的访问控制列表。针对IP协议,在路由器的每一个端口,可以创建两个ACL:—个用于过滤进入(inbound)端口的数据流,另一个用于过滤流出(outboimd)端口的数据流。
顺序执行:—个ACL列表中可以包含多个ACL指令,ACL指令的放置顺序很重要。当路由器在决定是否转发或者阻止数据包的时候,Cisco的IOS软件,按照ACL中指令的顺序依次检査数据包是否满足某一个指令条件。当检测到某个指令条件满足的时候,就执行该指令规定的动作,并且不会再检测后面的指令条件。
ACL作用:
* 限制网络流量,提高网络性能。
* 提供数据流控制。
* 为网络访问提供基本的安全层。
二、ACL 类型
- 标准ACL: access-list-number编号1~99之间的整数,只针对源地址进行过滤。
- 扩展ACL: access-list-number编号100~199之间的整数,可以同时使用源地址和目标地址作为过滤条件,还可以针对不同的协议、协议的特征、端口号、时间范围等过滤。可以更加细微的控制通信量。
- 动态ACL
- 自反ACL
- 基于时间的ACL
三、标准ACL
3.1 通配符掩码
使用通配符掩码与源或目标地址一起分辨匹配的地址范围。
掩码位匹配含义:设置为“1”表示忽略IP地址中对应位(IP取0或1都可以匹配);设置为“0”表示IP地址中对应位必须精确匹配。
例如:(1)192.168.1.0 0.0.0.255 匹配的是192.168.1.0~192.168.1.255
(2)192.168.1.0 0.0.0.254 匹配192.168.1.0网段中所有偶数IP
(3)192.168.1.1 0.0.0.254 匹配192.168.1.0网段中所有奇数IP
any关键字: 代替地址掩码对0.0.0.0 255.255.255.255,匹配任何IP
host关键字: 代替通配符掩码0.0.0.0,精确匹配某个IP。例如:要实现匹配IP地址192.168.1.2,则可以写成192.168.1.2 0.0.0.0或者写成host 192.168.1.2。(注:标准ACL中没有通配符掩码默认该掩码为 0.0.0.0,host也可以省略;扩展ACL中通配符 0.0.0.0或 host关键字不可以省略)
3.2 配置标准ACL的方法
3.2.1 配置步骤
配置标准ACL需要两步,一是创建访问控制列表,二是将列表绑定到特定端口。
Step 1 创建ACL
全局模式下配置ACL。
创建标准ACL的基本格式: access-list access-list-number { deny | permit } { 源地址 [ 源地址通配符掩码 ] | any } [ log ]
其中,access-list-number是1~99的ACL编号;deny拒绝,permit允许;log是日志选项,匹配的条目信息显示在控制台上,也可以输出到日志服务器。
例如:在某路由器R3上创建一组ACL配置如下:
R3 (config) #access-list 1 deny 12.1.1.1 拒绝R1的IP地址12.1.1.1,通配符掩码 0.0.0.0 可以省略。
R3 (config) #access-list 1 permit any 允许其余所有IP
注意:访问控制列表最后隐含一条deny any 规则;ACL从上往下匹配,规则顺序不能改变。
Step 2 应用ACL
创建好列表后,要将ACL绑定到每个它想应用的接口才能实现访问控制功能。
例如:将上述列表应用到R3的S1/0接口,配置为:
R3 (config) #interface s1/0
R3 (config-if) #ip access-group 1 in 在接口下调用ACL 1,针对的是从s1/0接口进入路由器R3的流量
3.2.2 编辑修改标准ACL
1)删除ACL
删除编号即可删除ACL。
命令格式:R3 (config) #no access-list 1
2)取消ACL在接口的应用
命令格式:R3 (config) #int s1/0
R3 (config-if) #no ip access-group 1 in
3)编辑ACL
标准ACL不支持插入或删除一行操作,可以将现有ACL拷贝到记事本里修改,然后粘贴到路由器的命令行中。
4)查看ACL
命令格式:R3#show access-lists
R3#show access-lists 1
3.3 配置标准命名ACL的方法
标准命名ACL指使用字符串代替数字来标识ACL。其优点包括:
- 可以在不删除整个ACL情况下修改。
- 字符串直观标识ACL用途。
- 可以配置超过99个标准ACL。
注意:命名不能相同。
创建标准命名ACL格式:Router (config)# ip access-list standard access-list name
例如:
R3 (config)# ip access-list standard deny-R1
R3 (config-std-nac1)#deny 12.1.1.1
R3 (config-std-nac1)#permit any
R3 (config-std-nac1)#exit
R3 (config)#int s1/0
R3 (config-if)#ip access-group deny-R1 in
可局部修改:
1)删除某一句:
R3 (config)# ip access-list standard deny-R1
R3 (config-std-nac1)#no deny 12.1.1.1
2)使用行号删除某一句:
R3 (config)# ip access-list standard deny-R1
R3 (config-std-nac1)#no 20 删除第20行内容
3)删除整个ACL:
R3 (config)#no ip access-list standard deny-R1
3.4 标准ACL放置的位置
- ACL仅对穿越路由器的数据包进行过滤,对本路由器起源的数据包不做过滤(详细案例见《CCNA学习与实验指南》崔北亮著,访问控制列表一章)
- 尽量应用在靠近目标端。
四、扩展ACL
4.1 配置扩展ACL
Step 1 创建扩展ACL
基本格式:access-list access-list-number {deny | permit | remark} 协议类型 source [source-wildcard] [operator operand] [port port-number or name] destination destination-wildcard [operator operand] [port port-number or name] [established]
实例:配置实现拒绝R1去往R3的Telent通信,允许其他服务。
R2 (config) # access-list 100 deny tcp host 12.1.1.1 host 23.1.1.3 eq Telent
R2 (config) # access-list 100 permit ip any any
解释:Telent流量使用的是TCP协议,目标端口23
因此此处拒绝TCP协议,源地址是R1,源端口任意;目标地址R3,目标端口23(配置语句中Telent表示23)。
Step 2 应用ACL
将列表应用于R2的S1/0接口,当数据包进入R2的时候判断,配置为:
R2 (config) # int s1/0
R2 (config) # ip access-group 100 in
4.2 配置扩展命名ACL
类似于标准命名ACL:
ip access-list extended tcp-firewall
4.3 扩展ACL放置的位置
尽量应用在靠近源端,这样可以使一些非法流量尽早丢弃,节省中间设备带宽和CPU资源。
五、反射ACL
5.1 概念
提供真正意义上的单向访问控制。
5.2 应用
六、动态ACL
可以根据用户验证过程创建特定的临时的ACL。
七、基于时间的ACL
来源:CSDN
作者:brave_stone
链接:https://blog.csdn.net/brave_stone/article/details/84205901