http://www.sunnyu.com/?p=4
今天公司网站系统发生短暂的访问中断,虽然临时性的通过重启网站服务达到正常运作的目的,但是后续的分析工作还是要做的。
首先使用命令
- cat www.access.log | grep spider -c
和
- cat www.access.log | wc
分别查看有爬虫标志的访问次数和合计的总页面访问次数,发现还有爬虫标志的访问次数超过总访问次数的 10%, 访问显得有些不正常。
使用
- cat www.access.log | grep spider | awk '{print $1}' | sort -n | uniq -c | sort -nr
命令查看爬虫来ip地址来源,发现主要来至于 124.115.4.*和124.115.0.* 这两个地址段。
在防火墙上对其地址做限制。
/etc/sysconfig/iptables 中添加规则
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.0.1/24 -j REJECT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.4.1/24 -j REJECT
service iptables restart 使限制生效
一些已知的爬虫可以在 http://www.wangzhongyuan.com/archives/367.html 看到。可以针对自己的情况做一下分析处理,有选择性的让一些爬虫来访问。当然这个地址列出的都是一些比较有名的爬虫,如Googlebot, Baiduspider,Sogo,Yahoo等都是比较上规矩的,对他们可以通过robots.txt进行爬虫访问规则的设置,而那些较稀奇的比如这里 列出的 Sosospider等就没有被列出,所以更多的小爬虫和恶意的访问还是要自己来具体分析处理的。
从网站日志文件中找出爬虫和恶意访问
一般可以对网站访问日志做分析,通过分析单位时间里面某个ip访问服务器的次数等信息来找出爬虫的来源地址和恶意访问的来源地址,比如通过
- cat www.access.log | awk '{print $1 " " substr($4,14,5)}' | sort -n | uniq -c | sort -nr | head -20
这么一个命令就可以列出在一分钟内访问网站次数最多的前20位ip地址。
而通过
- cat www.access.log | grep 60.190 .128 .6 | awk '{print $1 " " substr($4,14,5)}' | sort -n | uniq -c | sort -nr | head -20
这个命令则可以查看一天中某个ip地址对网站服务器的访问时间分段情况。
对这些命令中表现出的数量比较突出的一些ip地址,一般来说就是有问题的ip了,在配合
- cat www.access.log | grep ip地址
可以看看这些高强度的地址访问都在干些什么。是不是正常访问,如果不是就要考虑是否要做限制了。