数据中心机房有大量客户的服务器由于长时间无人维护导致,被入侵并植入arp病毒对内网进行攻击,服务器比较多,很难一次准确定位是哪个机器发出arp攻击。
利用arp协议的原理制作的arp病毒,一般会进行网关欺骗或IP重复等攻击,我们从这两种形式来说明如何根据数据中心机房的环境讲解如何抓出arp攻击真凶。
1、IP冲突
使用超级终端连接到网关的console控制台,进入enble模式
Switcher>enable Switcher#show logging alarme An alarm 19712 level 6 occurred at 20:22:48 04/16/2012 UTC sent by NPC 2 %ARP% The hardware address of IP address 192.168.100.15 is changed from aa13.731e.fa23 to 001a.bb24.47b0 An alarm 19712 level 6 occurred at 20:18:54 04/16/2012 UTC sent by NPC 2 %ARP% The hardware address of IP address 192.168.100.15 is changed from aa13.731e.fa23 to 001a.bb24.47b0
从以上日志的警告信息可以看出192.168.100.15这个IP地址被配置到了001a.bb24.47b0这个mac地址的服务器上了,如果aa13.731e.fa23的网卡上配置的IP仍然是192.168.100.15,则说明两个Ip地址冲突。如果192.168.100.15服务器的mac地址是aa13.731e.fa23并且网关上反复的出现上面的日志信息,说明001a.bb24.47b0很可能是arp攻击的源头。在192.168.100.15的系统日志中也可以查到与之IP冲突的mac地址的信息。
确定了有问题的mac地址,下一步就是如何定位哪个服务器的mac地址是001a.bb24.47b0了。
有两种情况:
情况一:
Switcher#show arp dynamic | include 001a.bb24.47b0 ### "|" 前后要有空格 192.168.100.15 0 001a.bb24.47b0 vlan20 fei_2/16
这种情况无法看到001a.bb24.47b0这个mac地址的另外一个IP(可能被删了),但是可以看到是在哪个几口上的(fei_2/16接口),从内网拓扑图中可以了解到,这个接口下面链接的的是另外一个核心交换。
登陆到fei_2/16接口所连接的交换机,查看该mac地址在哪个接口:
<switch>display mac-address 001a.bb24.47b0 MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s) 001a.bb24.47b0 1 Learned Ethernet0/7 AGING
可以看到该mac地址在Ethernet0/7 这个接口,而Ethernet0/7 所连接的二层交换机在哪个机柜呢?先看下Ethernet0/7接口学习到的其他的mac地址
<switch>display mac-address interface ethernet0/7 MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s) ee0f-ea06-37cb 1 Learned Ethernet0/7 AGING
再到网关上查找000f-e206-37bb对应的IP,查找该IP所在的机柜(一般机器编号都以IP为准),再登陆该机柜上的二层交换机,并查找mac地址001a.bb24.47b0所在的接口,将对应接口的网线拔掉,5分钟以内合法的192.168.100.15就会恢复正常了。
2、网关欺骗
网关欺骗在arp攻击形式中是最常见的,定位arp源相对比较简单一点。
arp欺骗的主要现象是,受欺骗的服务器无法获得正确的网关的mac,导致无法联网,或速度降低,严重丢包等。
在中招的机器上查看arp表
C:\Documents and Settings\Administrator>arp -a Internet Address Physical Address Type 192.168.100.1 cc-ee-8c-16-08-35 dynamic
然而我们知道正确的网关应该是00-ee-8c-16-08-35,于是查找 cc-ee-8c-16-08-35该mac地址所对应的实际IP
在网关上:
Switcher#show arp dynamic | include ccee.8c16.0835 192.168.100.102 0 ccee.8c16.0835 vlan20 fei_2/16 192.168.100.1 0 ccee.8c16.0835 vlan20 fei_2/16
同时在警告日志中会显示mac地址 ccee.8c16.0835与本机的mac地址冲突。
找到192.168.100.102所在的机柜,确认其mac地址所在的接口拔线即可恢复网络。
3、简化方案
为了简化以及快速定位arp源,我们可以事先制作一份mac和ip对应的arp表以备查询,使用nmap就可以实现(在windows中建议可以尝试下科莱软件的mac地址扫描或windows版的nmap)。
nmap命令以及参数:
[root@test ~]# nmap -sP -PI -PT -oN ipmac.txt 192.168.100.0/24
在ipmac.txt中可以查看那IP地址对应的服务器的状态和mac地址等信息,有shell脚本经验的朋友可以试下重新编辑该文件,使其更容易查看。
其他的建议:
对有问题的而长期不维护的用户可以予以惩罚;
对交换机的接口打标签可以加快mac地址定位速度;
维护一张ip-mac对应表,定期更新;
良好的网络架构;
设置静态arp。
附:中兴交换机关于arp的命令
1. 配置在ARP缓冲区中ARP表项的老化时间
命令格式 | 命令模式 | 命令功能 |
arp timeout <timeout> | 接口 | 配置在ARP缓冲区中ARP表项的老化时间,范围1~4294967,交换机缺省为300秒,路由器缺省为600秒 |
2. 绑定IP地址与MAC地址
命令格式 | 命令模式 | 命令功能 |
set arp {static | permanent} <ip-address><hardware-address> | 接口 | 绑定IP地址与MAC地址 |
l static:静态绑定,指当前生效,重启之后不生效
l permanent:永久绑定,指当前生效,重启之后仍然生效
3. 配置ARP动态条目自动绑定
命令格式 | 命令模式 | 命令功能 |
arp to-static | 接口、全局 | 配置ARP动态条目自动绑定 |
命令执行时只对当前动态条目进行绑定,之后学习的仍为动态条目。show run中不显示相关配置。
4. 配置ARP安全
命令格式 | 命令模式 | 命令功能 |
arp protect {interface | mac | whole}limit-num <number> | 接口、全局 | 配置ARP安全,缺省不启用ARP任何保护模式 |
l interface:基于接口的ARP保护模式
l mac:基于MAC地址的ARP保护模式,仅交换机支持
l whole:基于整体的ARP保护模式
启用了保护模式和阈值,如果超出ARP保护阈值,该报文被丢弃,并打印告警信息。
5. 删除动态ARP表项
命令格式 | 命令模式 | 命令功能 |
clear arp-cache [<interface-name>] | 特权 | 删除全部动态ARP表项,或指定接口的动态ARP表项 |
6. 删除接口ARP缓存中指定的ARP表项
命令格式 | 命令模式 | 命令功能 |
clear arp [interface <interface-name>][dynamic | static | permanent | <ip-address>] | 特权 | 删除接口ARP缓存中指定的ARP表项 |
l dynamic:删除动态属性的ARP条目
l staic:删除静态绑定的static,to-static属性的ARP条目
l permanent:删除静态绑定的permanent属性的ARP条目
7. 配置ARP代理功能
命令格式 | 命令模式 | 命令功能 |
ip proxy-arp | 接口 | 配置ARP代理功能 |
8. 配置ARP源地址过滤
命令格式 | 命令模式 | 命令功能 |
arp source-filtered | 接口 | 配置ARP源地址过滤 |
源地址过滤的原则:根据源IP地址查找路由(最长匹配),如果该路由属于本接口,则接收;否则认为送错接口,丢弃报文。
9. 启用ARP学习
命令格式 | 命令模式 | 命令功能 |
arp learn | 接口 | 启用ARP学习 |
10. 配置动态ARP检查
命令格式 | 命令模式 | 命令功能 |
ip arp inspection | 端口 | 配置动态ARP检查 |
仅交换机支持,在二层端口下进行配置。