一、ARP协议工作原理
在TCP/IP协议中,每一个网络结点是用IP地址标识的,IP地址是一个逻辑地址。而在以太网中数据包是靠48位MAC地址(物理地址)寻址的。因此,必须建立IP地址与MAC地址之间的对应(映射)关系,ARP协议就是为完成这个工作而设计的。
TCP/IP协议栈维护着一个ARP cache表,在构造网络数据包时,首先从ARP表中找目标IP对应的MAC地址,如果找不到,就发一个ARP request广播包,请求具有该IP地址的主机报告它的MAC地址,当收到目标IP所有者的ARP reply后,更新ARP cache.ARP cache有老化机制。
二、ARP协议的缺陷
ARP协议是建立在信任局域网内所有结点的基础上的,它很高效,但却不安全。它是无状态的协议,不会检查自己是否发过请求包,也不管(其实也不知道)是否是合法的应答,只要收到目标MAC是自己的ARP reply包或arp广播包(包括ARP request和ARP reply),都会接受并缓存。这就为ARP欺骗提供了可能,恶意节点可以发布虚假的ARP报文从而影响网内结点的通信,甚至可以做“中间人”。
三、ARPGuard的原理
ARPGuard可以保护主机和网关的通讯不受ARP欺骗的影响。
1、第一次运行(或检测到网关IP改变)时获取网关对应的MAC地址,将网卡信息、网关IP、网关MAC等信息保存到配置文件中,其他时候直接使用配置文件。
2、移去原默认路由(当前网卡的)
3、产生一个随机IP,将它添加成默认网关。
4、默认网关IP 和网关的MAC绑定(使用DeleteIpNetEntry和CreateIpNetEntry修改ARP Cache表项)
5、周期性检测ARP Cache中原默认网关(不是随机IP那个) 网关的MAC在ARP Cache的值是否被改写,若被改写就报警。
6、针对有些攻击程序只给网关设备(如路由器或三层交换机)发欺骗包的情况。由于此时本机ARP Cache中网关MAC并未被改变,因此只有主动防护,即默认每秒发10个ARP reply包来维持网关设备的ARP Cache(可选)
7、程序结束时恢复默认网关和路由。
值得说明的是程序中限定了发包间隔不低于100ms,主要是怕过量的包对网络设备造成负担。如果你遭受的攻击太猛烈,你也可以去掉这个限制,设定一个更小的数值,保证你的通讯正常。