这里的防范只针对小流量的攻击,方法是修改web服务器文件。
我给大家举些例子分析一下nginx服务器上的日志
在这里我稍微分析一下web服务器访问日志的格式,根据自己当时日志格式定义的不同,日志内容是不一样的,但一般都是这样的类型:
记录客户端的IP—记录访问时间与时区—记录请求的url与http协议—记录请求状态,成功是200—记录发送给客户端主体内容的大小—记录客户读取浏览器的相关信息。
再来看一下当时站点被攻击时的日志
通过日志可以看出它是对一个页面进行不停地访问,并且速度很快,同一个IP也会多次访问,但是我们需要特别关注一下浏览器的信息。
再看一下另一种攻击时的日志
这种攻击都没有记录浏览器的信息。
对于这两种攻击我们可以在nginx的conf文件里面加入这样的信息
if ( $http_user_agent ~* ^$){
return 444;
}
if ( $http_user_agent ~* "Windows 5.1" )
{
return 444;
}
如果使用的浏览器为空则返回444,使用的浏览器为Windows 5.1也返回444。
返回值444,是干什么的呢?你知道么?
根据官方文档的介绍“非http标准的返回码444,它可以用来关闭连接”,这样的话他就不会占用我们服务器的任何资源,这三个4真是把访问杀得很彻底啊!
那有的人会问,为什么要封Windows 5.1这种类型的浏览器呢,我给大家说一下我发现的正常日志的浏览器类型都有哪些:compatible; MSIE 6.0;MSIE 8.0;MSIE 9.0;Windows NT 5.1;Windows NT 6.1; Trident/4.0;Trident/5.0;这些东西都是不固定的需要自己慢慢发现。
自己感觉对于攻击要看看日志不要盲目的就去封IP,但并不是说封IP没有用啊!
刚才说的都是nginx的,接下来我们谈一谈apache上的攻击。
其实apache服务器自身就有一个模块mod_evasive可以防御DDOS攻击,至于效果么,自己试试就知道了。
回过头来继续说攻击,其实一般简单的攻击都是对一些小站点小打小闹,大型的攻击人家才不会对小站点下手的,再说大型的攻击靠封IP和修改配置文件压根都不管用的,需要买上万或是上百万的硬件防火墙,所以目前对于我们这些小运维来说也用不到,所以能够简单的应付一下攻击就可以了!!!
最后还是那句话多看日志,三思而后行。
原文 http://www.2cto.com/Article/201210/159599.html