User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。这些信息会保存在服务器日志里面,因此当网站有人恶意访问时,可以查看服务器日志里面的user-agent信息,并将恶意访问者的user-agent屏蔽掉。
最近乐道主机就发现一些客户的网站同时被大量不同IP访问,导致网站使用过多服务器进程出现500 Internal Server Error错误,我们查看服务器日志发现这些访问都来自不同的IP,但是user-agent却完全相同,很明显是恶意访问该网站对其攻击,user-agent里面都含有“Mozilla/4.0”,因此我们在.htaccess里面添加上一下代码对其进行屏蔽:
SetEnvIfNoCase User-Agent "Mozilla/4.0" bad_user Order Allow,Deny Allow from all Deny from env=bad_user RewriteCond %{HTTP_USER_AGENT} Mozilla\/4\.0 [NC] RewriteRule .* - [R=503,L]
.htaccess文件里面加上以上代码后,网站马上就可以正常访问了。不过这样做也可能会导致低版本的浏览器,如IE 6等无法网站网站,所以当攻击停止后建议尽快删除.htaccess里面添加的那些代码。
附上部分该客户网站的Apache服务器日志:
223.68.162.165 – – [15/Sep/2013:00:50:15 -0500] “POST / HTTP/1.1″ 500 17703 “-” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)”
59.57.15.71 – – [15/Sep/2013:00:50:15 -0500] “POST / HTTP/1.1″ 500 17703 “-” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)”
61.134.38.42 – – [15/Sep/2013:00:50:15 -0500] “POST / HTTP/1.1″ 500 17703 “-” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)”
81.113.237.138 – – [15/Sep/2013:00:50:15 -0500] “POST / HTTP/1.1″ 500 17703 “-” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)”
以上日志里面,”Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)”这一部分引号里面的,就是我们所说的user-agent,可以从以上日志看出来,223.68.162.165,59.57.15.71,61.134.38.42和81.113.237.138这几个IP访问了该网站,而且user-agent都完全相同。这里只是截取了一小部分日志,完整的服务器日志文件里面有大量这样的访问记录,IP不同但是user-agent都完全一样,而且一直持续有大量不同IP同时在访问该网站,每分钟都有好几百IP在访问,对于绝大多数网站来说,如果是正常用户访问,不可能达到每分钟有几百IP的访问量,而且客户自己也清楚该网站正常情况下每天的访问量也不到200 IP,由此判断这些访问都是恶意攻击。
另外,在网站的robots.txt文件里面也有用到user-agent,但是那里的user-agent不是前面说到的用户代理,robots.txt里面的user-agent指的是搜索引擎机器人的名字,如user-agent: Baiduspider,这个就是指的百度的蜘蛛,屏蔽搜索引擎是在robots.txt文件里面弄的,不要和这个教程上面的搞混淆。