一、中间人攻击案例模拟

  

  

如上图,是一个简单的网络架构图。有三台终端同时连接到同一个工作组交换机中。(实际情况可能会有更多的终端,为了简单起见,笔者以三个终端为例)。此时如果主机A需要访问主机B(第一次访问时只知道对方的IP地址而不知道MAC地址),就需要先发送一个ARP请求。向各台主机询问,IP地址为多少的主机其MAC地址为多少,并会附上主机A的MAC地址。这个ARP请求会以广播的形式在网络中传播,即网络中的每一台客户端都将受到这个信息。正常情况下,除了B以外的不相关的主机都会丢弃这个数据包。而只有主机B接收到这个请求后,才会进行响应。主机B首先会在自己的ARP缓存中创建主机A IP地址与MAC地址的相关记录(如果已经存在这个IP地址,则会进行更新),并向主机A发送ARP响应。此时的ARP响应是一个单播数据包,即直接发送给主机A,而不是以广播的形式发送。

  以上是一个比较正常的ARP处理流程。但是在这个处理的过程中,如果没有采取恰当的安全措施,则很可能会引发中间人攻击。如上图所示,如果终端设备C在收到主机A发送的ARP请求之后,没有抛弃这个数据包,而是发送了伪造的ARP响应(将自己的MAC地址替代主机B的MAC地址),其就可以发起中间人攻击。在接收到主机C的ARP响应之后,主机A将不能够拥有主机B的正确MAC地址与IP地址。对于主机A来说,它就会错误的认为主机C就是其要发送数据的对象。从而将数据直接发送给主机C。此时对于主机A和主机B之间的任何通信,就会被发送到主机C上。然后主机C在获取相关的内容之后,可能进行流量的重定向。在这个过程中,主机C就被称为中间人。这个过程就被称为中间人攻击。
   二、通过动态ARP检测来防止中间人攻击

  为了有效防止中间人攻击,在思科的网络产品中设计了动态ARP检测。其原理比较简单,就是交换机的相关端口会自动检测ARP数据包来自于正确的端口,并且没有被攻击者所更改或者欺骗。这个原理说起来简单,其实要实现起来需要经过许多的技术处理。通常情况下,通过DHCP监听绑定表,交换机能够确定正确的端口。如果交换机能够数据来自错误的端口,则会自动抛弃这个数据包,并会将相关的信息记录在案。而且还会将违规端口设置为err-disable状态,攻击者将不能够对网络进行进一步的破坏工作。

  如上图所示,如果要在这个环境中启用动态ARP检测技术,需要执行如下几个步骤。

  第一步是需要在各个交换机端口上启用DHCP监听。如上所示,动态ARP检测需要判断数据的端口是否来自合法的端口。而要检测这个内容的话,必须要有DHCP监听绑定表。而这个表则是有DHCP监听程序创建的。这里需要注意,要在交换机所有的接口上启用这个监听服务。否则的话,就可能会出现问题。

  第二步是比较关键,是需要将交换机间的连接配置为DAI(动态ARP检测)信任端口。在上面举例子的时候,笔者为了简单起见,只画了一个工作组交换机。而在实际工作中,企业往往是有多个交换机共同组成一个网络。此时如果让多个交换机之间也能够启用动态ARP检测功能呢?其需要做的配置,就是将交换机之间的链路配置为DAI信任端口。可以使用命令ip arp inspection trust来实现。

  当启用了动态ARP检测功能,如果再发生中间人攻击事件的话,交换机会如何应对呢?如上图所示,当攻击者C连接到工作组交换机,并且试图发送虚假的ARP响应时,交换机会根据DHCP监听绑定表检测到这种攻击行为,并会丢弃这个ARP数据包。然后交换机会将这个攻击者C所连接的端口设置为err-disable状态,并向管理员发出警报。

  当启用了动态ARP检测的时候,需要注意其误诊断的情况。如上图所示,如果中间人C其不是直接连接在工作组交换机上。而是连接在一个集线器上。然后再通过这个集线器连接到交换机。此时当其发出中间者攻击时,交换机会将这个接口关闭掉。此时连接在这个接口上的所有主机都将无法与网络进行通信。这个“一人有罪,全家受罚”的办法,往往会涉及到无辜。网络管理员在启用这个功能时,需要考虑到这个负面作用。在后续排除故障的时候,也会有参考的价值。

  三、动态ARP检测在其他方面的作用

  ARP动态检测功能在防止中间人攻击方面有比较特殊的表现。但是其功能还远远不止这个方面。如ARP动态检测功能还可以实现ARP抑制。即限制入站ARP数据包的速率。如果当ARP数据包的速率达到一个指定的数值之后,此时可能网络中存在着ARP攻击。在这种情况下,交换机会自动将这个接口设置为disable状态。要启用ARP抑制功能,需要在交换机中进行额外的配置。如可以通过如下命令来实现:ip arp inspection limit rate (ARP数据包速率)。执行这个配置并不难,其难点在于如何确定这个速率。如果速率设置的比较高,那么起不到ARP抑制的功能。相反,如果设置的比较低的话,又可能会影响到网络的正常使用。

  四、动态ARP检测需要使用的相关技术

  从以上的分析中可以看出,动态ARP检测并不是一门独立的技术,其必须要有其他的技术的帮助才能够实现。故笔者更喜欢将其称为一个技术的组合。如需要启用DHCP监听程序才能够帮助交换机判断数据来源接口的合法性等等。当启用ARP检测技术的时候,交换机会自动判断是否启用了一些必须的辅助技术。如果没有启用的话,交换机会报错,并终止用户的请求。所以在配置这个功能的时候,网络管理员还需要了解其他与之关联的技术。特别是需要了解其实现的一些前提条件,即需要先启用哪些技术。

  在实际工作中,如像用户介绍或者培训过程中,笔者将动态ARP检测技术当作一个安全的解决方案(几种技术的组合),而不是一门单独的技术。这无论是在学习还是在配置中都需要引起重视。笔者再强调一次,动态ARP检测是一种结合DHCP监听技术、IPSG技术等等的安全方案,其主要用来解决跟ARP攻击相关的安全问题。它能够有效保护多层交换网络中接入层的ARP攻击,如ARP中间人攻击、ARP欺骗、ARP扩散攻击,实现ARP抑制等等。当然在实现的过程中,也会存在一些负面作用。其最大的负面影响就是会使得连接在同一个接口上的其他无辜用户遭受到损失。在设计与部署动态ARP检测功能的时候,需要考虑到这个问题。如当连接到某个接口的终端出现网络故障,而其他接口运作正常时,就需要考虑到是否是这个原因所造成的。


