前文我们了解了IP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16652367.html;今天我们来聊一聊ARP安全相关话题;

  什么是ARP?

  ARP是Address Resolution Protocol的首字母缩写,翻译成中文就是地址解析协议;它主要是将ip地址解析成对应设备的mac地址;我们知道以太网设备之间通信都是需要二层mac地址的封装;那么我们平常配置的ip地址给设备,它是怎么和对端通信的呢?首先本端要发送ARP请求通信目标mac地址(如果本地ARP缓存表里没有对应条目的情况下,如果有就直接封装本端mac和ip地址为源mac和源ip,把对端的mac和ip封装成目标mac和目标ip);只有对端回复了arp请求以后,本端就会将arp回复报文中的源mac当作对应通信目标的mac,并将对应信息存入arp缓存表中,以备后续再次通信使用;简单讲ARP就是根据IP地址获取mac地址的TCP/IP协议;ARP协议有一个特点,就是同一局域网中的设备,只要收到一个arp回复包,局域网里的所有设备都会将对应回复包的源mac和对应源ip写入对应的arp缓存表里;这样一来非法主机在局域网里恶意发送伪造的arp应答报文,就会对应网络造成影响;

  ARP工作环境

  提示:arp主要工作在主机与主机之间,或者主机和网关之间,通常都是在同一vlan下,不会垮网段;

  ARP主要攻击方式和危害

  1、仿冒网关:所谓仿冒网关就是以网关的口吻欺骗其他主机;告诉其他主机自己就是网关;让其他主机误以为攻击者就是网关;

  提示:如上图所示,主机A向主机B发送arp回复报文说,网关的mac地址为222,主机B收到此报文后,会将原来在自己的arp缓存表里的对应条目的mac地址给覆盖掉,这样一来带来的后果是,主机B和正常的网关通信就中断了;主机B和网关的通信会统统发送给主机A;

  2、欺骗网关:所谓欺骗网关就是冒充合法主机的口吻向网关发送非法arp回复报文;让网关误以为攻击者就是真正的合法主机;

  提示:如上图所示,主机A向网关发送,主机B的mac为555,网关收到此报文后,会将主机的arp缓存表更新为对应收到的arp应答报文里的mac;这样一来网关和真正合法主机的通信就会中断;

  3、欺骗主机:所谓欺骗主机就是冒充合法主机向另一主机发送非法的arp应答报文,让另一主机误以为攻击者就是通信的对端;

  提示:如上图所示,主机A欺骗主机C,说主机B的MAC为555,主机C收到此报文后,会更新自己的arp缓存表,将正常主机B的mac地址给覆盖掉;这样一来主机C就不能正常和真正的主机B通信;

  中间人攻击

  提示:所谓中间人攻击就是仿冒网关、欺骗网关的结合;对于网关来说,攻击者就是合法的主机(欺骗网关);对于合法主机来说,攻击者就是网关(仿冒网关);正常主机B和网关的通信会先发送给攻击者,然后被攻击者捕获,然后再由攻击者再次封装将对应请求发送给网关;网关回包也是先将包回复给攻击者,被攻击者捕获以后再封装发送给合法主机;对于合法主机来说它是没有任何感知的;上图是主机A和主机B都被非法主机双向欺骗;

  ARP MISS

  所谓ARP miss就是指网络中用户向设备发送目标ip不能正常解析的ip报文(即路由表中存在对应IP报文的目标ip地址路由表项,但没有对应路由下一跳的arp表项);这种触发arp miss消息的ip报文我们就成为arp miss报文,即arp miss报文会被上传到cpu处理;设备根据arp miss消息生成和下发临时arp表项并向目标的网络发送arp请求报文,这样就增加了设备cpu的负担,同时消耗目标网络的带宽资源;

  提示:如上图所示,攻击者发送不能正常解析的ip报文给交换机(如在局域网里不存在的ip),交换机收到以后,不能正常获取到mac地址,此时就会触发ARP MISS消息,同时会向目标网络发送arp请求消息;交换机收到不能正常解析的ip报文触发arp miss消息加剧设备cpu的负担,同时向目标网络发送arp请求,占用目标网络的网络带宽;虽然少量的arp请求不能对网络造成什么影响,如果有人恶意发送大量的不能解析的ip报文,就会对设备cpu和目标网络的带宽造成极大的影响;

  ARP攻击防御措施

  1、ARP防网关冲突:该技术的应用场景主要是防止有人恶意冒充网关;主要工作原理是我们在交换机上开启了这项功能以后,如果ARP报文的源ip地址与报文入接口对应的VLANIF接口IP地址相同;或者ARP报文的源IP地址是入接口的虚拟IP地址,但ARP报文的源MAC地址不是VRRP的虚拟MAC;即上述两种情况都是攻击者在冒充网关的ip地址进行攻击;交换机收到此类报文就会认为该ARP报文和网关地址冲突,交换机将生成ARP防攻击表项,并在后续的一段时间内丢弃该接口收到的同VLAN以及同源MAC地址的ARP报文,这样就可以防止与网关地址冲突的ARP报文在VLAN内广播;

  提示:我们只需要在交换机的全局模式下开启对应功能即可;

  查看ARP防止攻击表项

  2、网关开启主动发送免费arp:其实这是利用网关发送免费arp来覆盖攻击者的arp报文;

  提示:默认开启发送免费arp报文功能后,间隔是60秒发送一次;我们可以使用interval 来指定间隔多久发送一次,最小间隔为1秒一次;

  抓包查看网关是否在发送免费arp呢?

  提示:可以看到现在pc上抓包,网关会每个两秒发送一次免费arp,广播给同一广播域的其他主机,网关的mac信息;这在一定程度上可以缓解攻击者的攻击;但是如果攻击者发送伪造的arp报文如果比网关发送的免费arp报文快,则攻击者的报文会覆盖网关自身发送的免费arp广播;一般使用该技术是结合上面的防网关冲突使用;

  3、ARP报文速率

    3.1、限制任意源MAC的ARP报文

    3.2、限制特定源MAC的ARP报文

    3.3、限制特定源IP的ARP报文

  4、ARP Miss消息限速

    4.1、限制任意源IP的ARP MISS消息

    4.2、限制特定源IP的ARP MISS消息

  查看当前ARP限速配置

  查看arp miss限速配置

  查看arp处理的报文统计数据

  5、DAI(Dynamic ARP Inspection,动态ARP检测)可防止中间人攻击;该技术建立在dhcp snooping的绑定表的基础之上;当设备收到ARP报文时,将此ARP报文对应的源ip、源mac、vlan以及接口信息和绑定表的信息进行比较,如果信息匹配,说明发送该ARP报文的用户是合法用户,允许此用户的arp报文通过,否则就认为是攻击,丢弃对应arp报文;

  DAI配置流程

  1、全局开启dhcp snooping功能;

  2、在某个VLAN内开启dhcp snooping功能;

  3、配置信任接口;

  4、在接入设备的接口开启ARP动态监测功能即可;

  实验,如下拓扑配置DAI监测

  sw1的基础配置

