百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

网络控制层面安全保护方案(网络安全控制技术有哪些)

nanshan 2025-07-24 20:25 6 浏览 0 评论

概述

在城域网、校园网等网络上,网络设备受到直接攻击的可能性非常大,即使目前高端的路由器,交换机最强大的软件实施和基于控制层,转发层分开的硬件架构也难以抵御利用无用流量、或者病毒造成网络设备瘫痪的恶意DoS攻击,这样的攻击通常直接造成网络设备控制平面的瘫痪,网络中断,从而业务中断。为了阻止攻击网络设备控制层面的伪装数据流量,现在大部分设备在转发平面和控制平面之间提供控制层面监管功能,也就是cisco在ios当中提供的网络设备控制层面安全保护(CoPP)功能,通过识别特定类型的流量来限制目的地为控制平面处理器的流量速率,从而提供对网络设备控制平面的保护。

通过CoPP和其他一些安全特性的结合,可以不仅对网络控制平面提供保护,也可以对网络整体基础设施提供保护,比如iACL,rACL,mls rate limit等,本文档着重介绍一下利用cisco网络设备的CoPP特性对网络设备控制平面提供保护的安全方案。其中借鉴了一些实际的部署和部署过程中的实验测试。

硬件支持情况

根据不同平台硬件架构的原因,有些CoPP特性是由软件来支持,而像7600等设备提供硬件支持Copp,Copp在设备上支持的情况

CoPP原理

一个路由器可以分成4个平面:

  1. 数据平面
  2. 管理平面
  3. 控制平面
  4. 服务平面

用户的数据流量一般是穿越网络设备,而不会直接访问网络设备的接口地址,而网络控制层面负责接收和处理发到网络设备接口地址的数据包,正常情况下只负责接收和处理网络路由协议,网络管理访问(SNMP,telnet,SSH等),进行一些智能处理,所以在中高端路由器上控制平面一般都是基于CPU架构的,而转发平面一般是基于asic架构的,大部分数据由转发平面的asic高速转发走了,但是在一些恶意攻击的情况下,攻击流量(DoS,网络病毒)会直接发送大量的无用的流量到网络设备的控制平面CPU(route processor),虽然转发平面可以线速转发流量,甚至这些攻击流量,但是控制平面却没有这样的能力去转发这样的数据量,这样会导致控制平面的瘫痪。通常网络设备会有如下现象:

  1. 路由处理器高CPU利用率(接近100%)
  2. 丢失路由信息和线路的keepalive,导致路由震荡
  3. CLI界面没有反应
  4. 路由处理器资源被占满(内存,buffer),不能正常处理合法IP数据
  5. 数据队列被占用,导致数据丢包

有没有办法在转发平面能够识别出合法的、可以转发到控制平面的流量,和恶意的流量,从而在转发平面直接限制转发到控制平面的恶意流量,同时这样的限制不会破坏合法的流量转发到控制平面,那么利用CoPP和其他一些特性的结合可以对网络控制平面实施一定程度的安全保护,由于CoPP在部分设备里是在转发平面硬件里实现的,那么不会影响转发平面的性能,下图说明了hardware CoPP的实现(以7600 PFC3举例)

CoPP的原理就是流量在经过线卡的时候,流向控制平面的时候在流量流动的途径上增加了硬件的control-plane或者软件的control-plane,在配有DFC线卡或者PFC上都有一个hardware control-plane的接口,流量会经过hardware rate limit 或者hardware control-plane接口的检查和限速,再发往控制平面的cpu,在控制平面也通过软件的方式实现了software control plane,也可以实现软件的CoPP检查和限速。通过这些control plane接口从而限定发往控制平面的数据流量。

但在高端网络设备一般都是位于网络的核心位置,所以流量一般都比较大,用软件实现CoPP会引起控制平面cpu利用率较高,没有太大的实际意义。

CoPP在大部分设备上都可以实现,只不过在底端设备上是通过softcontrol plane的方式实现的,CoPP和其他一些安全feature相比有如下特点:

CoPP 是rACL的扩展

在cisco大部分设备上都可以实现

采用MQC 配置模式,基于qos 区分服务模型

有一个固定的control-plane "interface"

由于基于qos模型在配置上具有高度的灵活性,permit, deny, rate limit, re-color

注意:但是硬件实现CoPP因为硬件的原因实现的时候也会有一定的限制,需要详细查阅文档和测试,其他一些网络设备只能在软件层面实现CoPP,对网络设备的CPU性能会有一定的影响。

CoPP的部署方案

