二层攻击分类及防范

理解和防御MAC层攻击:

  MAC泛洪攻击的过程:

  • 交换机基于合法MAC地址表的条目来转发流量
  • 攻击者以不同的源MAC地址发送多个数据包
  • 在较短的时间内,交换机的CAM表会一直被填充,直到它再也无法接受新的条目为止。只要攻击行为还在进行中,交换机的MAC地址表就会一直处于填满的状态
  • 交换机开始把它接受到的所有数据包,向所有端口泛洪,因此主机A发往主机B的数据帧,也会被泛洪到交换机的端口3上

  造成的不良影响:

  • 交换机流量转发的效率很低且流量巨大,这可能会影响到网络中所有用户的传输速度
  • 入侵设备可以连接到任意交换机端口,并截获该接口平常无法收到的流量

  缓解MAC泛洪攻击的方法:

  • 端口安全: 可以在交换机端口上限定一个具体的MAC地址或限定MAC地址的数量。若启用sticky特性,则会把自动学习到的地址保存在配置中。
  • 白名单默认只有一个MAC地址
  • SW(config-if)switchport port-security maximum 5------------白名单数量改为5个


  开启端口安全功能
  switchport port-security [violation {protect | restrict | shutdown}]
  参数说明

  • switchport port-security violation shutdown //违规后执行动作shutdown(err-disable),默认执行策略就是把端口err-disable掉
  • switchport port-security violation protect //将违规的mac地址的流量丢弃,不记录
  • switchport port-security violation restrict //将违规的mac地址的流量丢弃,并向SNMP发送一个违规日志

  当以下情况发生时,激活惩罚(violation):

  • 当一个激活了Port-Security的接口上,MAC地址数量已经达到了配置的最大安全地址数量,并且又收到了一个新的数据帧,而这个数据帧的源MAC并不在这些安全地址中,那么启动惩罚措施
  • 当在一个Port-Security接口上配置了某个安全地址,而这个安全地址的MAC又企图在同VLAN的另一个Port-Security接口上接入时,启动惩罚措施

  把该接口shutdown之后再no shutdown,接口的安全机制消失,原接口白名单也失效,故使用MAC粘滞特性:
    SW(config-if)#switchport port-security mac-address sticky

  单播泛洪阻塞特性能够防止交换机在不必要的端口上转发单播泛洪流量。
  Block Unknown Unicast/Multicast
    SW(config-if)#switchport block {unicast|multicast}--------当交换机收到一个数据帧需要泛洪时,不会在配置了port-security的接口上泛洪


理解和防御VLAN攻击:
  1.内容概述及攻击相同点
   本文着重阐述双重Tag标记VLAN跳跃攻击原理以及其与基于DTP的VLAN跳跃攻击相同及差异处。
   双重Tag标记VLAN跳跃攻击与基于DTP的VLAN跳跃攻击其目的是一样的:都是从一个VLAN中发送攻击报文(ARP、DDOS)到另一个VLAN中的目的主机;并且其都是基于二层的攻击报文――与三层转发毫无关系(基于VLAN跳跃的双向攻击除外)
  2.DTP攻击的原理及防御阐述
    2.1 DTP攻击的原理
    基于DTP的VLAN跳跃攻击原理

    • 攻击主机首先发送DTP报文欺骗直接连接的交换机认为攻击主机是台具备Trunk功能的设备从而与对方建立Trunk连接,
    • 接下来攻击主机发送带有Tag标记的攻击报文,其Tag号为目的主机所处VLAN,从而达到跳跃VLAN进行攻击的目的。

   2.2 DTP攻击的防御
    对于基于DTP的VLAN跳跃攻击防御我们只要关闭交换机端口的DTP自协商功能(switchport nonegotiate),攻击就会失效。

