1.ARP攻击介绍
1.1 ARP协议
ARP(地址解析协议)位于数据链路层,主要负责将某个IP地址解析成对应的MAC地址。
1.2 ARP原理
当局域网中的某台机器A要向机器B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带机器A的IP地址,物理地址),请求B的IP地址回答对应的MAC地址。局域网所有机器包括B都收到ARP请求,但只有机器B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存,接着使用这个MAC地址发送数据。
1.3 ARP欺骗
在每台主机中,都存有一张ARP缓存表。当计算机接收到ARP应答的时候,就会对本地的ARP缓存表进行更新。
因此,当局域网中的某台机器C向A发送一个自己伪造的ARP应答,而如果这个应答是C冒充B伪造的,即IP地址为B的IP,而MAC地址是伪造的,当A接收到C伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来B的IP地址没有变,而它的MAC地址已经不是原来的MAC。
如图 1.1所示,设备A的本地ARP缓存中B的MAC地址为2-2-2,设备B的本地ARP缓存中A的MAC地址为1-1-1,正常通信。
图 1.1 A,B设备间正常通信
如图 1.2所示,发生ARP欺骗后,设备A的本地ARP缓存中B的MAC地址为3-3-3,设备B的本地ARP缓存中A的MAC地址为3-3-3。设备C(攻击源)通过构造假的ARP应答报文和转发数据,能够在不影响设备A和设备B正常通信的情况下实现信息截取。
图 1.2 产生ARP欺骗后A,B设备通信
1.4 ARP泛洪
在每台主机中,都存有一张ARP缓存表。ARP缓存表的大小是固定的。
因此,当局域网中的某台机器C短时间内向A发送大量伪造的源IP地址变化的ARP报文,造成机器A的ARP缓存表资源耗尽,合法用户的ARP报文不能生成有效的ARP表项,导致正常的通信中断。
另外,通过向机器A发送大量的ARP报文,会导致CPU负荷过重,影响正常的任务处理。
2.ARP攻击解决思路
ARP攻击不仅会对机器性能造成影响,还可能造成信息被黑客截取。SylixOS能够防御上述ARP攻击行为,为用户提供更安全的网络环境和更稳定的网络服务。
2.1 ARP泛洪解决思路
针对ARP泛洪攻击,原理是短时间内大量的ARP报文会耗尽ARP缓存表,还会导致CPU负荷过重。
解决思路是对ARP报文进行限速处理,避免CPU资源浪费在处理ARP报文上,保证设备的其他任务能正常运行。对ARP缓存表进行扩充,减小单条表项生存时间,保证ARP缓存表不会被耗尽。
2.2 ARP欺骗解决思路
针对ARP欺骗攻击,原理是通过不断向目标设备发送ARP应答报文,从而实现重定向从一个设备到另一个设备的数据包的目的。
解决思路是在协议栈添加询问机制,当ARP缓存表中已存在的IP地址对应的MAC地址发生变化时,会重新发送ARP询问报文。对IP地址相同,MAC地址不同的ARP应答报文,设置限流,超过后采用默认的IP-MAC地址映射(设备第一次记录的IP对应的MAC地址)。
2.3 设计方案
由于对ARP攻击的优化并不是必要的,防止CPU不必要的资源消耗,方案设计中采用模块动态加载的方式进行。
设置HOOK函数,直到ARP模块加载成功后才允许进入。
配置ARP缓存表大小,减小ARP缓存表中每一项的生存时间。
配置ARP限速功能,允许每秒最多处理a(可以配置)个ARP报文,超过限制后开启白名单模式,只允许已经在ARP缓存表内的MAC地址对应的ARP报文通过。
对MAC地址相同,IP地址不同的ARP攻击,每秒最多允许b(可以配置)个该MAC地址的ARP报文通过。
对IP地址相同,MAC地址不同的ARP攻击,每秒最多允许c(可以配置)个该IP地址的ARP应答报文通过,超过后采用默认的IP-MAC地址映射(设备第一次记录的IP对应的MAC地址)。