网络设备的稳定可靠工作取决于多种因素,在现代网络设备体系架构下,中高档网络设备的数据层面一般是由大规模集成电路组成的处理芯片,大部分数据由数据平面进行交换,由于这部分电路是单独专门针对于IP数据交换设计的,所以可以满足高速的数据交换,即使碰到大规模的攻击流量,一般也不会造成路由器数据平面的瘫痪。

但是网络设备的控制平面一般是基于CPU架构的,为了完成智能控制而设计,并不擅长交换大批量的数据,所以控制平面一般都会只和特定的网络设备交换特定的信息,并不会负责交换用户的数据,在出现恶意攻击的情况下(包括病毒),大批量数据被中转到控制平面进行处理,从而导致控制平面的瘫痪,这在实际情况中经常遇到,这样我们可以部署控制层面保护,针对特定的网络设备硬件架构体系,在数据平面和控制平面之间设置一个过滤限制,只有合法的流量才会中转到控制平面,其它的我们认为不合法的流量就会被deny或者permit/rate limit,所以部署Copp的时候,由于用户的网络情况各有各的特点,在制定过滤条件的时候必须根据实际情况进行调研,要很好的了解用户网络设备控制平面、管理平面的使用,都有哪些流量需要访问控制平面,但是这在部署Copp的时候,了解用户数据流量的模型有可能是比较困难的,所以CoPP的部署需要事先比较详细的规划,下面是一般的部署控制层面保护的步骤:

部署CoPP初始阶段,部署控制策略的时候部署条件要宽松一些,比如超出带宽的流量不使用Drop动作,而大部分部使用transmit,以方便对流量模型进行监控,主要防止创建的策略不正确导致通讯出现异常。

使用第三方工具检测流量模型.在分析网络流量的时候可以利用sniffer,netflow等多种工具来进行分析,流量的分析以确认网络流量的基线为目的,以此得到的流量模型数据指导下一步的CoPP部署,简单的情况下,可以利用ios命令,如show policy-map control-plane ,show access-list进行简单的判断和分析

确认流量模型以后,最终部署CoPP,也就是根据得到的统计数据进一步按照流量模型数据严格控制策略参数并部署,如超出带宽的流量使用drop动作。

定期进行检测,修正流量模型,尤其是网络环境发生变化以后,重复2-3的步骤。

下面为部署copp的详细地部署方案,使用acl,policy来鉴别,过滤流量。

步骤1:网络流量分析-特定网络环境下网络设备控制平面流量分类

CoPP基于QoS的区分服务模型机制,所以网络流量分类方案可以简化copp策略部署。在分类之前需要了解所有的访问网络控制层面(Route Processor)的协议流量,有时候在生产网上完全了解所有到网络控制层面的网络流量类型可能是比较困难的,可以借助第三方工具(sniffer,netflow)建立到网络控制层面的网络流量模型,也可以暂时建立一个初始的CoPP分类,并进行部署,在部署过程中逐渐的去了解网络流量,推荐的分类方式如下:

BGP,IGP,Management,Reporting,Monitoring,Critical Application,Layer 2 Protocols,Undesirable,Default.

在实际应用的时候需要具体分析不同的场景,来具体细化不同的分类。

步骤2:使用ACL,class-map对网络流量进行鉴别

初步确认不同分类的网络流量后,具体实施的时候使用ACL对网络流量进行区分,推荐使用name acl, 名字可以使用步骤1中有实际意义的名字,这样方便对acl进行管理,对于需要访问route processor的协议流量(如bgp,ospf等)在acl里全部允许通过,在这个步骤里acl的source和destination地址先设为any,以方便对访问控制层面的流量进行监控,对于default分类的acl使用一个条目,permit ip any any,defualt 分类用来匹配其他acl没有区分的流量类型。

步骤3:使用policy-map定义对1,2步骤分类的流量进行针对性处理

在policy-map定义处理动作,如rate limit,drop ,transmit.

步骤4:使用service-policy把policy map作用在Control plane接口上,并评估鉴别不同的协议流量,开始过滤到route processor的流量。

最理想的情况下,我们在步骤1,2,3制定的acl可以鉴别出到route processor的所有流量,但是因为我们在步骤1,2,3制定的策略大部分情况下没有经过在实际生产环境中检验,所以大部分情况下需要在实际生产环境中进行调整,对于没有考虑到的网络分类流量 可以使用sniffer,或者其它的一些分析方法来分析哪些中转到控制层面的网络流量我们没有进行分类。

