目录
什么是ARP ?
为什么既要有IP地址又要有MAC地址?
ARP协议属于网络层还是链路层?
ARP帧格式
ARP协议工作原理
ARP命令和缓存表
代理ARP和免费ARP
ARP协议攻击
ARP协议攻击防御
什么是ARP ?将IP地址解析为以太网MAC地址(物理地址)的协议
为什么既要有IP地址又要有MAC地址?IP地址表达的是当前机器在网络中的位置,类似于城市名+道路号+门牌号的概念。通过ip层的寻址,我们能知道按何种路径在全世界任意两台Internet上的的机器间传输数据。
MAC地址的设计不携带设备在网络中的位置信息,通常是不变的。
由于历史原因,早期只有链路层和物理层。
ARP协议属于网络层还是链路层?从功能来看,ARP协议是为了获取到MAC信息,服务于链路层;从包类型来看,它与IP协议都有各自的type类型,一个是0x0806,一个是0x0800,和IP协议平起平坐,属于网络层。常被称为2.5层协议
ARP帧格式前14个字节是以太网头部,包括目的MAC地址、源MAC地址以及帧类型,对于帧类型:0x0800表示IP协议,0x0806表示ARP协议,0x8035表示RARP协议。后接着是ARP/RARP报文,硬件类型通常是1(表示以太网),协议类型为0x806(表示Ipv4协议),硬件地址长度和协议地址长度分别表示前两者的长度,硬件地址长度为6(表示以太网长度),协议地址长度为4(表示Ipv4长度), 后续发送者以太网地址与IP地址,目标以太网地址和IP地址,由于帧长度最小为60,所以后面需要填充16字节。
ARP协议工作原理1. ARP请求以广播的形式发出,目的MAC地址为ff:ff:ff:ff:ff:ff
2. 网段中的所有主机接收到该ARP请求后,如果ARP请求中的ip地址与本机ip一致,将发送ARP应答,ARP应答是以单播的形式传输
ARP命令和缓存表arp –a [inet_addr]
显示地址映射表项,[]可选项
arp –g [inet_addr]
功能与arp –a [inet_addr]相同
arp –d inet_addr (*)
删除inet_addr指定表项,*所有
arp –s inet_addr phys_addr
增加表项
arp /?
显示帮助
ARP高速缓存表
1)动态ARP表 ARP协议自动生成和维护,可以被老化
2)静态ARP表 手工配置和维护,不会被老化
生命周期
1)动态条目随时间推移自动添加和删除
2)静态条目一直保留在ARP缓存中,永久生效,
代理ARP和免费ARP
代理ARP:ARP请求从一个网络的主机发往另一个网络,具有代理ARP功能的设备回答该请求,屏蔽了分离的物理网络。
免费ARP:一个发往自己IP地址的ARP请求
免费ARP有两个作用:
1)检测IP地址冲突:确定另一个主机是否设置了相同的IP地址
2)更新ARP表项:设备改变了硬件地址,通过发送免费ARP报文通知其他设备更新ARP表项
ARP协议攻击1. 漏洞的根源:
1) ARP协议是无连接
2)没有ARP请求也可ARP回复
3) 操作系统受到ARP回复之后会更新缓存
2. ARP欺骗攻击—伪造网关
攻击者发送伪造的网关ARP报文,欺骗同网段内的其他主机。
主机访问网关的流量,被重定向到一个错误的MAC地址,导致该用户无法正常访问外网。
3. ARP欺骗攻击—欺骗网关
攻击者伪造虚假的ARP报文,欺骗网关。
网关发给该用户的所有数据全部重定向到一个错误的MAC地址,导致该用户无法正常访问外网。
4. ARP欺骗攻击—欺骗终端用户
攻击者伪造虚假的ARP报文。欺骗相同网段内的其他主机。
网段内的其他主机发给该用户的所有数据都被重定向到错误的MAC地址,同网段内的用户无法正常互访。
5. ARP泛洪攻击
攻击者伪造大量不同ARP报文在同网段内进行广播,导致网关ARP表项被占满,合法用户的ARP表项无法正常学习,导致合法用户无法正常访问外网。
ARP协议攻击防御网关防御
1)合法ARP绑定,防御网关被欺骗
2)ARP数量限制,防御ARP泛洪攻击
接入设备防御
1)网关IP/MAC绑定,过滤掉仿冒网关的报文
2)合法用户IP/MAC绑定,过滤掉终端仿冒报文
3)ARP限速
客户端防御
1)绑定网关信息
常见技术有DHCP snooping、IP Source Guard、交换机端口安全技术、MAC访问控制列表、ARP报文限速、ARP mac地址手工绑定