外围路由器、防火墙和内部路由器
在大中型企业网络中,通常采用外围路由器、内部路由器和防火墙的配置来实现各种安全策略。
内部路由器对前往企业网络中受保护部分的数据流进行过滤,以进一步提高安全, 这是通过使用访问控制列表实现的。图12-1说明了这些设备所处的位置。
我将频繁地使用术语可信网络( trusted network)和不可信网络( untrustednetwork ),因此必须知道它们位于典型的安全网络的什么地方,这很重要。非军事区(DMZ)可能是全局因特网地址,也可能是私有地址,这取决于如何配置防火墙,非军事区通常包含HTTP、DNS、电子邮件和其他与因特网相关的企业服务器。
我们知道,在可信网络内部,可不使用路由器,而结合使用虚拟局域网(VLAN)和交换机。多层交换机内置了安全功能,可替代内部路由器在VLAN架构中提供较高的性能。
下面介绍一些使用访问控制列表保护互联网络的方式。
访问控制列表简介
从本质上说,访问控制列表是一-系列对分组进行分类的条件,它在需要控制网络数据流时很有用。在这些情况下,可将访问控制列表用作决策工具。访问控制列表最常见也是最容易理解的用途之一是, 将有害的分组过滤掉以实现安全策略。例如,可使用访向控制列表来作出非常具体的数据流控制决策,只允许某些主机访问因特网上的Web资源。通过正确地组合使用多个访问控制列表,网络管理员几乎能够实施任何能想到的安全策略。
创建访问控制列表相当于编写一系列if-then 语句一如果满 足给定的条件,就采取给定的措施;如果不满足,则不采取任何措施,而继续评估下一条语句。访问控制列表语句相当于分组过滤器,根据它对分组进行比较、分类,并采取相应的措施。创建访问控制列表后,就可将其应用于任何接口的人站或出站数据流。访问控制列表被应用于接口后,路由器将对沿指定方向穿越该接口的每个分组进行分析,并采取相应的措施。
将分组同访问控制列表进行比较时,需要遵守一些重要规则。
使用访问控制列表过滤IP分组时,上述每条规则都将带来深远的影响;要创建出有效的访问控制列表,必须经过一段时间的练习。
访问控制列表分两大类:
创建访问控制列表后,除非将其应用于接口,否则它不能发挥任何作用。此时访问控制列表确实包含在路由器配置中,但除非告诉路由器使用它来做什么,否则它处于非活动状态。
要将访问控制列表用作分组过滤器,需要将其应用于要进行数据流过滤的路由器接口。还必须指定要使用访问控制列表来过滤哪个方向的数据流,这种要求有充分的理由:对于从企业网络前往因特网的数据流和从因特网进人企业网络的数据流,你可能想采取不同的控制措施。通过指定数据流的方向,可以(也经常需要)在同一个接口上将不同的访问控制列表用于人站和出站数据流。
在路由器上创建和实现访问控制列表时,应遵守一些通用的指导原则:
注意:考虑到每个访问控制列表末尾的隐式deny语句带来的影响,不允许在接口的特定方向对特定协议应用多个访问控制列表是有道理的。鉴于不满足第一个访问控制列表中任何条件的分组都将被拒绝,因此不会有任何分组需要与第二个访问控制列表进行比较。
注意:对于命名访问控制列表,可编辑、添加或删除特定行,稍后将演示这一点。
介绍如何配置标准和扩展访问控制列表前,先来讨论如何使用ACL缓解前面讨论的安全威胁。
使用ACL缓解安全威胁:
标准访问控制列表
标准IP访问控制列表通过查看分组的源IP地址来过滤网络数据流。创建标准IP访问控制列表时,使用访问控制列表编号1~99或1300~ 1999 (扩展范围)。通常使用编号来区分访问控制列表的类型。根据创建访问控制列表时使用的编号,路由器知道输入时应使用什么样的语法。编号1~99或1300~1999,告诉路由器要创建一个标准IP访问控制列表,而路由器要求只将源IP地址用作测试条件。
下面列出了过滤网络数据流时,可使用的众多访问控制列表编号范围(可为哪些协议指定访问控制列表取决于你使用的IOS版本):
下面来看创建标准访问控制列表的语法:
前面说过,使用访问控制列表编号1~99或1300~ 1999,就相当于告诉路由器你要创建一个标准IP访问控制列表。
指定访问控制列表编号后,需要决定是要创建permit语句还是deny语句。在这个例子中,我们创建一条deny语句:
接下来的一步需要做更详细的解释。有3个选项可供选择。可使用参数any允许或拒绝任何源主机(网络),可使用一个IP地址来指定单台主机或特定范围内的主机,还可使用命令host指定特定的主机。命令any的含义显而易见,它指的是与语句匹配的任何源地址,因此每个分组都与该语句匹配。命令host比较简单,下面是一个使用它的示例:
这条语句拒绝任何来自172.16.30.2 的分组。默认参数为host,换句话说,如果输入access-1ist 10 deny 172.16.30.2, 路由器将认为输人的是access-1ist 10 deny host 172 .16.30.2,且在运行配置中也这样显示。但还有另外一种方法可指定特定主机或特定范围内的主机一使用通配符掩码。事实上,要指定任何范围内的主机,必须在访问控制列表中使用通配符掩码。什么是通配符掩码呢?以后小编会介绍的!
通配符掩码
在访问控制列表中,可使用通配符来指定特定主机、特定网络或网络的一部分。要理解通配符,就必须理解块大小,它用于指定地址范围。块大小包括64、32、16、8和4等。
在需要指定地址范围时,可使用能满足需求的最小块大小。例如,如果需要指定34个网络,则需要使用块大小64;如果需要指定18台主机,则需要使用块大小32;如果只需指定2个网络,则使用块大小4就可以了。
通过结合使用通配符和主机(网络)地址来告诉路由器要过滤的地址范围。要指定一台主机,可使用类似于下面的组合:
- 172.16.30.5 0.0.0.0
其中的4个0分别表示1B。0表示地址中的相应字节必须与指定的地址相同。要指定某个字节可以为任意值,可使用255。例如,下面的示例演示了如何使用通配符掩码指定一个/24子网:
- 172.16.30.0 0.0.0.255
这告诉路由器,前3 B必须完全相同,而第4个字节可以为任意值。
这很容易。但如果要指定小范围的子网,该怎么办呢?此时块大小便可派上用场了。指定的范围必须与某个块大小相同,换句话说,不能指定20个网络,而只能指定与块大小相同的范围,即要么是16,要么是32,但不能是20。
假定要禁止网络中的一部分(即172.16.8.0~ 172.16.15.0)访问你的网络。该范围对应的块大小为8,因此,在访问控制列表中,应指定网络号172.16.8.0 和通配符掩码0.0.7.255。这是什么意思呢?路由器根据7.255确定块大小。上述网络号和通配符掩码组合告诉路由器,从172.16.8.0开始,向上数8个(块大小)网络,直到网络172.16.15.0。
这比看起来简单。我原本可以使用二进制来解释,但不需要这样做。实际上,只需记住,通配符掩码总是比块大小小1。就这个示例而言,通配符掩码为7,因为块大小为8。如果使用的块大小为16,则通配符掩码将为15。很容易,不是吗?
下面将通过一些示例帮助你掌握这一点。下面的示例告诉路由器,前3B必须完全相同,而第4个字节可以是任意值:
- Corp(config)#access-1ist 10 deny 172.16.0.0 0.0.255.255
下面的示例告诉路由器,前2 B必须完全相同,而后2 B可以是任意值:
- Corp(config)#access-1ist 10 deny 172.16.0.0 0.0.255.255
请尝试配置下面一行:
- Corp(config)#access-list 10 deny 172.16.16.0 0.0.3.255
该配置告诉路由器,从网络172.16.16.0 开始,并使用块大小4。因此范围为172.16.16.0~ 172.16.19.255(CCNA考题与此类似)。
接着练习。下面的配置是什么意思呢?
- Corp(config)#access-1ist 10 deny 172.16.16.0 0.0.7.255
这条语句指出,从网络172.16.16.0开始,向上数8个(块大小)网络,到172.16.23.255结束。为掌握这项知识,还需做更多练习。下面的语句指定的是什么范围呢?
- Corp(config)#access-1ist 10 deny 172.16.32.0 0.0.15 .255
这条语句指出,从网络172.16.32.0开始,向上数16个(块大小)网络,到172.16.47.255结束。
下面再做几个练习,然后配置一些ACL。
- Corp(config)#access-1ist 10 deny 172.16.64.0 0.0.63.255
这条语句指出,从网络172.16.64.0开始,向上数64个(块大小)网络,到172.16.127.255结束。
来看最后一个示例:
- Corp(config)#access-1ist 10 deny 192.168.160.0 0.0.31.255
这条语句指出,从网络192.168.160.0开始,向上数32个(块大小)网络,到192.168.191.255结束。
确定块大小和通配符掩码时,还需牢记如下两点:
注意:通配符掩码对创建IP访问控制列表来说很重要,必须掌握。在标准IP访问控制列表和扩展IP访问控制列表中,其用法完全相同。
标准访问控制列表示例
在图12-2中,路由器有3条LAN连接和1条到因特网的WAN连接。不应让销售部LAN的用户访问财务部LAN,但应允许他们访问因特网和市场营销部的文件。市场营销部的用户需要能够访问财务部LAN,以使用其应用程序服务。
在图中的路由器上,配置如下标准IP访问控制列表:
命令any与0.0.0.0 255.255.255.255等价,如下所示:
- Lab_ A(config)#access-1ist 10 permit 0.0.0.0 255.255 .255.255
该通配符掩码指出,不用考虑任何一个字节,因此所有地址都满足这个测试条件。这与使用关键字any等价。
当前,该访问控制列表禁止任何来自销售部LAN的分组进人财务部LAN,但允许其他所有分组进入。别忘了,除非将访问控制列表应用于接口的特定方向,否则它不会发挥任何作用。
应将该访问控制列表放在什么地方呢?如果将其作为人站访问控制列表应用于接口fa0/0, 还不如
关闭这个快速以太网接口呢!因为这将导致销售部LAN中的所有设备都无法访问与该路由器相连的任何网络。最佳的选择是,将其作为出站访问控制列表应用于接口fa0/1:
- Lab_ A(config)#int fa0/1
- Lab_ A(config-if)#ip access-group 10 out
这就完全禁止了来自172.16.40.0 的数据流从接口fa0/1 传输出去。它不会影响销售部LAN的主机访向市场营销部LAN和因特网,因为前往这些目的地的数据流不会经过接口fa0/1。任何试图从接口fa0/1出去的分组都将首先经过该访问控制列表。如果在接口fa0/0 上应用了入站访问控制列表,则任何试图进人该接口的分组都将首先经过这个访问控制列表,然后才被路由到出站接口。
下面来看另一个标准访问控制列表示例。在图12-3所示的互联网络中,有2台路由器、3个LAN和1条串行WAN连接。
你想通过使用一个标准ACL,禁止财务部的用户访问与路由器Lab_B相连的人力资源服务器,但允许其他用户访问该LAN。应该创建什么样的标准访问控制列表?将它放在哪里呢?
准确的答案是,应该创建一个扩展访问控制列表,并将其放在离信源最近的地方,但这里要求你使用标准访问控制列表。根据经验规则,标准访问控制列表应放在离目的地最近的地方,这里是路由器Lab_B的接口E0。下面是应在路由器Lab_B上配置的访问控制列表:
为回答这个问题,必须理解子网划分、通配符掩码以及如何配置和实现ACL。我想你还需多做这方面的练习。
因此,介绍如何限制以Telnet方式访问路由器前,再来看一个标准访向控制列表示例,这个示例要求你更深人地思考。在图12-4中,一台路由器有4条LAN连接,还有1条到因特网的WAN连接。
编写一个访问控制列表,禁止图中所示的4个LAN访问因特网。对于图中的每个LAN,都列出了其中一台主机的IP地址,据此确定在访问控制列表中指定每个LAN时应使用的子网地址和通配符掩码。
答案应类似于下面这样(-次指定了E0~E3连接的子网):
当然,也可以只使用下面一行:
- Router(config)#access-1ist 1 deny 172.16.0.0 0.0.255 .255
但这样做有什么意思呢?
创建这个访问控制列表的目的是什么?如果在路由器上应用这个访问控制列表,就等于完全禁止访问因特网了,那还要因特网连接做什么?.这里提供这个示例旨在让你练习在访问控制列表中使用块大小,这对你备考CCNA至关重要。
控制 VTY (Telnet/SSH) 访问
对于大型路由器,要禁止用户以Telnet 或SSH方式访问它可能很难,因为每个活动接口都允许VTY访问。可创建一个扩展IP访问控制列表,禁止访问路由器的每个地址。但如果真的这样做,必须将其应用于每个接口的人站方向,对于有数十甚至数百个接口的大型路由器来说,这种解决方案的可扩展性太低了。另外,如果每台路由器都对每个分组进行检查,以防它访问VTY线路,导致的网络延迟将很大。
一种好得多的解决方案是,使用标准IP访问控制列表来控制对VTY线路的访问。
这种解决方案为何可行呢?因为将访问控制列表应用于VTY线路时,不需要指定协议一访问VTY就意味着以Telnet 或SSH方式访问终端。也不需要指定目标地址,因为你不关心用户将哪个接口的地址用作Telnet会话的目标。你只需控制用户来自何方一他们的源 IP地址。要实现这项功能,请执行如下步骤:
下面的示例只允许主机172.16.10.3远程登录到路由器:
- Lab_ A(config)#access-1ist 50 permit host 172.16.10.3
- Lab_ A(config)#line vty 0 4
- Lab_ A(config-line)#access-class 50 in
由于访问控制列表末尾有一条隐式的deny any语句,因此除172.16.10.3外的其他任何主机都不能远程登录到该路由器,而不管它将路由器的哪个IP地址用作目标。你可能想将源地址指定为管理员所属的子网,而不是单台主机;但下面的示例演示了如何在不增加路由器延迟的情况下确保VTY线路的安全。
真实案例:应保护路由器的VTY线路吗?
使用命令show users对网络进行监视时,发现有人远程登录到了你的核心路由器。此时,你使用命令disconnect断开了他到该路由器的连接,但发现几分钟后他又连接到了该路由器。因此,你想在该路由器的接口上放置一个访问控制列表,但又不想给每个接口增加过多的延迟,因为该路由器处理的分组已经很多了。你想将一个访问控制列表应用于VTY线路本身,但以前没有这样做过,不知道这种解决方案能否取得与将访问控制列表应用于每个接口相同的效果。就这个网络而言,将访问控制列表应用于VTY线路是个好主意吗?
绝对是个好主意,可使用本章前面介绍的命令access-class。为什么呢?因为这可避免使用访问控制列衣对进出接口的每个分组进行检查,而这样做会增加路由分组的开销。在VTY线路上配置命令access-class in时,只会检查并比较进入路由器的Telnet分组。这提供了一种完美而又易于配置的安全解决方案。
注意:思科建议使用Secure Shell ( SSH )而不是Telnet 来访问路由器的VTY线路。
一年多来,手机资费上涨,宽带资费也上涨。多年不变的宽带初装费重新走上历史舞...
【51CTO.com原创稿件】苏宁木牛是苏宁人工智能研发中心设计的一款智能设计产品,...
随着机器日益补充工作场所的人力劳动,我们都需要做出调整以获得收益。 自动化和...
三星在上周推出了旗下第二款可折叠手机 Galaxy Z Flip,和 Galaxy Fold 的左右开...
根据市场研究公司Opensignal的最新报告显示,美国三大主要电信运营商的5G平均下...
微信的更新上,安卓端似乎总是比iOS端慢半拍,比如微信8.0大版本,不仅安卓端晚...
人工智能是一项正在常规基础上进行大量研究的技术。世界各地的研究人员都在努力...
自动驾驶汽车需要感知不同颜色以及在不同的照明条件下的车道线,以便准确地检测...
不得不说有些人的聪明用错了地方,居然连健康码都有人伪造,这样不仅损人不利己...
日益分散、异构且高度动态化的现代IT环境不仅没有降低监控与管理的难度,反而随...