使用show access-list命令可以检验哪些流量通过了哪些Acl,目的是找出控制层面究竟使用了哪些协议的流量,甚至default class里面的acl计数如果大幅增长,也说明有些流量并没有被区分出来,需要进一步分析。

对于不能确认的流量需要进一步分析,否则在最终部署copp的时候把应该允许到控制层面的流量给拒绝了会引起严重的网络通讯问题具体的分析方法有:使用ACL,Receive acl ,packet analyzer,使用sinffer等网络分析仪的时候可以只捕捉发往控制层面的流量来进行分析,比如在76,65上可以使用span只捕捉发往控制层面的流量。一旦所有的发往网络控制层面的网络协议流量都鉴别出来以后,我们需要进一步优化我们的acl 配置,去掉一些没有实际使用的协议的acl,增加已经鉴别出来的协议的acl.

这一步我们先不采用drop策略,对超出带宽的流量也使用transmit,以防止配置错误引起问题,一方便我们对初始部署的CoPP进行测试,待网络模型确认以后再严格条件。

步骤5:限制源地址

分析出所有应该发往控制层面的不同协议的流量后,下一步进一步缩小源地址范围,大部分情况下,能够直接访问网络设备的流量的源地址都是同一管理辖区内的网络设备本身,比如某一运营商内部的网络设备地址或者网管设备地址,如果能区分出这些源地址的话,我们这一步修改acl只允许控制层面接受这些源地址范围内发出的不同协议的流量直接访问它们。

一般情况下,这和生产网的网络地址分配有关,原则上网络设备的地址分配网端需要和用户地址段区分开,以方便部署策略。分析源地址目的是为了确认网络的边界,以方便对边界内部的网络设备进行保护。但是有时候网络边界之间也需要交互一些网络控制信令,比如ebgp,在设置copp的时候需要区别对待。

确定源地址范围后,只允许授权的源地址的流量访问。部署copp策略,缩小源地址范围,只允许授权的网络设备访问控制层面,比如运营商网络设备ip地址网段,网管网段。

步骤6 copp rate limit

CoPP的另外一个好处是可以使用rate limit,可以控制发往控制层面的网络流量速率,在一开始部署的时候可以不限制各个流量分类的速率,可以全放开,在初步部署CoPP后,使用show policy-map control-plane 第三方工具通过统计分析和已初步部署的copp来分析不同类型流量的速率,在分析完生产网的流量模型后,进一步优化CoPP参数,比如调整copp rate limit速率,一开始不使用drop策略,一旦确认网络速率基础模型后,使用drop选项,把超出我们设定的速率的流量丢弃。

结合源地址,协议分类,以及速率控制可以达到比较好的控制层面保护的效果,需要注意的是有些关键流量,比如ospf ldp等可以不使用drop选项,尤其是bgp,在update的时候流量是比较大的,可以通过授权源地址的方式进行控制。

在所有的流量都确认完以后我们可以去掉default class,或者对default class进行一个速率限制,给它一个较低的速率。

步骤7,限制目的地址

一般情况下,copp控制的是发往自己本身接口的流量,一些特殊的协议流量会访问设备本身的一些特殊接口地址,这样我们可以进一步严格目的地址进行控制,比如ibgp流量一般只会发往设备本身的loopback地址,那么在bgp class里面我们可以控制这些流量只发给loopback地址,因为发给其他接口地址都是非法的。

步骤8,定期评估

一旦流量模型确认以后,就可以根据实际情况最终调整copp参数到最终的数值,完成CoPP的部署,但是copp参数需要定期进行调整,比如网络规模调整了,一些速率参数也需要调整。对网络流量模型的建立和分析也需要定期进行。

CoPP配置方案

配置命令:

控制层面安全加固使用MQC命令来对网络流量进行分类,实施策略来进行,CoPP配置分为4步:

创建ACL

网络流量首先使用class-maps来进行分类,

针对不同类型的数据流量使用Policy-map实施策略,

最后在全局命令中的control-plane接口下使用相应的service-policy命令应用保护策略。

配置控制层面安全保护步骤如下:

创建ACL

ip access-list extended name

定义数据分类

router(config)#class-map <traffic_class_name>router(config-cmap)#match <access-group | protocol* | ip prec | ip dscp>

定义service policy

router(config)#policy-map <service_policy_name>router(config-pmap)#class <traffic_class_name>router(config-pmap-c)# police <cir | rate> conform-action <transmit | drop > exceed-action <transmit | drop>

进入控制平面设置模式,应用QoS策略

router(config)#control-plane

router(config-if)#service-policy {input | output} <service_policy_name>

CoPP配置方案

