本节书摘来自异步社区《CCNP安全Secure 642-637认证考试指南》一书中的第8章,第8.3节路由式数据面安全技术,作者【美】Sean Wilkins , Trey Smith,更多章节内容可以访问云栖社区“异步社区”公众号查看
8.3 路由式数据面安全技术
CCNP安全Secure 642-637认证考试指南
接下来,我们将讨论各种安全技术的原理及其实施方法。
8.3.1 访问控制列表
访问控制列表(Access Control List,ACL)是一种指令列表,一般由若干个ACL条目(ACL entry)组成,用于控制进出路由器接口的数据包。当数据包到达接口时,路由器自上而下搜索ACL中是否存在匹配的条目,以决定允许还是拒绝数据包通过。
ACL可以防御多种攻击,与其他安全措施配合使用能进一步提高网络的安全性。无论是中小企业还是大公司,都可以在全网或网络边界中部署ACL,以降低IP欺骗与慢通道拒绝服务攻击造成的危害。这种ACL不仅能保护个体网络设备的安全,也能保护整个网络基础设施,因此又被称为基础设施ACL(infrastructure ACL)。对网络内部的合法源IP地址而言,它们不应被路由到网络外部。如果路由器接口收到源地址来自内部网络的数据包,说明可能遭到了IP欺骗。可以在接口配置ACL,自动拒绝可疑的入站流量。此外,管理员还可以利用ACL过滤流量,避免路由设备遭到慢通道拒绝服务攻击。虽然少量数据包以进程交换的方式处理并非一个严重问题,但如果大量数据包都以这种方式转发,则可能严重影响路由设备的性能。
图8-1显示了配置有ACL的路由器接口处理数据包的流程图。
![536ff13714da8ac66e9a03eaf542bdf704dbcb28](https://i-blog.csdnimg.cn/blog_migrate/57f7161d83cb4e07601f3d93fa1677ad.png)
ACL的功能如下:
控制进出路由器接口的数据包;
控制虚拟终端连接;
限制路由更新的内容;
定义关注的流量(interesting traffic)
管理员可以通过两种方式配置ACL。
编号ACL(numbered ACL):一次性写入整个ACL,无法插入和删除指定的ACL条目。如果希望修改某个条目,必须重新输入整个ACL。
命名ACL(named ACL):可以插入和删除指定的ACL条目。如果希望修改某个条目,无需重新输入整个ACL。
用于过滤数据包的条件很多,如数据包的源地址、目标地址、各种上层协议的字段等。
每个ACL的末尾都包含一条隐式拒绝语句(deny any)。所有语句执行完毕后,如果不存在匹配条目,则流量被默认丢弃。ACL中至少应包含一条permit声明,否则接口将拒绝所有流量通过。
根据数据包是否包含IP选项,ACL可以选择丢弃或忽略数据包。一种方法是通过全局命令ip options {drop | ignore}启用IP选项选择性抛弃(IP OptionsSelective Drop)特性,另一种方法是在创建扩展命名ACL时使用关键字option。
1.ACL适用场合
为充分发挥ACL的作用,应将其配置在边界路由器上,后者是位于网络边缘的路由器。这种配置方式将核心网络与外部网络或不可控网络隔离开来,从而提高了整个系统的安全性。
路由器接口配置的ACL应能对入站流量、出站流量或二者进行过滤。此外,ACL的定义是基于每种协议的。换言之,接口启用了几种协议,就应配置几种ACL。
2.ACL类型
Cisco IOS软件支持以下几种ACL。
关键
标准ACL(standard ACL):根据源地址过滤流量。
扩展ACL(extended ACL):根据源地址与目标地址过滤流量,或采用可选的协议类型信息实现对流量的精确控制。
自反ACL(reflexive ACL):根据会话信息过滤流量。自反ACL包含若干临时性条目,并嵌套在扩展命名IP ACL中。
基于时间的ACL(time-based ACL):根据时间功能过滤流量。
接下来,我们将详细介绍每种ACL。
3.标准IP ACL
标准IP ACL是Cisco开发的第一种ACL,最早出现在Cisco IOS软件版本8.3中。标准IP ACL采用数据包的源IP地址对其进行过滤。
标准IP ACL的语法格式如下:
![c136cd2b1c189831f6060c2ec67e1f81f8a3ec0d](https://i-blog.csdnimg.cn/blog_migrate/df49de3ad717208c535b3723008622b4.png)
对标准IP ACL而言,所有版本的Cisco IOS软件都支持范围从1~99的访问列表编号。表8-2显示了各种协议以及相应的编号范围。从Cisco IOS软件版本12.0.1开始,标准IP ACL支持使用另一段列表编号(1300~1999),使用这段编号的ACL称为扩充IP ACL(expanded IP ACL)。除列表编号外,Cisco IOS软件版本11.2及其后续版本增加了采用列表名称标识标准IP ACL的功能。
关键
![0f04589355fff3864a4c139decd93ef9f22cb979](https://i-blog.csdnimg.cn/blog_migrate/f4727612b4bd1e9cd977f27b814aac6a.png)
![16e15548d4a61694d29c6e7bdaea31b814c04eb6](https://i-blog.csdnimg.cn/blog_migrate/765c7bdff9998141b592301cfc106353.png)
关键字log用于监控指定ACL过滤数据包的数量以及每个数据包的源地址。日志消息包括以下信息:ACL号、数据包的过滤结果(允许或拒绝通过)、数据包的源IP地址、5分钟内来自该地址的数据包的过滤结果。
通配符掩码又称反向掩码(reverse netmask),它与IP地址配合使用,用于标识ACL的源地址。我们通过下面的例子对通配符掩码做一简单回顾。如果网络掩码为255.255.255.0,其二进制形式为
11111111 11111111 11111111 00000000
将各位依次翻转后得到反向掩码(通配符掩码),即
00000000 00000000 00000000 11111111
或
0.0.0.255
此外,也可以通过将网络掩码的各位与255相减来计算通配符掩码。例如,如果网络掩码为255.255.248.0,则将各位与255相减后得到通配符掩码0.0.7.255。
定义ACL之后,必须将其应用到路由器接口,以便对入站流量或出站流量进行过滤。其命令如下:
![14bff055048e18e096a9085d7e46d14d7a527723](https://i-blog.csdnimg.cn/blog_migrate/0485966eac55c825cd76ec2a43d6bc29.png)
路由器根据in、out、source与destination等条件进行流量过滤操作。为便于理解,读者可以将通过路由器的数据包与交通流量进行类比。例如,一辆来自墨西哥的卡车经过美国前往加拿大。“卡车”相当于数据包,“墨西哥”相当于源地址,“加拿大”相当于目标地址,“美国”相当于路由器。如果美国的执法人员希望对卡车进行检查,既可以将路障设置在美国与墨西哥边境,这相当于路由器接口对入站流量进行过滤(in);也可以将路障设置在美国与加拿大边境,这相当于路由器接口对出站流量进行过滤(out)。
上述类比可以总结如下。
in:到达路由器接口的流量,将通过接口传输。源地址为发送流量的节点,目标地址为流量前往的节点。
out:离开路由器接口传输的流量。源地址为发送流量的节点,目标地址为流量前往的节点。
4.扩展IP ACL
与标准IP ACL类似,扩展IP ACL最早出现在Cisco IOS软件版本8.3中。除源IP地址外,扩展IP ACL还可以采用数据包的目标IP地址、源端口号、目标端口号等信息对其行过滤。
扩展IP ACL的语法格式如下:
![c61a9fb76a7371eb61ca7191dd43352e4bbcd5e7](https://i-blog.csdnimg.cn/blog_migrate/3036522646c3df6f6ad2eba3e1e327ee.png)
5.自反ACL
从Cisco IOS软件版本11.3开始,Cisco引入了自反ACL的概念。这种ACL根据上层会话信息对流量进行过滤,可以实现流量的单向控制。
接口配置的自反ACL通常用于以下两种场合:
放行内部网络发起的出站流量,拒绝外部网络发起的入站流量;
放行内部网络发起、并从外部网络返回的入站流量。
对不存在隔离区(DMZ)的网络而言,采用第一种方式配置自反ACL更为普遍。第二种方式允许来自外部的流量进入隔离区,但除非该流量是由内部网络发起并返回的流量,否则接口将拒绝流量进入内部网络。图8-2和8-3显示了上述两种方式。
![b9d86d51e7488c2fd563ee4c2a34c47892a05478](https://i-blog.csdnimg.cn/blog_migrate/e8211bedf94df066c4e4b7facf9e5b78.png)
自反ACL只能在扩展命名IP ACL中定义,不能在编号ACL、标准命名IP ACL或其他协议ACL中定义。不过,自反ACL可以与其他标准IP ACL或静态扩展IP ACL共同使用。
自反ACL的语法格式如下:
![5145116604449a2305accfeb1b2e896ab76a6f1d](https://i-blog.csdnimg.cn/blog_migrate/fb13e4bedfe510c95515d10e20d4bd8f.png)
6.基于时间的ACL
从Cisco IOS软件版本12.0.1.T开始,Cisco引入了基于时间的ACL。这种ACL与扩展IP ACL在功能上类似,不过前者可以控制指定时间进出路由器的数据包。基于时间的ACL通过定义的时间范围来过滤流量。每个时间范围都有一个名称,并被一个函数引用,因此函数本身存在时间限制。路由器的系统时钟负责授时,它既可以单独使用,也可以与网络时间协议(NTP)配合使用,以获得最佳的授时效果。
基于时间的ACL的语法格式如下:
![b7bc39de2743cbf1f73e84814b17aca3196f39bc](https://i-blog.csdnimg.cn/blog_migrate/89e9741709c1b6e7804ac9b46fc744d8.png)
采用基于时间的ACL过滤流量具有以下优点。
管理员可以更好地控制用户访问网络资源。这些资源包括上层应用(由IP地址/掩码对与端口号进行标识)、策略路由或链路点播(表现为拨号器关注的流量)。
当提供商的访问速率变化时,能根据成本效益自动对流量进行重路由。
服务提供商可以动态更改承诺访问速率(CAR)配置,以便在特定时段内协商QoS服务水平协议。
管理员可以灵活控制日志消息,如将ACL条目配置为仅记录特定时段而非全天的流量。这能在一定程度上减轻管理员的负担,管理员在进行流量过滤操作时不必逐一分析高峰时段产生的大量日志消息。
增强了基于策略的路由与排序功能。
7.验证ACL配置
管理员可以通过各种show命令验证所配置的ACL。以下命令用于显示目前所有ACL的内容:..TUc0812.tif。以下命令用于显示目前所有IP ACL的内容:..TUc0813.tif。
8.3.2 灵活包匹配
灵活包匹配(Flexible Packet Matching,FPM)是Cisco开发的一种访问控制技术,它提供了更为精确和定制化的数据包过滤功能。用户既可以对数据包中的任何一个比特进行匹配,也可以对包头部与载荷的任意深度内容进行匹配。FPM能有效防御包括慢路径拒绝服务攻击和零日漏洞攻击在内的多种安全威胁。
FPM通过一系列过滤策略来检测并消除针对网络的攻击,下面列出了创建过滤策略的4个步骤:
加载协议头描述文件(Protocol Header Description File,PHDF);
定义类型图与协议栈(流量类型);
定义服务策略(流量策略);
将服务策略应用到指定接口。
关键
1.FPM的局限性
与其他安全技术一样,FPM也存在着诸多不足,用户在配置FPM之前应予以了解。下面列出了FPM的主要局限。
FPM是无状态的,它无法跟踪由协议控制的、自协商的端口号。
FPM仅能检测IPv4单播数据包。
FPM无法区分带有IP选项的数据包。
FPM不支持隧道接口或MPLS接口。
FPM不能配置在FlexWAN接口卡中。
FPM无法执行IP包的分片。
2.PHDF
FPM既可以通过PHDF进行数据包匹配,也可以根据数据包的长度和偏移直接对其进行匹配。PHDF定义了指定协议中的字段名。例如,ip.phdf文件定义了IP包头部字段(版本、头部尺寸、ToS等),而tcp.phdf文件定义了TCP包头部字段(源端口与目标端口、序列号、确认号等)。为使用这些字段名,必须首先通过全局配置命令load protocol将PHDF加载到路由器中。载入PHDF后就可以使用类型图配置命令match field,后者根据PHDF字段信息进行数据包匹配。如果没有加载PHDF,则只能使用类型图配置命令match start,后者根据指定的长度和偏移信息进行数据包匹配。上述两条命令采用不同的方式实现数据包信息的匹配,接下来的章节将对此进行详细介绍。PHDF是一种XML文件,用户也可以通过修改XML来定义自己的PHDF。
PHDF的语法格式如下:
![1159aa6223c3aae70e8a66d70c72bcb95bc75138](https://i-blog.csdnimg.cn/blog_migrate/7f10ebe0ced6ff85b7692d4e25b8b66f.png)
3.定义流量类型
流量类型是一系列条件的集合,它根据无状态包分类对指定流量进行匹配。一个简单的例子是匹配端口号为80的TCP流量(即Web流量)。当然,更为常见的方法是通过访问列表来过滤流量。不过采用FPM的优点在于,它既可以根据指定的某个参数进行匹配,也可以根据指定的一组参数进行匹配。前者的例子如匹配TCP端口号为80的流量,后者的例子如匹配TCP端口号为80、IP包长度小于400字节、从第400位起且包含4个字节的流量。那么,什么情况下会用到FPM呢?现代网络面临的安全形势极为严峻,各种安全威胁层出不穷。尽管不少攻击都能被入侵防御系统(IPS)成功拦截,但后者对某些新出现的攻击无能为力。其原因在于,如果IPS尚未获得某种攻击的签名,它就无法实施有效的防御。这时,FPM的优势就体现出来。当FPM检测到某种具有特定类型的攻击时,可以在不影响其他流量的情况下将其拦截。
FPM通过以下两种方式配置流量类型:
流量分类定义文件(Traffic Classification Definition File,TCDF);
流量图(通过CLI配置)。
在使用TCDF之前,需要创建并将其加载到路由器中。TCDF是一种XML文件,可以使用文本编辑器或XML编辑器创建和编辑。通过TCDF定义匹配标准与通过CLI配置的效果相同,不过TCDF可以被很方便地复制到不同的设备上,管理员无需逐一进行配置。后面的章节将详细讨论通过CLI创建匹配标准的步骤。全局配置命令load classification用于将TCDF加载到路由设备中,其语法格式如下:
![6486c58df1867cfafc697707c33515a965ea5204](https://i-blog.csdnimg.cn/blog_migrate/90fc62befb7af9d0e1d891cd3df8b303.png)
用户也可以通过TCDF配置匹配类型:
![2ee685240565b3bb5fcd7a9e0e80f38ee7677185](https://i-blog.csdnimg.cn/blog_migrate/6449fa2e634e37bf1a69f174a5b80bad.png)
4.定义流量策略
接下来,管理员需要配置流量策略,后者定义了如何处理与类型图匹配的流量。流量策略必须采用至少一种已配置的流量类型对特定流量进行匹配,并明确匹配发生时流量的处理方式。
为配置流量策略,首先需要采用全局配置命令policy-map创建策略图。通过CLI配置策略图的语法格式如下:
![ad8d17d5bd51ca7e7cfe1aa0a5816afb6d0bde77](https://i-blog.csdnimg.cn/blog_migrate/99c965b3973bfcb7f4c141499377e09d.png)
用户也可以通过TCDF配置策略图嵌套:
![a20dbf3b5f8a3b63bea3db059d41a8ef734994e3](https://i-blog.csdnimg.cn/blog_migrate/af32c539e8bd04b4bbe830b062f041f6.png)
5.将流量策略应用到接口
完成流量策略的定义之后,需要将其应用到路由器接口,以便过滤出站流量或入站流量。管理员可以通过接口配置命令service-policy type access-control将已配置的流量策略应用到指定接口,语法格式如下:
![9d4cfdf73f1ac1eed99f2d2e224400d6335a84ff](https://i-blog.csdnimg.cn/blog_migrate/4fd87995343d70ab6ecaf08ed1f3da8b.png)
8.3.3 灵活NetFlow
灵活NetFlow(Flexible NetFlow)由Cisco开发,它在许多方面优于NetFlow,并具备不少后者没有的功能。这些功能包括:
扩展性强、聚合度高、容量大的流量信息;
带有安全监控功能的流量结构;
灵活的关键字段与非关键字段配置;
NetFlow v9导出格式;
丰富的IP与BGP结算功能。
NetFlow与灵活NetFlow的基本工作原理相同,二者均对网络流信息进行识别和记录。网络流(flow)是若干具有相同关键字段的数据包的集合。NetFlow的关键字段(key field)是静态的,包括源IP地址、目标IP地址、源端口、目标端口、协议、接口、服务类别(CoS)等信息。除关键字段外,数据包数量、总字节数等非关键字段(non-key field)也被记录在案。而灵活NetFlow可以根据所搜索的信息对关键字段与非关键字段进行定制,从而增加了灵活性。
灵活NetFlow在流量结算、容量规划、安全监控等多种场合都发挥了重要作用,它能跟踪针对网络的普通DoS攻击与慢路径DoS攻击。下面列出了灵活NetFlow的主要用途:
网络监控;
应用监控与分析;
用户监控与分析;
网络规划与分析;
安全分析;
计费与结算;
数据存储与数据挖掘。
1.构成
在配置灵活NetFlow之前,管理员需要了解表8-3列出的一些重要概念。
![6c2893bafe5537ea21c3418610ea31a386179048](https://i-blog.csdnimg.cn/blog_migrate/93efc4315fddf9ce83af4321e450edf2.png)
2.NetFlow记录
在NetFlow记录中,关键字段用于标识指定的网络流,而非关键字段是经过标识的网络流的一部分。在配置灵活NetFlow的用户定义选项之前,请务必了解二者的区别。
NetFlow的关键字段与非关键字段是静态的,用户无法根据需要进行定制。而灵活NetFlow引入了用户定义的记录结构,从而能自定义关键字段与非关键字段。考虑到NetFlow庞大的用户群体,在使用灵活NetFlow之前,需要考虑向后兼容性问题。表8-4列出了NetFlow Original/NetFlow IPv4Original Input记录格式,表8-5列出了NetFlow IPv4 Original Output记录格式。两张表格均包括关键字段与非关键字段信息。
![810642d7672f6af4fd4aed32bf5406503611d013](https://i-blog.csdnimg.cn/blog_migrate/6579ca8804e6db05611e2709c90531c1.png)
![9344111bca245ba91a51a6f3e6c7279366d607c3](https://i-blog.csdnimg.cn/blog_migrate/a67b21382ecb62b8d3ad3917f0b445a7.png)
![a9e69427f74579145d1710f6f20426071aeafb3e](https://i-blog.csdnimg.cn/blog_migrate/3b8a775242630dacb34e5d11ed0268d6.png)
从表8-4与8-5中可以看出,无论是否需要,NetFlow将所有信息都记录在案。而灵活NetFlow则与之相反,管理员可以通过用户定义的记录格式灵活选择所需的字段。定义记录格式的语法格式如下:
![a28f9b82059017114853681afb3c02ccfc45a6d3](https://i-blog.csdnimg.cn/blog_migrate/0b2f1c5ea144ba733fdb79d204b61e7b.png)
4.流导出器
流导出器的作用是将非活跃状态(默认值为15秒)或长时间处于活跃状态(默认值为30分)的记录导出到远程系统,以便进行处理。配置流导出器的语法格式如下:
![44a405178ceb11462e4269de90bfbff4cc979516](https://i-blog.csdnimg.cn/blog_migrate/c51294d5b1a05f43e1ae2e7ea4920a14.png)
例8-13显示了配置流采样器的命令。在本例中,我们创建了一个名为test-sampler的流采样器,后者采用确定采样模式,窗口大小为2。
![b1f309f9fbc88f87b945b58845234e191f71037b](https://i-blog.csdnimg.cn/blog_migrate/5bbe3c2d145c6ecf7e7e3f2b2f50adf3.png)
8.参考资料
读者可以从Cisco官网上获取大量有关灵活NetFlow的信息,并通过以下链接下载配置指南:
www.cisco.com/en/US/docs/ios/fnetflow/configuration/guide/12_4t/fnf_12_4t_book.pdf。
8.3.4 单播反向路径转发
对现代网络而言,最常见的一种攻击通过伪造或欺骗合法数据包的IP源地址实现。尽管ACL可以对数据包进行过滤,但是为大型网络配置并维护ACL是一项极为繁琐的工作。为解决这个问题,Cisco开发了单播反向路径转发(Unicast Reverse Path Forwarding,uRPF)技术。uRPF将数据包的源地址与储存在转发信息库(FIB)中的信息进行对照,以判定数据包的合法性。FIB是Cisco快速转发(CEF)技术中的一张表,它包含从路由表中复制过来的转发信息,可以将其视为路由表的镜像。FIB包含所有已知的路由信息,设备采用FIB就能提高数据包转发的速度。由于uRPF以FIB中的信息为过滤依据,因此在使用uRPF之前必须首先配置CEF。
uRPF包括以下两种工作模式。
关键
严格模式(strict):检查数据包的源地址是否在FIB中,且源地址是否由CEF确定的最佳返回路由接口接收。但是在多宿主连接2中,由于最佳返回路径可能与接收接口不同,因此这种工作模式也容易产生问题。有鉴于此,应仅在单宿主连接中使用严格模式。当存在多条具有相同度量的最佳路径时,也可以使用uRPF,如配置了度量方差(metric variance)的EIGRP。建议在以下两种情况采用严格模式:(1)仅有一条进出网络(包括网络边缘)的连接;(2)满足要求的单宿主客户与核心网络相连。
松散模式(loose):仅检查数据包的源地址是否在FIB中,不检查源地址是否由最佳返回路由接口接收。松散模式的灵活性更大,一般在多宿主连接(包括网络内部)普遍存在的情况下使用。
需要注意的是,uRPF仅能在输入接口使用。因此,如果网络与ISP之间存在一条单宿主连接,则应仅配置uRPF以监控来自ISP的流量。由于uRPF以CEF转发速率工作,与采用传统的ACL防止地址欺骗相比,uRPF可以有效提高设备的性能。当uRPF被配置在工作速率超过1 Mbps的接口时,这种区别将更为明显。
1.uRPF配置
在配置uRPF之前,必须首先通过分布式命令ip cef启用CEF。语法格式如下:
![79f9f9a6256481caa22d0b51cc56a283f8ffb8e9](https://i-blog.csdnimg.cn/blog_migrate/93bec212915dd0aff1517f8cce96f9bb.png)
备考指南
前言的“本书内容结构”部分列出了备考的几种方式:各章习题、助记表(附录C)、第22章以及随书光盘中的模拟考题。每一章最后均包含若干主观题填空。与实际考试相比,主观题的难度较大,读者可以借此检验自己对本章内容的掌握程度。主观题的答案请参见附录A。
1从Cisco IOS软件版本12.4(20)T开始,命令service-policy inspect被service-policy(policy-map)所取代。——译者注
2存在多条与Internet的连接,即存在多条到达ISP的路径。——译者注