干弱电这行十五年,园区网里的ARP攻击,碰得多了也就摸清了门道。ARP这玩意儿,说白了就是IP地址和MAC地址之间的翻译官,但偏偏在TCP/IP协议栈里,它是最容易被人动手脚的。什么“网络扫描”、“内网渗透”、“中间人拦截”、“局域网流控”、“流量欺骗”,这些听着唬人的词儿,十有八九都跟ARP脱不了干系。今天就跟大伙儿聊聊在IPv4环境下,怎么对付ARP攻击,主要讲锐捷设备上几个实实在在能用的方案,包括欺骗攻击、泛洪攻击的解法,还有实际部署时的一些经验。
ARP攻击是啥玩意儿?
先说说ARP欺骗攻击。正常的ARP通讯,就是广播问一句“谁是这个IP?”,然后对应设备单播回一句“是我,这是我的MAC”,一问一答,干净利落。但攻击者不按套路出牌,他伪造请求或者应答报文来骗你。按角色分,主要有两种:一种是主机型欺骗,攻击者冒充网关去骗其他主机;另一种是网关型欺骗,攻击者冒充其他主机去骗网关。
再说ARP泛洪攻击,这玩意儿更狠,也叫拒绝服务攻击。攻击者疯狂发ARP报文,把交换机的内存、表项这些资源全占满,CPU被海量报文砸得喘不过气,正常的管理报文和协议报文根本处理不了。结果就是设备瘫了,整个网络跟着完蛋。
ARP欺骗攻击怎么防?
防ARP欺骗,核心就是ARP-check,也就是ARP报文合规校验。它要查两样:一是报文的源IP跟安全地址里的IP对不对得上,二是源MAC跟安全地址里的MAC对不对得上。两项都合规才放行。安全地址咋来的?要么手工静态绑,要么靠DHCP Snooping自动学。下面说几个锐捷上常见的方案。
端口安全 + ARP-check方案
这招适合IP地址是静态分配的场景,而且你得知道每个用户接在哪个端口上。说白了,就是手工把IP和MAC的对应关系配到端口上,再开启ARP-check。优点是控制严,硬件直接校验,不费CPU。但缺点也明显——你得收集所有用户的IP和MAC信息,配起来烦死人,而且用户一换端口就得改配置,灵活性差。我早年干过一个厂区项目,两百多台设备全这么配,光收集信息就折腾了好几天,后来有台打印机挪了个位置,整个网络乱了一下午。所以这法子适合小规模、不动窝的场景,大园区慎用。
全局IP&MAC绑定 + ARP-check方案
这方案也适合静态IP,但不用管用户接哪个端口。你把IP和MAC的对应关系配到交换机全局,端口下开启ARP-check就行。好处是用户在同一台交换机里随便换端口都没事,灵活性高了,而且也是硬件校验,不占CPU。缺点嘛,跟上面一样,还是得手工配所有用户的绑定信息,工作量不小。
DAI方案
DAI,全称Dynamic ARP Inspection,适合用户用DHCP动态获取IP的环境,前提是得开DHCP Snooping。它从DHCP Snooping表里提取IP和MAC信息,然后CPU过滤那些源MAC或源IP不在表里的ARP报文。优点是配起来简单,不用手工绑。缺点嘛,用户的ARP报文都得送CPU检查,要是用户多,CPU负载就上去了。我有一次在一个学校机房试过,三百多台机器同时上线,CPU直接飙到90%,吓得赶紧换方案。
IP Source Guard + ARP-check方案
这方案也适合DHCP环境,同样得开DHCP Snooping。它通过IP Source Guard把DHCP Snooping表里的正确IP和MAC写到硬件表项里,再用ARP-check硬件校验。优点是配置简单,而且ARP-check是硬件芯片干活,不费CPU。缺点是对交换机要求高,得同时支持DHCP Snooping、IP Source Guard和ARP-check这三个功能。另外,硬件资源表项有限,要是ACL之类的安全功能用得多,用户数又大,可能会报资源不足的错。日志里会看到类似“%SECURITY-3-TCAM_RESOURCE_LIMIT”的提示,这时候就得控制单台交换机的带机数了。我在一个工业园区遇到过这情况,后来分了两台交换机才搞定。
这几个方案咋选?简单说,动态IP环境就推荐IP Source Guard + ARP-check,静态IP环境就用手工绑定加ARP-check。具体对比看下表:
ARP泛洪攻击怎么防?
对付ARP泛洪攻击,锐捷上常用CPP和NFPP。CPP,全称CPU Protect Policy,就是给CPU加个保镖,把发往CPU的报文分类、限速、调度,保证正常报文能处理。但它有个毛病,只管限速,不治本,而且没日志,出了问题你都不知道谁在搞鬼。
NFPP,全称Network Foundation Protection Policy,比CPP高级。它加了安全策略,比如隔离策略和攻击检测策略,还能发日志上报。在NFPP框架里,有个ARP-Guard功能,专门防ARP泛洪。你设个攻击水线和限速水线:报文量超过攻击水线,直接隔离并记日志;在水线之间,限速处理;低于限速水线,正常转发。实际部署时,CPP和NFPP通常一起开,效果更好。
总结一下
ARP欺骗攻击搞的是信息安全,数据可能被偷;ARP泛洪攻击直接让交换机瘫痪,业务全断。一个丢数据,一个断生产,哪个都受不了。实际干活时,建议这么搞:防欺骗用IP Source Guard + ARP-check,顺带还能防DHCP私设和IP私设;防泛洪用CPP+NFPP,CPU负载高了也不怕。
省钱技巧: 要是预算紧,别一上来就上全套。小网络(几十台设备)可以先用手工绑定加ARP-check,省了买高端交换机的钱。大网络(几百台以上)再考虑IP Source Guard方案,但记得算好硬件资源,别贪便宜买低端设备,不然用户一多就报错,得不偿失。
踩过的坑: 有个项目我图省事,直接开了DAI没做限速,结果用户上线高峰时CPU爆了,网络瘫痪半小时。后来加了CPP限速才稳住。所以不管用啥方案,一定记得把限速和日志打开,不然出事了连谁干的都查不到。
实际施工经验: 部署前最好先做个网络摸底,看看用户是静态IP多还是DHCP多,有没有打印机、服务器这些特殊设备。像打印机这种静态IP的,单独做个手工绑定,别混在DHCP方案里,不然容易出冲突。另外,日志服务器一定要配好,攻击日志能帮你快速定位问题,省得全网排查。