这一节详细的介绍CoPP的配置命令及方法,相应的配置针对大部分CoPP配置场景,具体应用的时候需要根据具体生产环境进行删减。

流量分类

在实施CoPP之前需要识别不同的流量类型,并对不同的流量进行分类,只有合法的流量才允许转发到控制平面,或者进行限速,在对网络设备的实际流量进行调查以后,建议根据流量的重要性对流量进行分类。

下面使用了9个流量类型来进行流量分类举例,在实际方案中可以根据需求,安全策略,客户的流量分析进行调整

流量分类举例如下:

Border Gateway Protocol(BGP)

BGP keepalives and routing update

如果不运行BGP不需要这个分类

IGP

OSPF,EIGRP,RIP等

用来维护IGP routing protocol的运行的流量

管理流量

必要的网络流量,用来进行日常的网络管理

如:远程网络访问,如:telnet,SSH,NTP,SNMP,TACAS,HTTP,TFTP,FTP等

报告

网络性能统计流量,如:SLA 报告数据

监控

用来监控网络设备的流量。

如:ICMP,traceroute,这类流量应该被允许,但是速率应该被限制,防止被利用来攻击路由器。

关键业务数据

这部分数据流量要根据不同的用户环境来确认,如:

GRE,HSRP,VRRP,SIP,DLSw,DHCP,MSDP,IGMP,PIM.multicast traffic,IPSec

Layer2 协议

如:ARP

Undesirable

恶意流量应该无条件的丢弃,不能转发给路由器的CPU。

默认流量

剩下没有分类的流量放置在默认分类里

默认分类一般设置为低速率

使用ACL进行流量分类

使用访问控制列表对流量进行鉴别并分类,方案举例中使用extended-named ACLs,使用named ACL可以很方便对访问控制列表中的条目进行增加和删减,并可以用有意义的名字标示ACL.

使用ACL分类举例:

coppacl-bgp: BGP traffic

coppacl-igp: IGP traffic

coppacl-management: management traffic

coppacl-reporting: reporting traffic

coppacl-monitoring: monitoring traffic

copp acl-critical-app: critical application traffic

coppacl-layer2: ARP traffic

coppacl-undesirable: explicitly denies unwanted traffic (i.e. slammer worm病毒等)

在方案示例中举例说明ACL配置

BGP分类:

ip access-list extended coppacl-bgp

! allow BGP from a known peer to this router's BGP TCP port

permit tcp host 47.1.1.1 host 10.9.9.9 eq bgp

! allow BGP from a peer's BGP port to this router

permit tcp host 47.1.1.1 eq bgp host 10.9.9.9

permit tcp host 10.86.183.120 host 10.9.9.9 eq bgp

permit tcp host 10.86.183.120 eq bgp host 10.9.9.9

IGP分类:OSPF举例:

ip access-list extended coppacl-igpremark CoPP IGP traffic class! permit OSPFpermit ospf any host 224.0.0.5permit ospf any host 224.0.0.6permit ospf any any

管理流量分类:

ip access-list extended coppacl-managementremark CoPP management traffic class! permit return traffic from TACACS hostpermit tcp host 1.1.1.1 host 10.1.1.1 established! permit ssh access to the router from a specific subnetpermit tcp 10.86.183.0 0.0.0.255 any eq 22! permit telnet access to the router from a specific subnetpermit tcp 10.86.183.0 0.0.0.255 any eq telnet! permit SNMP access from the NMS host to the routerpermit udp host 1.1.1.2 any eq snmp

permit udp host 1.1.1.3 any eq ntp! Permit FTP from a specific host for IOS upgrades.permit tcp host 10.9.9.9 eq ftp host 1.1.1.1permit tcp host 10.9.9.9 eq ftp-data host 1.1.1.1

Reporting 流量分类

Reporting流量用来产生网络性能统计数据,在本方案示例中,我们使用SAA根据不同的DSCP产生ping流量,用来监测不同DSCP流量的反应时间,我们使用ACL或者match ip dscp来创建reporting流量分类:

ip access-list extended coppacl-reportingremark CoPP reporting traffic class! permit SAA generated ICMP requests from SAA source routerpermit icmp host 10.4.4.4 host 10.1.1.1 echo

监控流量分类

监控流量用来监控网络设备,这部分流量的目的地址一般是网络设备本身,是需要进行控制的流量

ip access-list extended coppacl-monitoringremark CoPP monitoring traffic class! permit router originated traceroutepermit icmp any any ttl-exceededpermit icmp any any port-unreachable! permit receipt of responses to router originated pingspermit icmp any any echo-reply! allow pings to routerpermit icmp any any echo

