访问控制列表

访问控制列表是应用在路由器接口的指令列表,这些指令列表用来告诉路由器哪些数据包可以接收、哪些数据包需要拒绝。

中文名
访问控制列表
外文名
Access Control Lists
简 称
ACL
应用学科
计算机网络安全
目录
1 基本定义
2 功能
3 分类
▪ 标准IP访问列表
▪ 扩展IP访问
▪ 命名的IP访问
▪ 标准IPX访问
▪ 扩展IPX访问
▪ 命名的IPX访问
4 工作原理
▪ 算法
▪ 使用配置
▪ 标准格式
▪ 常见问题
5 调用
6 匹配规则

基本定义
编辑
访问控制是网络安全防范和保护的主要策略,它的主要任务是保证网络资源不被非法使用和访问。它是保证网络安全最重要的核心策略之一。访问控制涉及的技术也比较广,包括入网访问控制、网络权限控制、目录级控制以及属性控制等多种手段。
访问控制列表(Access Control Lists,ACL)是应用在路由器接口的指令列表。这些指令列表用来告诉路由器哪些数据包可以收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、端口号等的特定指示条件来决定。
访问控制列表不但可以起到控制网络流量、流向的作用,而且在很大程度上起到保护网络设备、服务器的关键作用。作为外网进入企业内网的第一道关卡,路由器上的访问控制列表成为保护内网安全的有效手段。
此外,在路由器的许多其他配置任务中都需要使用访问控制列表,如网络地址转换(Network Address Translation,NAT)、按需拨号路由(Dial on Demand Routing,DDR)、路由重分布(Routing Redistribution)、策略路由(Policy-Based Routing,PBR)等很多场合都需要访问控制列表。
访问控制列表从概念上来讲并不复杂,复杂的是对它的配置和使用,许多初学者往往在使用访问控制列表时出现错误。 [1]

功能
编辑
1)限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理。
2)提供对通信流量的控制手段。
3)提供网络访问的基本安全手段。
4)在网络设备接口处,决定哪种类型的通信流量被转发、哪种类型的通信流量被阻塞。

分类
编辑

标准IP访问列表
一个标准IP访问控制列表匹配IP包中的源地址或源地址中的一部分,可对匹配的包采取拒绝或允许两个操作。编号范围是从1到99的访问控制列表是标准IP访问控制列表。

扩展IP访问
扩展IP访问控制列表比标准IP访问控制列表具有更多的匹配项,包括协议类型、源地址、目的地址、源端口、目的端口、建立连接的和IP优先级等。编号范围是从100到199的访问控制列表是扩展IP访问控制列表。

命名的IP访问
所谓命名的IP访问控制列表是以列表名代替列表编号来定义IP访问控制列表,同样包括标准和扩展两种列表,定义过滤的语句与编号方式中相似。

标准IPX访问
标准IPX访问控制列表的编号范围是800-899,它检查IPX源网络号和目的网络号,同样可以检查源地址和目的地址的节点号部分。

扩展IPX访问
扩展IPX访问控制列表在标准IPX访问控制列表的基础上,增加了对IPX报头中以下几个宇段的检查,它们是协议类型、源Socket、目标Socket。扩展IPX访问控制列表的编号范围是900-999。

命名的IPX访问
与命名的IP访问控制列表一样,命名的IPX访问控制列表是使用列表名取代列表编号。从而方便定义和引用列表,同样有标准和扩展之分。 [2]

工作原理
编辑

算法
in的时候判断的是源地址是vlan内的地址,out的时候判断源地址是非本vlan 内的地址。
18、19两个不同的网段,在18网段上加访问列表,
----〉表示能够访问,---X-->;表示不能访问。
ip access-l exte test_liu
deny ip host 10.24.18.5 host 10.24.19.30
permit ip any any


inter vlan 18
ip access-g test_liu in
exit
测试:18.5--X-->19.30
19.30--X-->18.5
访问列表生效,在IN 方向判断源地址18.5属于本VLAN


inter vlan 18
ip access-g test_liu outbr/>exit
测试:18.5---->19.30
19.30---->18.5
访问列表不生效,在OUT方向判断源地址18.5属于本VLAN,不作限制
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ip access-l exte test_liu
deny ip host 10.24.19.30 host 10.24.18.5
permit ip any any

inter vlan 18
ip access-g test_liu in
exit
测试:18.5---->19.30
19.30---->18.5
访问列表不生效,在in方向判断源地址19.30不属于本VLAN,不作限制


