4.2 访问控制技术
访问控制是明确什么角色的用户能访问什么类型的资源。使用访问控制可以防止用户对计算资源、通信资源或信息资源等进行未授权访问,是一种针对越权使用资源的防御措施。未授权访问包括未经授权的使用、泄露、修改、销毁信息,以及发布指令等,在访问控制中存在以下几个概念:
(1)客体(object):规定需要保护的资源,又称为目标(target)。
(2)主体(subject):是一个主动的实体,规定可以访问该资源的实体(通常指用户或代表用户执行的程序),又称为发起者(initiator)。
(3)授权(authorization):规定可对该资源执行的动作,如读、写、执行或拒绝访问。
访问控制的基本模型如图4-2所示。访问是主体对客体实施操作的能力,以某种方式限制或授予主体的这种能力。授权是指主体经过系统鉴别后,根据主体的访问请求来决定对目标执行动作的权限。在实际网络配置中,主要是在核心交换机和防火墙两个位置配置访问控制策略。
图4-2 访问控制的基本模型
4.2.1 ACL介绍
1.ACL分类
ACL 是一种基于包过滤的控制技术,其在路由器、三层交换机中被广泛采用。ACL对数据包的源地址、目的地址、端口号及协议号等进行检查,并根据数据包是否匹配ACL规定的条件来决定是否允许数据包通过。
华为将ACL分为基本ACL和高级ACL。
(1)基本ACL(2000~2999):只能匹配源IP地址。
(2)高级ACL(3000~3999):可以匹配源IP地址、目标IP地址、源端口、目标端口等三层和四层的字段。
思科将ACL分为标准ACL和扩展ACL。
(1)标准ACL(1~99或1300~1999):匹配源地址的所有IP数据包。
(2)扩展 ACL(100~199 或 2000~2699):匹配源地址和目标地址、源端口和目标端口等字段。
本章以思科ACL来示例。
2.ACL配置原则
ACL配置原则如下:
● 每个接口、协议、方向只允许有一个ACL。
● ACL语句顺序控制着检测顺序,因此最具体的语句位于列表顶部。
● ACL隐式拒绝所有数据,因此每个访问控制列表中至少包含一条permit语句。
● 在全局范围内创建ACL,然后将其应用到入站流量或出站流量的接口。
● ACL可过滤经过路由器的流量或往返路由器的流量,具体取决于其应用方式。
● 将ACL置于网络中时:扩展ACL应靠近源地址,标准ACL应靠近目的地址。
4.2.2 标准访问控制列表
标准 IP 访问控制列表通过查看分组 IP 地址来过滤网络数据流。创建标准 IP 访问控制列表时,使用访问控制列表编号1~99或1300~1999(扩展范围)。通常使用编号来区分访问控制列表的类型。根据创建访问控制列表时使用的编号,路由器知道输入时应使用什么语法。使用编号 1~99 或 1300~1999,告诉路由器要创建一个标准访问控制列表,而路由器只将源IP地址用作测试条件。标准ACL处理数据包的流程如图4-3所示。
图4-3 标准ACL处理数据包的流程图
1)配置
Router(config)#access-list access-list-number{permit|deny}source [mask]
Router(config-if)#ip access-group access-list-number {in|out}
2)实验及其说明
技术部不允许访问财务部,办公室允许访问财务部,如图4-4所示。
图4-4 实验配置
3)实验配置
技术部不允许访问财务部:access-list 1 deny 10.2.1.0 0.0.0.255。
办公室允许访问财务部:access-list 1 permit 10.2.3.0 0.0.0.255。
在核心交换机F0/1接口的vlan下配置ip access-group 1 out。
4.2.3 扩展访问控制列表
前面介绍过一个标准IP访问控制列表。标准IP访问控制列表仅仅过滤源地址,允许用户访问一种网络服务的同时,禁止访问其他服务。换句话说,使用标准访问控制列表时,无法同时根据源地址和目的地址来做出决策,因为它只根据源地址做出决策。但扩展访问控制列表可以解决这个问题,因为在扩展访问控制列表中,可指定源地址、目的地址、协议及标识上层协议或应用程序的端口号,使用扩展访问控制列表可在允许用户访问某个 LAN 的同时,禁止访问其中的特定主机、主机提供的特定服务等。扩展 ACL 数据访问流程如图4-5所示。
图4-5 扩展ACL数据访问流程图
1)配置
Router(config)#access-list access-list-number {permit|deny} protocol source source-wildcard [operator port] destination destination-wildcard [operator port] [established] [log]
Router(config-if)#ip access-group access-list-number {in|out}
2)实验及其说明
如图4-6所示,技术部与财务部不能相互访问,保障了财务部的安全;技术部、财务部不能访问办公室,但办公室可以访问技术部和财务部。
图4-6 实验配置
3)实验配置
目的技术部:财务部不允许访问技术部,办公室可以访问技术部。
access-list 110 deny ip 10.2.2.0 0.0.0.255 10.2.1.0 0.0.0.255
access-list 110 permit ip 10.2.3.0 0.0.0.255 10.2.1.0 0.0.0.255
目的财务部:技术部不允许访问财务部,办公室可以访问财务部。
access-list 111 deny ip 10.2.1.0 0.0.0.255 10.2.2.0 0.0.0.255
access-list 111 permit ip 10.2.3.0 0.0.0.255 10.2.2.0 0.0.0.255
目的办公室:技术部、财务部不能访问办公室,但允许办公室访问技术部、财务部的流量回包(采用ping)。
access-list 112 permit icmp 10.2.1.0 0.0.0.255 10.2.3.0 0.0.0.255 echo-reply
access-list 112 permit icmp 10.2.2.0 0.0.0.255 10.2.3.0 0.0.0.255 echo-reply
access-list 112 deny ip 10.2.1.0 0.0.0.255 10.2.3.0 0.0.0.255
access-list 112 deny ip 10.2.2.0 0.0.0.255 10.2.3.0 0.0.0.255
分别在 F0/0、F0/1、F0/2 接口的 VLAN 下应用 ip access-group 110 out、ip access-group 111 out、ip access-group 112 out。
4.2.4 其他访问控制列表
1.命名访问控制列表
命名访问控制列表可以是标准的,也可以是扩展的,并非一种新类型。这里之所以专门列出它,是因为这种访问控制列表的创建和引用方式不同于标准访问控制列表和扩展访问控制列表,但其功能是相同的。如果设置 ACL 的规则比较多,则应该使用基于名称的访问控制列表进行管理,这样可以减轻很多后期维护工作,方便随时调整 ACL 规则。比如删除一条规则或插入一条规则,在标准访问控制列表和扩展访问列表中无法直接使用命令实现,但在命名的访问控制列表中则很容易实现。下面举例说明:
在路由器中存在名称为mingzi的访问控制列表,内容如下:
ip access-list extended mingzi
deny ip 10.2.2.0 0.0.0.255 10.2.1.0 0.0.0.255
permit ip 10.2.3.0 0.0.0.255 10.2.1.0 0.0.0.255
如希望对命名的访问控制列表的条目进行增加或删除,则首先执行 show access-lists命令,查看列表条目的编号,如图4-7所示。
图4-7 访问控制列表的增加与删除
如果想在mingzi访问控制列表的permit 10.2.3.0 0.0.0.255前增加一条permit 10.1.1.0 0.0.0.255,则在全局模式下进入访问控制列表名字配置模式,然后添加编号为 15 的条目,命令如下:
执行完成后,再执行 show access-lists 命令,如图 4-8 所示,可以看到已添加编号为15的新条目。
图4-8 执行结果
同理,如要想删除编号为 15 的条目,则在全局模式下进入访问控制列表的 test 配置模式,然后删除编号为15的条目,执行命令如下:
2.反向访问控制列表
反向访问控制列表属于 ACL 的一种高级应用,它可以有效地防范病毒。通过配置反向ACL可以保证A、B两个网段的计算机互相ping,A可以ping通B而B不能ping通A。
在前面的扩展访问控制列表实验中,目的办公室—技术部、财务部不能访问办公室,但允许办公室访问技术部、财务部的流量回包。
access-list 112 permit icmp 10.2.1.0 0.0.0.255 10.2.3.0 0.0.0.255 echo-reply
access-list 112 permit icmp 10.2.2.0 0.0.0.255 10.2.3.0 0.0.0.255 echo-reply
此技术就是反向访问控制列表,此时,10.2.1.0/24 网段的主机不能直接发起 ping 命令到 10.2.3.0/24 网段,但是 10.2.3.0/24 网段的主机发起 ping 命令的回包可以返回。在TCP 协议中,使用established 参数,access-list 112 permit tcp 10.2.1.0 0.0.0.255 10.2.3.0 0.0.0.255 established。此应用经常被用在网站中,允许互联网访问网站,但不允许网站主动访问互联网。
3.基于时间的访问控制列表
基于时间的访问控制列表,即定义一个时间段,在此时间段内允许还是拒绝。举例说明,在工作时间内,10.2.3.2可以访问10.2.1.2的telnet服务,可以参考如下步骤进行配置。
(1)定义时间段及时间范围。
(2)ACL自身的配置,即将详细的规则添加到ACL中。
(3)宣告ACL,将设置好的ACL添加到相应的端口中。
基于配置步骤,可以在思科路由器上配置,命令如下。
4.2.5 实验
本章开头的实验主要配置如下:
1)需要说明
1、2 条必须在核心交换机上配置,3、4 条既可以在核心交换机上配置,也可以在路由器上配置。通常在路由器上配置。
2)核心交换机配置
(1)技术部与财务部不能相互访问,保障财务部的安全。
(2)技术部、财务部不能访问办公室,但办公室可以访问技术部和财务部。
① 目的技术部:财务部不允许访问技术部,但办公室可以访问技术部:
access-list 110 deny ip 10.2.2.0 0.0.0.255 10.2.1.0 0.0.0.255
access-list 110 permit ip 10.2.3.0 0.0.0.255 10.2.1.0 0.0.0.255
② 目的财务部:技术部不允许访问财务部,但办公室可以访问财务部:
access-list 111 deny ip 10.2.1.0 0.0.0.255 10.2.2.0 0.0.0.255
access-list 111 permit ip 10.2.3.0 0.0.0.255 10.2.2.0 0.0.0.255
③ 目的办公室:技术部、财务部不能访问办公室,但允许办公室访问技术部、财务部的流量回包(采用ping):
access-list 112 permit icmp 10.2.1.0 0.0.0.255 10.2.3.0 0.0.0.255 echo-reply
access-list 112 permit icmp 10.2.2.0 0.0.0.255 10.2.3.0 0.0.0.255 echo-reply
access-list 112 deny ip 10.2.1.0 0.0.0.255 10.2.3.0 0.0.0.255
access-list 112 deny ip 10.2.2.0 0.0.0.255 10.2.3.0 0.0.0.255
分别在 F0/0、F0/1、F0/2 接口的 VLAN 下应用 ip access-group 110 out、ip access-group 111 out、ip access-group 112 out。
3)路由器配置
(1)仅允许办公室可以访问网站服务器的 3389 端口,便于远程管理,其他部门不允许访问。
(2)内网所有IP仅能访问网站服务器的80端口,其他端口关闭。
① 允许内网所有IP访问网站服务器的80端口:
access-list 110 permit tcp any host 10.1.2.2 eq www
② 允许办公室访问网站服务器的3389端口:
access-list 110 permit tcp 10.2.3.0 0.0.0.255 host 10.1.2.2 eq 3389
③ 其他流量全部被拒绝:
access-list 110 deny ip any any
在路由器F0/2上应用访问控制列表:
ip access-group 110 out