关键业务数据

这部分数据和用户的业务环境有关,这里举例说明:

ip access-list extended coppacl-critical-appremark CoPP critical apps traffic class! permit HSRPpermit ip any host 224.0.0.2! permit DHCP requestspermit udp host 0.0.0.0 host 255.255.255.255 eq bootps! permit DHCP replies from DHCP serverpermit udp host 10.8.8.8 eq bootps any eq bootps

Undesirable流量

恶意流量必须要阻断或者进行限制,

ip access-list extended coppacl-undesirablepermit tcp any any fragments

permit udp any any fragments

permit icmp any any fragments

permit ip any any fragments

permit udp any any eq 1434

Class-map

MQC提供了灵活的设置命令来建立service policy,配置copp的时候,首先通过MQC class-map命令来识别不同类型的流量,然后再通过policy map命令来设置策略,最后在接口通过service-policy命令激活策略。

CLASS-MAP设置举例

class-map match-all coppclass-bgpmatch access-group name coppacl-bgpclass-map match-all coppclass-igpmatch access-group name coppacl-igpclass-map match-all coppclass-managementmatch access-group name coppacl-management

class-map match-all coppclass-reportingmatch access-group name coppacl-reportingmatch ip dscp ef af31 af21 defaultclass-map match-all coppclass-monitoringmatch access-group name coppacl-monitoringclass-map match-all coppclass-critical-appmatch access-group name coppacl-critical-appclass-map match-all coppclass-layer2match protocol arpclass-map match-all coppclass-undesirablematch access-group name coppacl-undesirable

Policy-map

MQC设置下一步骤是建立策略(policy map),根据我们上面的class-map,为不同类的数据流量设置不同的处理策略,下面举例说明policy-map的设置,在这个举例中,所有的策略动作为transimit,唯一例外的是undesirable class分类,这部分流量是无条件丢弃的(drop). 在部署copp的初始阶段在策略中只使用transmit选项而不使用drop选项,这样我们可以在网络正常情况下监控不同分类里面正常数据转发速率,一旦我们确定了正常生产情况下的数据正常转发速率我们就可以进一步设置更为严格的策略,从而丢弃超出正常生产数据速率的数据,相对来说这种方法比较可靠一些,但是copp的限速参数是需要定期调整的,如果网络规模增大等因素出现,需要定期对copp的参数进行调整,也就是我们测定的网络正常情况下的速率基线也不是一成不变的。

policy-map copp-policyclass coppclass-bgp对bgp分类不进行限速class coppclass-igp对igp分类不进行限速class
coppclass-managementpolice rate 100 pps conform-action transmit exceed-action transmitclass coppclass-reportingpolice rate 30 pps conform-action transmit exceed-action transmitclass
coppclass-monitoringpolice rate 50 pps conform-action transmit exceed-action transmitclass
coppclass-critical-apppolice rate 75 pps conform-action transmit exceed-action transmitclass coppclass-layer2police rate 20 pps conform-action transmit exceed-action transmit

class
coppclass-undesirablepolice rate 10 pps conform-action drop exceed-action dropundesirable分类的数据流量被无条件丢弃

class class-defaultpolice rate 10 pps conform-action transmit exceed-action drop

默认队列里承载的流量是发往控制平面同时没有被分类的数据,在举例中默认分类被限速到10pps,同时超出设定带宽的数据被丢弃

在使用copp进行控制层面的保护,好处是我们可以对流量进行更细致的分类(rate limit做不到这一点),同时可以进行限速(目前的racl还不能进行限速),在网路情况比较复杂的情况下,网络管理员需要一些对控制层面保护的灵活手段,而不是简简单单地丢弃某些非法流量,允许合法的流量通过,比如ICMP echo (Ping),在控制层面保护部署的时候一般是允许的,因为正常情况下网络管理员需要ping工具进行网络诊断,但是我们在控制层面保护中简简单单允许ping包到达控制层面是不够的,因为高速率的ping包有可能是一个dos攻击,route processor必须对每个ping包进行回应,这样就造成控制层面的cpu(route processor)异常增高,所以简简单单的permit/deny无法区分恶意的ping还是正常的ping,控制层面保护使用MQC命令扩展了permit/deny这样简单的模型,所以ping echo可以被允许传送到控制层面,但传送的速率可以被进行限速,使用copp我们可以进行permit/deny和rate limited.

在使用控制层面保护时,推荐对转发到控制层面的一些数据进行限速,但是网络管理员部署控制层面保护的时候一定要了解不同分类的数据流量所需的数据速率,尤其是关键业务数据,