使用配置
配置路由器
动态路由已设好,IP地址分配如下:
RouterA f0/0: 10.65.1.2
RouterA f0/1: 10.66.1.2
RouterA s0/1: 10.68.1.2
RouterC s0/0: 10.68.1.1
RouterC s0/1: 10.78.1.2
RouterB s0/0: 10.78.1.1
RouterB s0/1: 10.69.1.2
RouterB f0/0: 10.70.1.2
SWA:10.65.1.8gateway:10.65.1.2
PCA:10.65.1.1gateway:10.65.1.2
PCB:10.66.1.1gateway:10.66.1.2
PCC:10.69.1.1gateway:10.69.1.2
PCD:10.70.1.1gateway:10.70.1.2
PCE:10.65.1.3gateway:10.65.1.2
PCF:10.65.2.1gateway:10.65.1.2
基本基础
先从PCA ping PCD:
[root@PCA @root]#ping 10.70.1.1 (通)
在ROC的s0/0写一个输入的访问控制列表:
RouterC(config)#access-list 1 permit 10.65.1.1 0.0.0.0
RouterC(config)#access-list 1 deny any
RouterC(config)#int s0/0
RouterC(config-if)#ip access-group 1 in
RouterC(config-if)#end
RouterC#sh access-list 1
[root@PCA @root]#ping 10.70.1.1(通)
[root@PCE @root]#ping 10.70.1.1(不通)
[root@PCE @root]#ping 10.66.1.1(通)
[root@PCB @root]#ping 10.70.1.1(不通)
[root@PCD @root]#ping 10.66.1.1(通)
第一个ping,PCA的IP地址是10.65.1.1在访问控制列表access-list 1中是
允许的,所以通。
第二个ping,PCE虽然是65网段,但是access-list 1对10.65.1.1是完全匹配,
所以10.65.1.3的数据包不能通过。
第三个ping,PCE到PCB不通过RouterC的s0/0,所以能通。
第四个ping,PCB的IP地址是10.66.1.1,它是被禁止的,所以不通。
第五个ping,从PCD到PCB的数据包是从RouterC的s0/0口出,不受access-list 1
的控制,所以通。
下面再写一个访问控制列表,先删除原访问控制列表:
RouterC(config)#no access-list 1
RouterC(config-if)#no ip access-group 1 in
二者都可能实现去掉访问列表的目的。前者是从列表号角度删除,后者是从接口
的输入和输出角度删除。
可以通过sh access-list <n> 命令查看访问控制列表。
下面再写一个访问控制列表:
RouterC(config)#access-list 2 deny 10.65.1.1 0.0.0.255
RouterC(config)#access-list 2 permit any
RouterC(config)#int s0/0
RouterC(config-if)#ip access-group 1 out
RouterC(config-if)#end
RouterC#sh access-list 1
这个访问控制列表比上一个访问控制列表有以下几点不同:
⑴ 先deny后permit,
⑵ 禁止的是一个C类
⑶ 一个输出的访问控制
[root@PCA @root]#ping 10.69.1.1(不通)
[root@PCE @root]#ping 10.69.1.1(不通)
[root@PCF @root]#ping 10.69.1.1(通)
[root@PCB @root]#ping 10.69.1.1(通)
因为PCA和PCE的IP地址10.65.1.1、10.65.1.3,在deny范围内,所以不通。
而PCF的IP是10.65.2.1不在10.65.1.0 0.0.0.255范围内,所以能通。
梯形基本
访问控制列表一般是顺序匹配的,梯形结构,下面是一个参考:
RouterC(config)#access-list 4 permit 10.65.1.1
RouterC(config)#access-list 4 deny 10.65.1.0 0.0.0.255
RouterC(config)#access-list 4 permit 10.65.0.0 0.0.255.255
RouterC(config)#access-list 4 deny 10.0.0.0 0.255.255.255
RouterC(config)#access-list 4 permit any
RouterC(config)#int s0/1
RouterC(config-if)#ip access-group 4 out
[root@PCA @root]#ping 10.69.1.1(通)
[root@PCE @root]#ping 10.69.1.1(不通)
[root@PCF @root]#ping 10.69.1.1(通)
[root@PCB @root]#ping 10.69.1.1(不通)

标准格式
列表格式
---- 标准型IP访问列表的格式如下:
  ---- access-list[list number][permit|deny][source address]
  ---- [address][wildcard mask][log]
  ---- 下面解释一下标准型IP访问列表的关键字和参数。首先,在access和list这2个关键字之间必须有一个连字符"-";其次,list number的范围在0~99之间,这表明该access-list语句是一个普通的标准型IP访问列表语句。因为对于Cisco IOS,在0~99之间的数字指示出该访问列表和IP协议有关,所以list number参数具有双重功能: (1)定义访问列表的操作协议; (2)通知IOS在处理access-list语句时,把相同的list number参数作为同一实体对待。正如本文在后面所讨论的,扩展型IP访问列表也是通过list number(范围是100~199之间的数字)而表现其特点的。因此,当运用访问列表时,还需要补充如下重要的规则: 在需要创建访问列表的时候,需要选择适当的list number参数。
允许拒绝
---- 在标准型IP访问列表中,使用permit语句可以使得和访问列表项目匹配的数据包通过接口,而deny语句可以在接口过滤掉和访问列表项目匹配的数据包。source address代表主机的IP地址,利用不同掩码的组合可以指定主机。
  ---- 为了更好地了解IP地址和通配符掩码的作用,这里举一个例子。假设您的公司有一个分支机构,其IP地址为C类的192.46.28.0。在您的公司,每个分支机构都需要通过总部的路由器访问Internet。要实现这点,您就可以使用一个通配符掩码 0.0.0.255。因为C类IP地址的最后一组数字代表主机,把它们都置1即允许总部访问网络上的每一台主机。因此,您的标准型IP访问列表中的access-list语句如下:
  ---- access-list 1 permit 192.46.28.0 0.0.0.255
  ---- 注意,通配符掩码是子网掩码的补充。因此,如果您是网络高手,您可以先确定子网掩码,然后把它转换成可应用的通配符掩码。这里,又可以补充一条访问列表的规则5。
