一个网吧中了ARP病毒,解决方案如下。

由于内网无法正常连接网关,远程网关已无法实现。因此一切操作均在网关服务器进行。
1.在服务器本地端口抓包
[root@Routed-Server tmp]# tcpdump -nn -i eth1 > error.network
tcpdump: listening on eth1
2749 packets received by filter
0 packets dropped by kernel
# 将通过eth1端口的包抓下来,存为error.network文件
2.将ARP包截取出来
[root@Routed-Server tmp]# grep ‘arp’ error.network > arp.virus
[root@Routed-Server tmp]# ls -l arp.virus
-rw-r--r--    1 root     root         6241 Oct 25 10:59 arp.virus
# 将所有ARP包截取,另存为文件
3.分析ARP包
[root@Routed-Server tmp]# vi  arp.virus
~省略
10:43:26.086278 arp reply 192.168.2.2 is-at 0:14:78:80:d9:e4
10:43:26.181051 arp reply 192.168.2.3 is-at 0:14:78:80:d9:e4
10:43:26.211026 arp reply 192.168.2.11 is-at 0:14:78:80:d9:e4
10:43:26.242212 arp reply 192.168.2.4 is-at 0:14:78:80:d9:e4
10:43:26.304441 arp reply 192.168.2.162 is-at 0:14:78:80:d9:e4
10:43:26.398826 arp reply 192.168.2.167 is-at 0:14:78:80:d9:e4
~省略
# 问题出来了,可以看到以上几个包括网关IP在内的IP地址都宣称其位于MAC地址
# 为“00:14:78:80;d9:e4”的网卡
4.查看网关(192.168.2.11)的MAC地址
[root@Routed-Server tmp]# ifconfig eth1 |grep -A1 'HWaddr'
eth1      Link encap:Ethernet  HWaddr 00:0A:EB:551:72
          inet addr:192.168.2.11  Bcast:192.168.2.255  Mask:255.255.255.0
# 可以看到网关的MAC地址为“00:0A:EB:551:72”,与上面arp-reply包不相符
# 这里基本上可以份析出中毒的机器MAC地址为“00:14:78:80:d9:e4”
5.准确定位中毒机器
知道可能中毒机器的MAC地址,对其定位应该不是件难事。对于小型的网络我们可以对每台机器的MAC地址进行查询.
6.对于大型网络,机器台数超过200台的环境,这样做并不是最高效的办法。由于使用DHCP,这里我想到了DHCP的租约记录。
在/var/lib/dhcp/dhcpd.leases记录中查找MAC地址对应的IP记录
[root@Routed-Server tmp]# vi  /var/lib/dhcp/dhcpd.leases
~省略
lease 192.168.2.161 {
  starts 3 2006/10/25 02:56:22;
  ends 2 2038/01/19 03:14:06;
  binding state active;
  next binding state free;
  hardware ethernet 00:14:78:80:d9:e4;
  uid "\001\000\024x\200\331\344";
  client-hostname "ABEAAF6E64884EB";
}
~省略
# 在dhcpd.leases文件中,我找到如上记录
# 可以看出MAC地址为“00:14:78:80:d9:e4”的机器,IP地址为192.168.2.161
# 机器名为“ABEAAF6E64884EB”
7.到这里,中毒机器的机器名,IP地址均已查出。
8.在所有的客户机的启动里放上MAC帮定脚本:
@echo off
ipconfig /all >ipconfig.txt
find "Physical Address" ipconfig.txt >UserMac.txt
for /f "skip=2 tokens=12" %%M in (UserMac.txt) do set Mac=%%M
find "IP Address" ipconfig.txt >UserIP.txt
for /f "skip=2 tokens=15" %%N in (UserIP.txt) do set ip=%%N
arp -d
arp -s %IP% %MAC%
arp -s 192.168.2.1  00:E0:4C:D0:F1:6A <-----网关真实MAC地址。
del ipconfig.txt UserMac.txt UserIP.txt
@cls
@echo.
@echo IP、MAC地址已绑定,请按任意键结束...
pause >nul
exit
 
9.00 网关建立静态IP/MAC捆绑
打开所有机器,#arp -a,复制粘贴,建立/etc/ethers文件,其中包含正确的IP/MAC对应关系,格式如下:
       192.168.2.32 08:00:4E:B0:24:47
然后再/etc/rc.d/rc.local最后添加: arp -f 生效即可.
9.0 防范措施
9.1. 建立DHCP服务器
(建议建在网关上,因为DHCP不占用多少CPU,而且ARP欺骗***一般总是先***网关,我们就是要让他先***网关,因为网关这里有监控程序 的,网关地址建议选择192.168.10.2 ,把192.168.10.1留空,如果犯罪程序愚蠢的话让他去***空地址吧),另外所有客户机的IP地址及其相关主机信息,只能由网关这里取得,网关这 里开通DHCP服务,但是要给每个网卡,绑定固定唯一IP地址。一定要保持网内的机器IP/MAC一一对应的关系。这样客户机虽然是DHCP取地址,但每 次开机的IP地址都是一样的。
9.2. 建立MAC数据库,把网吧内所有网卡的MAC地址记录下来,每个MAC和IP、地理位置统统装入数据库,以便及时查询备案。
9.3. 网关机器关闭ARP动态刷新的过程,使用静态路邮,这样的话,即使犯罪嫌疑人使用ARP欺骗***网关的话,这样对网关也是没有用的,确保主机安全。
网关建立静态IP/MAC捆绑的方法是:
建立/etc/ethers文件,其中包含正确的IP/MAC对应关系,格式如下:
       192.168.2.32 08:00:4E:B0:24:47
然后再/etc/rc.d/rc.local最后添加: arp -f 生效即可.
9.4. 网关监听网络安全。网关上面使用TCPDUMP程序截取每个ARP程序 包,弄一个脚本分析软件分析这些ARP协议。ARP欺骗***的包一般有以下两个特点,满足之一可视为***包报警:第一以太网数据包头的源地址、目标地址和 ARP数据包的协议地址不匹配。或者,ARP数据包的发送和目标地址不在自己网络网卡MAC数据库内,或者与自己网络MAC数据库 MAC/IP 不匹配。这些统统第一时间报警,查这些数据包(以太网数据包)的源地址(也有可能伪造),就大致知道那台机器在发起***了。