设置较低的速率会丢弃掉正常的数据,而设置较高的速率又会有被攻击的危险,确认不同数据分类所需的速率是和网络设备所在的位置,网络拓扑,网络设备路由表相关。

在经过一定时间观察,确定各类流量的基线后,最终确认控制层面保护策略的各种参数,比如可以用表格表述如下,在生产环境中可以根据生产中得到的数据对copp进行调整,并定期对网络流量进行测量和观察,特别在网络环境改变以后需要调整相应参数:

以上只是一个举例,具体的网络环境需要具体进行确认,比如我们一开始在初始环境下并没有使用drop动作,使用transimit动作,是为了确认各类流量的基线,在一些网络流量流量基线模型确认后,可以把动作改为drop,对超出平常流量模型的流量进行丢弃,又比如对一些非常关键的数据,比如bgp ,igp这样的流量我们可以确认流量的源和目的地,那么只允许我们允许的源和目的地进行通信,而不符合我们策略的就不允许到达控制平面,这样这些关键的数据可以不使用rate limit,而只使用permit/deny方式来控制。

监控网络控制平面保护

Show access-list

在制定完COPP策略以后,我们可以通过show access-list的一些信息来确认我们制定的策略是否正确,在show access-list命令中,对每一个条目会显示计数信息,如果应用acl以后,相应的条目并没有计数信息说明控制层面并没有接受到相应的数据流量,这说明这个条目需要我们仔细地去分析一下,有可能我们设置的acl并不正确。

另外通过acl也可以分析一些攻击的情况,但是在实际环境中可能比较困难,比如我们怀疑有冲击波病毒,可以通过设定acl来分析,比如:

Extended IP access list coppacl-undesirable

10 permit udp any any eq 1434 (163053 matches)

在以上acl条目中,大量的流量符合我们设定的acl条目,说明有可能是发往端口1434的流量异常增高,这有可能是病毒流量。当然使用其他工具分析可能更方便一些,比如netflow,但acl也提供了一种手段。

Show policy-map control-plane

由于copp使用了MQC命令,所以一些MQC的命令也可以使用,在应用QoS的时候我们可以使用show policy-map interface <接口号〉来显示一些接口的QoS应用情况,同样在使用CoPP的时候,IOS会在系统里为我们创建一个control-plane的接口,我们把我们的控制平面保护策略应用在control-plane接口上,这样使用show policy-map control-plane命令可以为我们在部署copp初始阶段提供一些非常有价值的信息。我们可以使用这个工具分析我们创建的控制策略、监控收集统计信息、排错。

下面的举例中显示了show policy control –plane 的信息,显示了我们应用的策略的一些动态信息,包括每个数据类的流量速率和符合和超出(confirm/exceed)我们策略的数据包统计信息。

server-2821#sho policy-map control-plane

Control Plane

Service-policy input: copp-policy

Class-map: coppclass-bgp (match-all)

1443 packets, 113844 bytes

5 minute offered rate 0 bps

Match: access-group name coppacl-bgp

Class-map: coppclass-management (match-all)

262 packets, 15720 bytes

5 minute offered rate 0 bps, drop rate 0 bps

Match: access-group name coppacl-management

police:

rate 250 pps, burst 61 packets

conformed 262 packets; actions:

transmit

exceeded 0 packets; actions:

drop

conformed 2 pps, exceed 0 pps

Class-map: class-default (match-any)

6335 packets, 385038 bytes

5 minute offered rate 6000 bps, drop rate 0 bps

Match: any

police:

rate 10 pps, burst 2 packets

conformed 297 packets; actions:

transmit

exceeded 6040 packets; actions:

drop

conformed 0 pps, exceed 12 pps

BGP class:一共有1433的包发给控制层面进行处理

Management class: 一共有262符合我们定制的策略被发往控制层面进行处理

Default class: 6040个数据包违反了我们定制的策略(10pps)被丢弃

其他攻击类型:

Fragmented Packets

默认情况下,fragment数据包可以绕过(bypass) 访问控制列表,所以就可以被一些攻击所利用,被攻击的路由器就要消耗更多的资源去重组这些fragment包。

访问控制列表有fragment关键字可以对fragment包进行特殊处理。

默认情况下,访问控制列表对不是初始的fragment包只会检查三层信息,而不管4层信息,增加fragmen关键字后,访问控制列表可以根据三层信息deny/permit不是初始的frament包。使用fragment关键字可以在部署copp的时候进一步保护控制平面受到fragment包的攻击(ip包分片攻击),下面的例子可以过滤掉相应协议的fragment包。