指定地址
---- 如果您想要指定一个特定的主机,可以增加一个通配符掩码0.0.0.0。例如,为了让来自IP地址为192.46.27.7的数据包通过,可以使用下列语句:
  ---- Access-list 1 permit 192.46.27.7 0.0.0.0
  ---- 在Cisco的访问列表中,用户除了使用上述的通配符掩码0.0.0.0来指定特定的主机外,还可以使用"host"这一关键字。例如,为了让来自IP地址为192.46.27.7的数据包可以通过,您可以使用下列语句:
  ---- Access-list 1 permit host 192.46.27.7
  ---- 除了可以利用关键字"host"来代表通配符掩码0.0.0.0外,关键字"any"可以作为源地址的缩写,并代表通配符掩码0.0.0.0 255.255.255.255。例如,如果希望拒绝来自IP地址为192.46.27.8的站点的数据包,可以在访问列表中增加以下语句:
  ---- Access-list 1 deny host 192.46.27.8
  ---- Access-list 1 permit any
  ---- 注意上述2条访问列表语句的次序。第1条语句把来自源地址为192.46.27.8的数据包过滤掉,第2条语句则允许来自任何源地址的数据包通过访问列表作用的接口。如果改变上述语句的次序,那么访问列表将不能够阻止来自源地址为192.46.27.8的数据包通过接口。因为访问列表是按从上到下的次序执行语句的。这样,如果第1条语句是:
  ---- Access-list 1 permit any
  ---- 的话,那么来自任何源地址的数据包都会通过接口。
拒绝列表
---- 在默认情况下,除非明确规定允许通过,访问列表总是阻止或拒绝一切数据包的通过,即实际上在每个访问列表的最后,都隐含有一条"deny any"的语句。假设我们使用了前面创建的标准IP访问列表,从路由器的角度来看,这条语句的实际内容如下:
  ---- access-list 1 deny host 192.46.27.8
  ---- access-list 1 permit any
  ---- access-list 1 deny any
  ---- 在上述例子里面,由于访问列表中第2条语句明确允许任何数据包都通过,所以隐含的拒绝语句不起作用,但实际情况并不总是如此。例如,如果希望来自源地址为192.46.27.8和192.46.27.12的数据包通过路由器的接口,同时阻止其他一切数据包通过,则访问列表的代码如下:
  ---- access-list 1 permit host 192.46.27.8
  ---- access-list 1 permit host 192.46.27.12
  ---- 注意,所有的访问列表会自动在最后包括deny any语句。
  ---- 顺便讨论一下标准型IP访问列表的参数"log",它起日志的作用。一旦访问列表作用于某个接口,那么包括关键字"log"的语句将记录那些满足访问列表中"permit"和"deny"条件的数据包。第一个通过接口并且和访问列表语句匹配的数据包将立即产生一个日志信息。后续的数据包根据记录日志的方式,或者在控制台上显示日志,或者在内存中记录日志。通过Cisco IOS的控制台命令可以选择记录日志方式。

常见问题
(1) “ACL 的最后一条语句都是隐式拒绝语句” 是什么意思?
每个 ACL 的末尾都会自动插入一条隐含的 deny 语句,虽然ACL中看不到这条语句,它仍其作用。隐含的 deny 语句会阻止所有流量,以防不受欢迎的流量意外进入网络。
(2) 配置ACL后为什么没有生效?
在创建访问控制列表之后,必须将其应用到某个接口才可开始生效。ACL 控制的对象是进出接口的流量。 [3]

调用
编辑
不同的模块来调用, 将会起到不同的作用, 这也是ACL应用广泛的根本原因。 常见的调用ACL的模块有: 1. 包过滤: ip access-group;
2. 网络地址转换:NAT;
3. 策略路由: PBR;
4. ip 服务质量: QoS;
5. 动态路由过滤:RIP/OSPF等 。
最常用的是包过滤 ip access-group,配置命令是Router(config-if)# ip access-group acl-num { in | out } 当使用ACL进行报文过滤时,ACL被应用在接口特定的接口,同时关联要部署的方向(In/Out)

匹配规则
编辑
一个端口执行哪条ACL,这需要按照列表中的条件语句执行顺序来判断。如果一个数据包的报头跟表中某个条件判断语句相匹配,那么后面的语句就将被忽略,不再进行检查。数据包只有在跟第一个判断条件不匹配时,它才被交给ACL 中的下一个条件判断语句进行比较。如果匹配(假设为允许发送),则不管是第 一条还是最后一条语句,数据都会立即发送到目的接口。如果所有的ACL判断语句都检测完毕,仍没有匹配的语句出口,则该数据包将视为被拒绝而被丢弃(隐含拒绝: deny any )。这里要注意,ACL不能对本身产生的数据包进行控制。
参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值