王 格
(湖北国土资源职业学院 湖北 武汉 430090)
随着网络的飞速发展,网络安全和网络服务质量问题日益突出。在网络配置和应用中,部分场景需要对某些特定的用户、流量、服务、路由等因素进行控制或者选择过滤,从而达到预期安全策略,保证网络安全和可靠的网络服务质量[1]。在实现安全控制和选择过滤的过程中,访问控制列表(access control list,ACL)是一项紧密关联,且被经常使用到的技术。本文结合学校华为信息与网络技术学院建设和计算机网络建设与运维“1+X”制度试点工作,将详细介绍ACL的作用、分类以及工作机制等,并基于虚拟仿真平台(enterprise network simulation platform,ENSP)环境,将ACL在四大典型场景(网络地址转换,服务访问控制,路由策略,策略路由)的应用进行设计与实现[2]。
ACL是一个通过配置一系列匹配条件(报文的源地址、目的地址、端口号等),实现对经过路由器的报文及路由进行判断、分类和过滤的工具。它是由一系列permit(允许)或deny(拒绝)语句组成的有序规则列表。
根据编号的不同,ACL可以分为基本ACL(编号范围为2000~2999)、高级ACL(编号范围为3000~3999)、二层ACL(编号范围为4000~4999)、用户自定义ACL(编号范围为5000~5999)、用户ACL(编号范围为5000~5999)五大类。其中,基本ACL和高级ACL应用较多[3]。
基本ACL仅仅只能将数据包的源地址(从哪里来)作为匹配或过滤标准,即基本ACL只能实现对数据包的粗略控制。其语法格式为:rule perimit/deny source网段(或IP)通配符,其中通配符中的0表示严格匹配,1表示任意。由于基本ACL只能过滤源IP,为了不影响源主机的其他通信需求,一般将基本ACL部署在离目标端比较近的路由器上。
高级ACL可以将数据包的源地址(从哪里来)、目的地址(到哪里去)、协议类型(如端口号)及应用类型(做什么)等因素作为匹配或过滤标准,即高级ACL可以实现对数据包更加精确的控制。其语法格式为:rule perimit/deny协议(tcp/udp/icmp/ip)source网段(或IP)通配符destination网段(或IP)通配符destination-port eq端口。由于高级ACL可以精准定位某一类数据流,为了避免无效的流量占用网段带宽等资源,一般将高级ACL部署在离源端比较近的路由器上。
ACL一般是先配置规则,最后在路由器的接口上应用生效。不管是基本ACL还是高级ACL都可以选择应用部署在数据包进入路由器的方向(inbound),或数据包离开路由器的方向(outbound)[4]。
ACL匹配工作流程如图1所示。ACL的工作原则是自上而下顺序处理,直到匹配到相应规则,然后执行拒绝或允许操作,且一旦命中即停止匹配。每个ACL可以有多个rule规则,当一个数据包通过配置了ACL的路由器时,首先检查ACL中的第一条规则,如果命中(即匹配判断条件或标准),则根据这条规则的动作(permit 还是deny)对数据包进行处理。并结束对该数据包的匹配。如果没有命中第一条规则,则进行下一条规则的匹配。处理步骤同上。如果一个数据包没有命中ACL中的任何一条规则,那么匹配结果为不匹配,该数据包会被丢弃。因为每个ACL在最后隐含拒绝所有[5]。
图1 ACL的工作流程
(1)场景目的
本场景主要以动态网络地址转换的实现为例,使用基本ACL,实现将私网地址转换成公网地址。ACL在网络地址转换技术中应用拓扑图,如图2所示。
图2 ACL在网络地址转换技术中应用拓扑图
(2)设计实现
首先,根据拓扑图规划,完成相关设备IP地址的配置。并完成相关路由协议的配置,在路由器R1上配置一条静态路由ip route-static 0.0.0.0 0.0.0.0 165.0.0.2,保证内网主机后期能够访问互联网。
其次,在路由器AR1上配置基本ACL,将需要转换的内网地址进行匹配捕获。主要命令实现如下:
[R1]acl 2001
[R1-acl-basic-2001]rule 5 permit source 192.168.0.0 0.0.31.255
在该环节,使用了基本ACL,其编号为2001,作用是将192.168.10.0/24网段和192.168.20.0/24网段需要进行转换的私网地址进行匹配捕获,在匹配2个目标网段时,对2个网段进行了汇总处理,汇总后的网段为192.168.0.0/19。
最后,在路由器AR1创建公有地址池address-group 1(地址范围为165.0.0.100到165.0.0.200),并在G0/0/1接口上将基本ACL 2001捕获匹配的私有地址转换成公有地址池address-group 1中的公有地址。主要命令实现如下:
[R1]nat address-group 1 165.0.0.100 165.0.0.200
[R1]int G0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2001 address-group 1 no-pat
(3)效果测试
使用PC1或者PC2去ping测试Serve1,同时在AR1使用命令display nat session all 查看网络地址转换的情况,或者使用wireshark对接口路由器AR1的G0/0/1接口进行抓包,均可发现地址转换成功,即实现了内网主机访问互联网时,完成私网地址(192.168.10.1)到公网地址的转换(165.0.0.100),实现了场景目的。网络地址转换实现效果,如图3所示。
图3 网络地址转换实现效果
(1)场景目的
本场景使用高级ACL,实现Client1可以访问Server1的FTP服务,不能访问www服务;Client2不能访问Server1的FTP服务,可以访问WWW服务。ACL在服务访问控制中应用拓扑图,如图4所示。
图4 ACL在服务访问控制中应用拓扑图
(2)设计实现
首先,根据拓扑图规划,完成相关设备IP地址的配置。
其次,在路由器器R1上配置高级ACL,实现对相关客户端访问相关服务的控制。主要命令实现如下:
[AR1]acl 3001
[AR1-acl-adv-3001]rule deny tcp source 192.168.10.1 0.0.0.0 destination 192.168.200.1 0.0.0.0 destination-port eq 80
[AR1-acl-adv-3001]rule permit tcp source 192.168.10.1 0.0.0.0 destination 192.168.200.1 0.0.0.0 destination-port eq 21
[AR1-acl-adv-3001]rule deny tcp source 192.168.20.1 0.0.0.0 destination 192.168.200.1 0.0.0.0 destination-port eq 21
[AR1-acl-adv-3001]rule permit tcp source 192.168.20.1 0.0.0.0 destination 192.168.200.1 0.0.0.0 destination-port eq 80
语句rule deny tcp source 192.168.10.1 0.0.0.0 destination 192.168.200.1 0.0.0.0 destination-port eq 80,将拒绝Client1访问Server1的www服务(端口号80)。语句rule deny tcp source 192.168.20.1 0.0.0.0 destination 192.168.200.1 0.0.0.0 destination-port eq 21,将拒绝Client2访问Server的FTP服务(端口号21)。
最后,将高级ACL 3001部署应用在路由器AR1的出接口G0/0/1上。
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]traffic-filter outbound acl 3001
(3)效果测试
发现Client1可以访问Server1的FTP服务,不能访问www服务;Client2不能访问Server1的FTP服务,可以访问WWW服务,实现了场景目的。服务访问控制实验效果,如图5所示。
图5 服务访问控制实验效果
(1)场景目的
本场景将使用基本ACL,结合路由策略,实现对特定路由信息的重分布。实现将rip重分布到ospf时,只重分布LoopBack1和LoopBack3的路由信息;将ospf重分布到rip时,只重分布LoopBack2和LoopBack4的路由信息。ACL在路由策略应用拓扑图,如图6所示。
图6 ACL在路由策略应用拓扑图
(2)设计实现
首先,根据拓扑图规划,完成相关设备IP地址的配置。
其次,在路由器R2上创建基本ACL,将需要重分布的路由信息进行捕获。同时在AR2上创建路由策略,将其与相应的ACL进行关联,确保仅仅只重分布目标路由信息。创建基本ACL的命令实现如下:
[AR2]acl 2001
[AR2-acl-basic-2001]rule permit source 1.1.1.0 0.0.254.0
[AR2]acl 2002
[AR2-acl-basic-2002]rule permit source 2.2.0.1 0.0.254.0
语句rule permit source 1.1.1.0 0.0.254.0,实现捕获由路由器AR1产生的LoopBack1和LoopBack3的路由信息,语句rule permit source 2.2.0.1 0.0.254.0,实现捕获路由器AR3产生的LoopBack2和LoopBack4的路由信息。
创建路由策略的主要命令实现如下:
[AR2]route-policy rip-to-ospf permit node 1
[R2-route-policy]if-match acl 2001
[AR2]route-policy ospf-to-rip permit node 1
[AR2-route-policy]if-match acl 2002
上述命令,创建了2个路由策略,其中名为rip-to-ospf的路由策略,用来关联匹配ACL 2001,名为ospf-to-rip的路由策略用来关联匹配ACL 2002。
最后,在路由器AR2进行路由重分布,分别使用2个已经关联了基本ACL的路由策略,实现对特定路由信息的重分布。主要命令实现如下:
[AR2]rip 1
[AR2-rip-1]import-route ospf route-policy ospf-to-rip
[AR2]ospf 1
[AR2-ospf-1]import-route rip route-policy rip-to-ospf
(3)效果测试
查看AR1的路由表,可以发现将ospf重分布到rip时,只重分布LoopBack2和LoopBack4的路由信息;查看AR3的路由表,可以发现将rip重分布到ospf时,只重分布了LoopBack1和LoopBack3的路由信息,实现了场景目的。
(1)场景目的
本场景将使用高级ACL,结合策略路由,实现对特定路由的转发控制。实现PC1访问百度时通过ISP1,PC2访问百度时通过ISP2。ACL在策略路由访问控制拓扑图,如图7所示。
图7 ACL在策略路由访问控制拓扑图
(2)设计实现
根据拓扑图规划,完成相关设备IP地址的配置。配置路由协议,在该案例中采用的是rip协议。并在GW上配置NAT,在该案例中采用的方式是easy ip。最终实现全网互联互通。此时,在GW上查看路由信息,可以发现此时不论是PC1还是PC2,在访问百度(100.100.100.1)时,均有2条等价路由,形成了负载均衡。
在GW上配置高级ACL,分别实现对PC1、PC2访问百度的流量进行匹配捕获。主要命令实现如下:
[GW]acl 3001
[GW-acl-adv-3001]rule 5 permit ip source 192.168.10.1 0 destination 100.100.100.1 0
[GW]acl 3002
[GW-acl-adv-3002]rule 5 permit ip source 192.168.10.2 0 destination 100.100.100.1 0
语句rule 5 permit ip source 192.168.10.1 0 destination 100.100.100.1 0,实现将PC1访问百度的流量进行捕获;语句rule 5 permit ip source 192.168.10.2 0 destination 100.100.100.1 0实现将PC2访问百度的流量进行捕获。
通过设置流分类、流行为和流策略,完成策略路由的配置,并将策略路由应用在GW的G0/0/2接口上。
设置2个流分类,分别关联匹配ACL 3001和ACL 3002。
[GW]traffic classifier 1
[GW-classifier-1]if-match acl 3001
[GW]traffic classifier 2
[GW-classifier-2]if-match acl 3002
设置2个流行为,指定2个不同的下一跳ISP1(12.1.1.2)、ISP2(13.1.1.2)。
[GW]traffic behavior 1
[GW-behavior-1]redirect ip-nexthop 12.1.1.2
[GW]traffic behavior 2
[GW-behavior-2]redirect ip-nexthop 13.1.1.2
设置流策略,将流分类和流行为进行关联,确保不同流量走向不同的下一跳。
[GW]traffic policy 1
[GW-trafficpolicy-1]classifier 1 behavior 1
[GW-trafficpolicy-1]classifier 2 behavior 2
将流策略应用在GW的接口G0/0/2上。
[GW]int g0/0/2
[GW-GigabitEthernet0/0/2]traffic-policy 1 inbound (3)效果测试
在PC1上使用命令tracert 100.100.100.1,可以发现PC1访问百度通过ISP1(12.1.1.2);在PC2上使用命令tracert100.100.100.1,可以发现PC2访问百度通过ISP2(13.1.1.2),实现了场景目的。策略路由实验效果,如图8所示。
综上所述,本文通过对ACL在四大典型场景(网络地址转换,服务访问控制,路由策略,策略路由)中的设计与成功应用实现,强调和验证了ACL在实现保障网络安全和可靠的网络服务的重要作用,同时也可以看出使用较多的ACL的类别集中体现在基本ACL和高级ACL。基本ACL主要基于数据包的源地址,实现对数据包的粗略控制,高级ACL可以基于数据包的源地址、目的地址、协议类型及应用类型,实现对数据包的精准控制,避免无效流量占用网络带宽等资源,从而提高网络带宽利用率。后期将进一步深入梳理与探讨ACL在其他典型场景中的应用。