ip access-list extended coppacl-frags

permit tcp any any fragments

permit udp any any fragments

permit icmp any any fragments

在创建CoPP策略的时候可以考虑单独创建一个fragment类,比如CPP-class-fragments,初始的动作可以为drop策略,根据网络中流量的实际情况,可以增加rate limit, 策略当中的每个class的顺序是非常重要的,实施的时候需要把fragment类放置在整个策略的前面。如果fragment包优先被其他类处理,就达不到抵御fragment攻击的目的了。

在某些情况下,一个合法的应用可能使用fragment,如路由器处理ipsec,这种情况下,可以使用rate limit方式而不是简单地drop掉fragment包。例如:

Policy-map copp-policy

Class coppclass-fragments

Police rate 10 pps conform-action transmit exceed-action drop

CPU Rate limiters

在sup720上支持几个内置的安全特性,其中一个是内置的硬件CPU rate limiters,CPU rate limit 主要的作用是用来保护控制层面不被DOS攻击,在sup720上pfc3上有8个register供rate limit使用,用来匹配用户设置的不同的rate limiter条件,比如在pfc3上通过rate limiters可以对下面特定(special case)的流量进行限速:

oIngress and egress ACL bridged packets

ouRPF check failures

oFIB receive cases

oFIB glean cases

oLayer 3 security features

oICMP redirects

oICMP unreachable (ACL drop)

oNo-route (FIB miss)

oVACL log

oTTL failure

oMTU failure

oMulticast IPv4

oMulticast IPv6

由于CPU rate limit是内置在PFC上的,处理是基于硬件的,对数据的转发不会有太大的影响,但是CPU rate limit只能针对以上的几个special case进行处理,而不能像CoPP一样可以进行灵活的设置。而且在PFC3上只支持8个register。在PFC上一些CoPP硬件不能处理得情况,可以结合CPU rate limit一起使用, CPU rate limit是先于硬件CoPP处理的。 Mls rate limit处理完后,就不再由硬件CoPP进行处理。

Rate limit配置举例

1.mls rate-limit all ttl-failure 500 50

mls rate-limit all mtu-failure 1000 50

如果进入设备的数据报的TTL failure 或MTU failure,会造成数据包不通过Data

Plane进行处理,而会推到CPU,造成高CPU的问题。

2. 建议启用rate-limit限制CEF Glean对CPU的影响mls rate-limit unicast cef glean 1000 10

如果攻击的目的地址是下联端口网段内不存在的地址时,系统建立不了完整的ARP Entry,会使得去往此MAC 地址的数据包Punt 到CPU 进行处理,进而引起高CPU的问题。

3. 建议启用rate-limit限制ARP对CPU的影响

mls qos protocol ARP police 1000000 31000

如果发现网络中存在大量ARP 请求,会影响CPU 的处理的能力。可以通过上述命令进行抑制。

4. 建议启用rate-limit限制IP Option对CPU的影响

mls rate-limit unicast ip options 1000 10

如果进入设备的数据报的带有IP Option,会造成数据包不通过Data Plane 进行处理,而会Punt 到CPU,造成高CPU 的问题。可以通过上述命令进行抑制。

5. Cisco 7609缺省启用的rate-limit的功能

在Cisco 7609的设备上,系统已经缺省启用了如下四种功能:

IP RPF FAILURE

ICMP UNREAC. NO-ROUTE

ICMP UNREAC. ACL-DROP

IP ERRORS

目前问题

部署CoPP需要具体了解不同平台对CoPP支持情况,如果是硬件支持CoPP需要了解哪些feature在硬件上不支持,哪些feature使用mls rate limit或者其他方法更好一些,如果使用软件CoPP处理,需要了解部署CoPP对网络设备性能会有多大的影响,下面举例说明在cisco 7600路由器上部署CoPP的一些限制:

Multicast是由软件处理的,multicast包的处理可以结合mls rate limit来处理。

CoPP在硬件上不支持broadcast,可以结合traffic strom control来处理。

除了default class其他class不支持non-ip包,如is-is,

ACL中不能使用log关键字

Tcam资源如果被用光,CoPP有可能是由软件来处理

详细的限制信息和其他设备型号的信息请参阅cco文档,类似7600这样的路由器,如果网络规模比较大,处于大的节点,如果一些feature硬件不能支持,在使用软件CoPP的时候需要在生产网上小心部署,最好经过测试在进行。一些feature可以结合使用mls rate limit,如multicast包。