sys
sys sw1
vlan 2
int g0/0/1
p l a
p d v 2
int g0/0/2
p l a
p d v 2
int g0/0/3
p l a
p d v 2

  dhcp-server的基础配置

sys
sys dhcp-server
dhcp en
vlan 2
int g0/0/1
p l a
p d v 2
int vlanif 2
ip add 172.16.20.254 24
dhcp se int

  验证DHCP服务器地址池

  提示:可以看到有两个地址被使用,说明dhcp服务器正常工作;

  1、在sw1上开启全局开启dhcp snooping功能

  提示:全局开启dhcp snooping功能,需要现在全局开启dhcp功能;

  2、在vlan2内开启dhcp snooping功能

  3、配置dhcp snooping 信任接口

  查看绑定表

  提示:如果我们是后面才开启的dhcp snooping功能,需要让pc重新拿地址,对应绑定表就会形成;

  4、在接口开启arp动态检测功能

  验证配置结果

  查看arp检测到arp报文丢弃计数

  提示:我这里是没有模拟攻击,如果有攻击,这对应统计数量就会有;

HCNP Routing&Switching之ARP安全的更多相关文章

  1. HCNP Routing&Switching之代理ARP

    前文我们了解了端口隔离相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16186451.html:今天我们来聊一聊ARP代理相关话题: 端口隔离之破解之 ...

  2. HCNP Routing&Switching之OSPF网络类型

    前文我们了解了PPPoE协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15182512.html:今天我们聊聊一聊OSPF中的网络类型相关话题: ...

  3. HCNP Routing&Switching之IS-IS报文结构和类型

    前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html:今天我们来聊一聊IS-IS动态路由协 ...

  4. HCNP Routing&Switching之BGP报文结构、类型和状态

    前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...

  5. HCNP Routing&Switching之组播技术-组播协议IGMP

    前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...

  6. HCNP Routing&Switching之端口隔离

    前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...

  7. HCNP Routing&Switching之MUX VLAN

    前文我们了解了代理ARP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16188230.html:今天我们再来聊一聊vlan隔离相关话题MUX VLA ...

  8. HCNP Routing&Switching之Super VLAN

    前文我们了解了VLAN隔离技术MUX VLAN相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16196936.html:今天我们来聊一聊VLAN优化S ...

  9. HCNP Routing&Switching之VRRP基础

    前文我们了解了链路高可用技术链路聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16279078.html:今天我们来聊一聊另一种高可用技术,网关高 ...