ARP检测的技术手段和作用详述相关推荐

  1. android arp 检测工具,android检测arp攻击

    前段时间突然和别人讨论到arp检测这块的实现,心血来潮,将腾讯的wifi管家给反编译了一下,看了它如何实现arp检测,下面是分析的结果. 下面是wifi管家检测arp攻击的类,进入的时候会发送一个me ...

  2. C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。

    C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加s ...

  3. linux 系统arp检测工具,基于LinuxARP检测与防御系统.doc

    基于LinuxARP检测与防御系统 基于LinuxARP检测与防御系统 摘 要:ARP协议,即地址解析协议,由于协议存在的漏洞导致ARP欺骗几乎无法避免.为探讨如何解决这一问题,通过理论研究和实证,论 ...

  4. CCIE理论-第八篇-SD-WAN(三)+DAI(动态ARP检测)

    CCIE理论-第八篇-SD-WAN(三) 首先来说上一章的问题, vbound和vsmart还没出来 . 指定域和vbound 初始化搞完了,那么需要去添加vsmart和vbound了 添加设备 添加 ...

  5. ccd视觉定位教程_CCD视觉检测机有哪些作用?

    伴随着视觉检测机在工业生产制造中的逐渐运用,如今工业生产制造也开始逐渐向自动化的方向进行靠拢.那么,视觉检测机有什么样的作用?今天,就来为大伙儿解答一下. 视觉检测系统是指利用CCD工业镜头将被摄取目 ...

  6. Dynamic ARP Inspection(动态ARP检测)功能,简称DAI

    Dynamic ARP Inspection简介: Dynamic ARP Inspection(动态ARP检测)功能,简称DAI功能.通过检查ARP(Address Resolution Proto ...

  7. linux 系统arp检测工具,linux网络常用诊断工具

    ping命令是检测网络通讯链路状况工具之一,主要用于查看网络上另一个主机系统的网络连接是否正常. 参数: -c   设置完成要求回应的次数. -f   极限检测. -i   指定收发信息的间隔时间. ...

  8. 过零检测电路原理与作用 可控整流

    原文地址:http://blog.163.com/liuyunqian@yeah/blog/static/7039584320104185634579/ 使用光耦 Multisim仿真电路 网友建议 ...

  9. C/C++中Static的作用详述

    http://www.dz3w.com/mcu/clanguage/050409//C272.htm 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第 ...

最新文章

  1. 关于神经网络模型的一些入门知识
  2. Android-Toolbar相关
  3. UA MATH563 概率论的数学基础I 概率空间1 基本概念
  4. 计算机视觉 | 计算机界国际学术会议和期刊目录
  5. 人类视觉系统_对人类视觉系统的对抗攻击
  6. 安卓线程同步面试_Android面试题
  7. IIS FTP 安装程序无法复制文件的问题
  8. error: Zip file too big (greater than 4294959102 bytes)
  9. matlab 图像保存为视频教程,山东大学《数字图像处理(MATLAB)》江铭炎视频教程
  10. 推荐几款微信小程序常用组件库
  11. SharePoint 常用开发工具
  12. Android面试整理
  13. 苏索轰世界波 米兰2:0热那亚重返意甲前四
  14. 美国证监会暂停香港设立的区块链公司的股票交易
  15. python创建角色_Python Design Pattern - 4.创建型模式
  16. JTAG、SWD、JLINK、ST-LINK、ULINK的区别
  17. 蚂蚁金服如何开垦农村金融市场
  18. 谢希仁的第七版计算机网络--第四章总结概述
  19. DevExpress官方汉化文件对界面进行汉化的过程
  20. CodeIgniter 框架路由

热门文章

  1. 我为什么要用 Javascript 编写 CSS?
  2. 程序员面试中常见的哈希表,到底是什么?
  3. 老身掐指一算,国产游戏“出海”正当时?
  4. 华为高管涉嫌受贿已被带走调查
  5. 计算机安全最基础知识,计算机的分类(信息安全基础知识)
  6. c语言怎么定义一个条件变量,C++ 条件变量(condition_variable)
  7. html中怎么远程控制小车,利用ESP8266远程控制小车 求大佬帮忙加段程序
  8. 有机晶体数据库_面向Journal of Organic Chemistry作者的晶体学信息文件(CIF)工作流程将于10月6日作出调整...
  9. 灵魂拷问!java数据结构面试题
  10. 学术诚信的重要性_关于学术诚信