如果网络部署了is-is协议,因为CoPP把is-is非IP包放在default队列里,所以对default队列的速率限制需要小心,因为default队列里会有其他未分类的数据,比如stp,ipx,stp.如果遇到攻击的时候,攻击流量放在default队列,这样会影响isis数据,需要在生产网上经过测试再使用。default队列在这种场景下不使用drop策略。

CoPP是针对单台设备为一个单元进行保护,可以结合iacl,racl,mls rate limit等其他安全feature提供对网络整体基础设施的保护,进行网络设计的时候需要考虑到这些安全feature的实施,比如网络设备的ip地址段分配需要和用户的ip地址段分开进行设计。

第1页

相关推荐

使用nginx配置域名及禁止直接通过IP访问网站

前段时间刚搭建好这个网站,一直没有关注一个问题,那就是IP地址也可以访问我的网站,今天就专门研究了一下nginx配置问题,争取把这个问题研究透彻。1.nginx配置域名及禁止直接通过IP访问先来看n...

如何在 Linux 中使用 PID 号查找进程名称?

在Linux的复杂世界中,进程是系统运行的核心,每个进程都由一个唯一的「进程ID」(PID)标识。无论是系统管理员在排查失控进程,还是开发者在调试应用程序,知道如何将PID映射到对应的进程名称都是一项...

Linux服务器硬件信息查询与日常运维命令总结

1.服务器硬件信息查询1.1CPU信息查询命令功能描述示例lscpu显示CPU架构、核心数、线程数等lscpucat/proc/cpuinfo详细CPU信息(型号、缓存、频率)cat/proc/c...

Ubuntu 操作系统常用命令详解(ubuntu常用的50个命令)

UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...

从 0 到 1:打造基于 Linux 的私有 API 网关平台

在当今微服务架构盛行的时代,API网关作为服务入口和安全屏障,其重要性日益凸显。你是否想过,不依赖商业方案,完全基于开源组件,在Linux上构建一个属于自己的私有API网关平台?今天就带你...

Nginx搭建简单直播服务器(nginx 直播服务器搭建)

前言使用Nginx+Nginx-rtmp-module在Ubuntu中搭建简单的rtmp推流直播服务器。服务器环境Ubuntu16.04相关概念RTMP:RTMP协议是RealTi...

Linux连不上网?远程卡?这篇网络管理指南你不能错过!

大家好!今天咱们聊个所有Linux用户都躲不开的“老大难”——网络管理。我猜你肯定遇到过这些崩溃时刻:新装的Linux系统连不上Wi-Fi,急得直拍桌子;远程服务器SSH连不上,提示“Connecti...

7天从0到上线!手把手教你用Python Flask打造爆款Web服务

一、为什么全网开发者都在疯学Flask?在当今Web开发的战场,Flask就像一把“瑞士军刀”——轻量级架构让新手3天速成,灵活扩展能力又能支撑百万级用户项目!对比Django的“重型装甲”,Flas...

nginx配置文件详解(nginx反向代理配置详解)

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django,Flask,et...

30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务

在云计算时代,利用容器技术快速部署应用已成为开发者必备技能。本文将手把手教你在阿里云轻量应用服务器上,通过Docker高效部署Nginx并发布静态网站,全程可视化操作,新手也能轻松上手!一、准...

Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置

各位摸鱼搭子们!今天咱不聊代码里的NullPointerException,改聊点「摸鱼必备生存技能」——Nginx配置!先灵魂拷问一下:写了一堆接口却不会部署?服务器被恶意请求打崩过?静态资源加载...

如何使用 Daphne + Nginx + supervisor部署 Django

前言:从Django3.0开始支持ASGI应用程序运行,使Django完全具有异步功能。Django目前已经更新到5.0,对异步支持也越来越好。但是,异步功能将仅对在ASGI下运行的应用程序可用...

Docker命令最全详解(39个最常用命令)

Docker是云原生的核心,也是大厂的必备技能,下面我就全面来详解Docker核心命令@mikechen本文作者:陈睿|mikechen文章来源:mikechen.cc一、Docker基本命令doc...

ubuntu中如何查看是否已经安装了nginx

在Ubuntu系统中,可以通过以下几种方法检查是否已安装Nginx:方法1:使用dpkg命令(适用于Debian/Ubuntu)bashdpkg-l|grepnginx输出...

OVN 概念与实践(德育概念的泛化在理论和实践中有什么弊端?)

今天我们来讲解OVN的概念和基础实践,要理解本篇博客的内容,需要前置学习:Linux网络设备-Bridge&VethPairLinux网络设备-Bridge详解OVS+Fa...

取消回复欢迎 发表评论: