对ARP的认识

     经常看到有人在谈 ARP 问题,自己因为要编写防火墙规则,也重新研读过 TCP/IP 协议相关内容。感觉一些很重要的东西被大家忽略了,或者提得比较少,而这些都很容易成为安全部署的漏洞。今天尝试整理自己的思路,谈谈对 ARP 攻击的认识。
 
    澄清一个观点。
    大家常说, ARP 攻击的存在是因为 ARP 协议有漏洞或者缺陷。我不能苟同这样的结论。 ARP 的应答包可以被动更新 ARP 缓存,而且缺少身份验证机制,这并非是一个疏忽,而是网络通信便利的很好设计。其实,什么样才是没有漏洞的呢? TCP 面向连接容易被攻击, UDP 非面向连接更给网络防护带来麻烦, ARP 被动更新缓存是问题,主动更新也照样是问题。排除不良用心者因素之外,如果还有自身的问题,那么归结为缺陷或漏洞,或者会比较客观一些。
 
    ARP 请求方式的攻击。
    一种方法是:直接以请求包的方式,携带伪装的源 IP 和源 Mac ,发送广播或者单播请求,相关主机会更新自己的 ARP 缓存,这样就能顺利达成 ARP 欺骗和攻击的目的。
    另一种方法是拒绝服务:虽然是“正常”的 ARP 请求方式,如果在某个时间段内频繁发起请求,无论向网关也好,向某主机也好,全网段广播也好,由于 ARP 请求会带来响应,这样被攻击者会疲于响应、处理请求包,即便 ARP 缓存不发生更新,也会因为频繁处理响应而带来瘫痪。
    这两种方法都是相对正常的工作方式,所以也增加了网络防护的难度。
    第一种方式,可以通过交换机端口绑定 IP Mac 过滤的方式,或者通过每台主机配置防火墙拦截欺骗 ARP 数据出站,或者双绑定等等方法,得到较好的防护效果。
    第二种攻击方式,最好借助于状态检测,可以记录响应某 IP 第一个入站的 ARP 请求包的时间,然后在 2 分钟内或者更短的时间内来自该 IP 发起的请求包和应答包都一律直接过滤掉;当然,这个状态表也应当设置一个超时范围,过期则清除状态记录。可以在交换机端口设置状态检测,也可以在主机防火墙设置这种状态检测机制。目前还没有看到有这类防火墙的介绍,不过希望能有人往这方面考虑,改进防火墙产品的设计。
 
    ARP 应答方式的攻击。
    这方面的攻击是目前最常见的,介绍也比较多,不赘述了。绑定,或者状态检测机制过滤掉主动发起的 ARP 应答包,都是可行的办法。
 
    关于绑定的思考。
一般多关注网关欺骗对通信带来的影响,会建议主机绑定网关,而网关绑定所在网段内的主机。其实,对于 DNS Server DHCP Server ,一样需要绑定。假想一下,如果本机的 DNS Server IP Mac 映射关系被破坏的话,本机发起的 DNS 请求会被发送到正确的地方吗?至于 DHCP ,我们知道, ARP 缓存在机子重启动的时候会清空,然后重新根据通信的需求建立自己的 ARP 缓存表。开机的时候,主机一般也会与 DHCP Server 以及网段内所有主机确认一下自己的 IP 信息。这样,在某个时间段范围内,以一定的频率向全网段不断发送伪装的 DHCP Server ARP 应答包,那些刚刚开始接入状态的主机获取 IP 的过程会不会被破坏呢?
   
还是把重要的服务器的 IP Mac 映射关系在每一台主机上都绑定为妥。
 
09.05.24

本文出自 “Love is forever” 博客,谢绝转载!

你可能感兴趣的:(职场,ARP,休闲)