随机推荐

  1. 8.3 如何在Windows电脑安装Java开发环境(JDK)

    下载 来到JDK官方下载界面,找到Java SE 8(简称JDK 8)后面的JDK下载,来到该界面,先同意协议,然后下载对应平台的JDK,我们这里下载Windows x64. 安装 双击安装就行了了, ...

  2. C++简单工厂模式的学习

    我们先从最常见的C++类的一个实现开始说起, class API { public: virtual test(std::string s)=0; protected: API(){}; }; cla ...

  3. ASP.NET MVC-动态网页开发-宿舍管理系统

    很不容易,我在这两周为了数据库的课程设计第一次学习到了动态网页的开发.首先是尊重知识,也是为了知识不被忘记,在这里写下这第一篇博客.才疏学浅如果有什么理解错误,多包涵. 首先是环境的配置,我自己使用的 ...

  4. 浏览器js调试

    经常忘记,还是需要记录一下啊 右键,检查元素 在元素DOM节点右击,复制CSS选择器 function sleep (time) { return new Promise((resolve) => ...

  5. 查询postgresql表结构和索引

    通过系统数据字典查询表结构 selectcol.table_schema,col.table_name,col.ordinal_position,col.column_name,col.data_ty ...

  6. BUCK 电路PSIM仿真模型搭建之二 (传递函数模块的使用)

    1. 利用S函数模块进行环路仿真 将PI 写成 截止频率的表示形式 Kp* (Ti*s+1)/Ti*s  ,  这里Kp = 20,  Ti = 0.0001  ,  写入仿真模型参数框 仿真结果: ...

  7. led的进化

    1.一个led亮100ns,灭400ns,循环 2.一个led亮2500ns,灭5000ns,亮7500ns,灭10000ns循环 3.以2500ns为变化周期,20000ns为一个循环,每个周期的亮 ...

  8. NFS配置-实现多服务器共享目录

    NFS网络文件系统 为什么要用NFS? 前端所有的应用服务器接收到用户上传的图片.文件.视频,都会统一放到后端的存储上.共享存储的好处:方便数据的查找与取出,缺点:存储服务器压力大,坏了丢失全部数据. ...

  9. [BJDCTF2020]Cookie is so stable-1|SSTI注入

    1.打开之后在各个界面查看源代码,未发现很明显的有用信息,仅发现了提示,结果如下: 2.尝试输入数据,结果就是输入什么就回显什么,也未进行过滤,尝试进行sql注入失败,结果如下: 3.那就根据提示抓包 ...

  10. Vue 事件的基本使用 && 事件修饰符

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...