双重Tag标记VLAN跳跃攻击

    3.1 与DTP攻击的不同点
      但是对于双重Tag标记VLAN跳跃攻击来说,就算交换机关闭端口DTP功能,其攻击依然有效,因为其攻击原理不依赖于DTP协商。
    3.2 攻击实现的必备条件
      但是要实施双重Tag标记VLAN跳跃攻击也有它的前提条件:

    1. Trunk链路必须为802.1Q封装,不能是ISL封装
    2. 攻击者所处VLAN必须与Trunk链路本征(Native)VLAN相同
    3. 其无法攻击处于不同VLAN但在同一交换机上的目标主机

    3.3 攻击流程的深度解析
      具体原因见下面分析:
      攻击流程:
      1.攻击主机首先封装双Tag标记的攻击报文,其外层标记为Trunk链路的Native VLAN 号,我们可以使用show interface trunk来查看Trunk链路的Native VLAN号是多少,默认与default VLAN相同,是VLAN1;其内层标记是要攻击的目的主机所处VLAN
      2.该报文到达交换机端口后,交换机如何处理呢?首先我们来了解一下交换机端口对untag与tag数据包的处理流程:
       交换机收到一个数据包除了学习它的源地址外,还需查看该数据包是否有Tag标记,如果该数据包没有Tag标记,就放到端口所属的Default VLAN里;如果数据包有Tag标记的话,交换机就会查看端口是否属于相应的VLAN,有则转发到该VLAN,没有就直接丢弃。
        讲到这里我们应该就明白了,由于外层Tag标记=Native VLAN=default VLAN=1,而交换机一查该端口也正处于VLAN 1,所以交换机会把该攻击报文放到VLAN 1 进行转发。
      3.数据包到了VLAN 1中如果交换机在MAC表中查找不到相应的转发表项,就会在VLAN 1内的所有端口以及Trunk端口进行泛洪处理。
      4.Trunk端口再转发该报文之前,发现其Tag值为1,与其native VLAN的值相同,因此会把该Tag值去掉。这是因为cisco交换机在dot1q的VLAN封装类型下面默认是不对native VLAN打标签的(我们可以通过show vlan dot1q tag native来查看,默认是disable);但是如果是ISL封装的话就要全部打上标签。
      这也是前面提到为什么Trunk链路必须为802.1Q封装,不能是ISL封装,如果是ISL封装的话,外层标签没有去掉,攻击报文到达另一台交换机依旧会被转发到外层标签所属VLAN。
讲到这里我们在想一下如果外层标签的Tag值与Native VLAN不一样会怎么样?交换机在从Trunk端口转发出去前查看该攻击报文,看其有Tag值(已经有Tag值的话交换机不会重新打标)并且其范围与Native VLAN不一样,就会直接转发。这样外层标签也没有去掉,这也就是为什么攻击者所处VLAN必须与Trunk链路本征(Native)VLAN相同。
如果攻击者所处VLAN与本征VLAN不一样的话:
    (1) 它如果把外层标签号设置与所处VLAN相同,那么到trunk链路时,外层标签无法去除;
    (2) 它如果把外层标签号设置与本征VLA相同,那么到端口就会被丢弃(因为该端口不属于本征VLAN)
      5.被去掉外层标签的攻击报文到达Trunk对端交换机后,对端交换机读取Tag值,发现该值是目的主机所在VLAN,就把攻击报文转发到该VLAN,至此单向攻击完成。
    3.4 攻击行为的局限分析
      对于这种攻击方法无法攻击处于不同VLAN但在同一交换机上的目标主机;不难理解,如果没有Trunk链路的话,它最多只能在外层标签所属VLAN里泛洪,而无法到达目的VLAN。
    3.5 此种攻击的防御措施
      第一种方法我们只要更改默认的native VLAN号,并且该VLAN号不用于其它用途,就能使其中的一个攻击条件――(攻击者所处VLAN必须与Trunk链路本征(Native)VLAN相同)――无法满足,通过命令swithport trunk native vlan xx来修改native vlan
      第二种方法,那就是对Native VLAN进行打标处理vlan dot1q tag native就No problem了。

猜你喜欢

转载自www.cnblogs.com/ethanyue/p/9274618.html