症状:2008年11月6号下午5时左右,访问yeecare网站异常。后台打不开,查看了源代码,页面的投放被加入了一行iframe 代码。
把本地的文件上传上去后,还有这种情况。 把远程的代码下载下来,发现文件里面并没有被插入代码。 显然,文件没有被挂马。
初步判断可能被arp***了。 重启了服务器,问题还是没有解决。 然后把apache 停掉,搜索解决办法,大约5分钟后,启了apache,居然好了。
暂时原因尚不清楚。   

针对ARP***的防制,常见的方法,可以分为以下三种作法:
1、利用ARP echo传送正确的ARP讯息:通过频繁地提醒正确的ARP对照表,来达到防制的效果。
2、利用绑定方式,固定ARP对照表不受外来影响:通过固定正确的ARP对照表,来达到防制的效果。
3、舍弃ARP协议,采用其它寻址协议:不采用ARP作为传送的机制,而另行使用其它协议例如PPPoE方式传送。
以上三种方法中,前两种方法较为常见,第三种方法由于变动较大,适用于技术能力较佳的应用。

管理员用户登录,打开终端输入
方案一:(服务器目前采用此方案,不过根据arp的原理来看,此方法未必起作用,只能防止本机中arp病毒的情况)
1、arp -a > /etc/ethers
将ip和mac地址导入ethers
2、#vi /etc/ethers
编辑文件格式,ethers文件内容必须格式如下多余的全部删除,改成形式ip mac
192.168.1.11 XX:XX:XX:XX:XX
192.168.1.254 XX:XX:XX:XX:XX

//注意mac大写,而且没有O只有零,ip和mac空格。如果arp -a 是空的,可以ping一下本机和网关,相应的mac就会出来了。
3、#vi /etc/rc.d/rc.local //打开并显示 /etc/rc.d/rc.local文件,启动项文件
//启动的时候执行arp -f按照/etc/ethers 中的内容绑定
在 /etc/rc.d/rc/local 文件中最后加一行
arp -f

4、arp -f // 可手动执行一下绑定。

        备注:
        可以把机房内对应局域网内的mac都记录下来,能更有效的防止arp***。到机房的时候再做操作,以防误操作,就无法访问服务器了。
        ethers文件要有可执行权限
(ethers 里不包括网关mac否则会报错,ethers文件里不能自己梆自己,否则出错 ---- 该条在虚拟机上验证,并没有报错。)
        arp -s 192.168.0.1 04:4B:80:80:80:04 可手动来指定。


方案二:arping 命令解决arp***(此发放貌似可以解决局域网中病毒的问题。但根本解决办法还是得找到局域网内中apr的机器。)
原文:我用的是fedora core 6,我先把几个镜像文件挂上,用关键字 arp 一搜,就搜到了arptables,和arpwatcher 首先是arpwatcher了,
它好像只能监控本机ip/arp地址的改变之类的,好像不能防止arp***。 再一看arptables,立马想到了iptables,装上一看,果然,命令行都一模一样。 
可是问题来了,保持本机不受arp***很简单(用静态arp绑定就可以了),但是人家网关也还是要受到***, 俺们又不是网络管理员,网关我只能 “远观而不能亵玩“! 
此路不通,俺们改道,上网搜去! 找了几个“轮回”,arping这个东西映入我的眼帘,回到shell,发现已经安装拉:
“arping - send ARP REQUEST to a neighbour host“arping [ -AbDfhqUV]   [ -c count] [ -w deadline] [ -s source] -I       interface destination-U     Unsolicited ARP mode to update neighbours’ ARP caches. No              replies are expected. 

关键命令: 
arping -U -I 发送包的网卡接口 -s 源ip 目的ip 
实例:
假设你的eth0接口对应的ip为192.168.1.1,网关为192.168.1.255你就可以使用 

arping -U -I eth0 -s 192.168.1.1 192.168.1.255 
--------------------------------------------------------------------------------
-s src_ip 指定源ip为src_ip 
-I ethi 指定使用ethi网卡 
相关命令参数表 -c n 发送n个数据报数目后退出程序 
-w sec sec秒后退出程序 
-f 收到一个回复包就退出程序 
-q quiet安静模式 
-V 显示版本 

arping貌似没有windows 下的antiarp厉害,但是也基本上够用了。
arping需要root权限运行


方案三:linux下arp***的解决方案续(完美解决版)[原](该方案未经过验证)
上次说道如何使用arping解决arp***,但是效果不是很好,有去网上搜寻了下,强势推出完美最终版本。
Libnet        http://sourceforge.net/project/showfiles.php?group_id=4223
arpoison    http://www.arpoison.net/arpoison-0.6.tar.gz
安装方法(FC下成功,其他发行版可参考): 先安装libnet
tar -xvzf libnet.tar.gz
cd libnet
./configure
make
make install 

安装arpoison
tar -xvzf arpoison-0.6.tar.gz
cd arpoison
gcc arpoison.c /usr/lib/libnet.a -o arpoison 
mv arpoison /usr/sbin

用法: 
Usage: -i device -d dest_IP -s src_IP -t target_MAC -r src_MAC [-a] [-w time between packets] [-n number to send]


示例:
arpoison -i eth0 -d 172.16.18.254 -s 172.16.18.19 -t ff:ff:ff:ff:ff:ff -r 00:11:09:E8:78:DD   
-i eth0     指定发送arp包的网卡接口eth0
-d 172.16.18.254     指定目的ip为172.16.18.254
-s 172.16.18.19     指定源ip为172.16.18.19
-t ff:ff:ff:ff:ff:ff     指定目的mac地址为ff:ff:ff:ff:ff:ff(arp广播地址)
-r 00:11:09:E8:C8:ED     指定源mac地址为00:11:09:E8:C8:ED


写了一个小脚本,根据注释,相信聪明智慧的各位可以搞定linux下的arp***了: 
#!bash
#arpDefend.sh
#######
#yk103#
#######

#网关mac地址
GATEWAY_MAC=00:D0:F8:FF:4A:23
#目的mac地址
DEST_MAC=ff:ff:ff:ff:ff:ff
#目的ip地址
DEST_IP=172.16.18.254
#本地网卡接口
INTERFACE=eth0
#$INTERFACE的mac地址
MY_MAC=00:11:09:E8:78:DD
#$INTERFACE的ip地址
MY_IP=172.16.18.19

#在本机建立静态ip/mac入口 $DEST_IP--$GATEWAY_MAC 
arp -s $DEST_IP $GATEWAY_MAC 

#发送arp reply ,使$DEST_IP更新$MY_IP的mac地址为$MY_MAC
arpoison -i $INTERFACE -d $DEST_IP -s $MY_IP -t $DEST_MAC -r $MY_MAC 1>/dev/null &

结束语:
arpoison需要root权限运行
arpoison需要libnet的支持
arpoison很好的解决了arp***的问题
题外话:
其实arpoison本身是可以作为arp***工具使用(看名字就可以知道 "poison" 毒),我们这方法可谓以毒攻毒。 至于如何用arpoison进行arp***,相信冰雪聪明的各位用不着我说了(嘿嘿~~)