【51CTO专稿】笔者所在的网站在某一个晚上出现大范围的攻击,据事后统计而知,这次用了攻击方用了大约50万并发持续攻击网站,一看网站应用服务器的负载很高,怪不得很慢呢。接下来开始分析和解决问题。
一、攻击描述
年初开始,网站应用服务器网卡流量普遍蹿升到100M以上,其中几台服务器网卡流量更是达到了204Mbps。随之带来的就是访问速度逐渐变慢,网络带宽数次被用完。
二、攻击分析
1、 既然是网卡流出100M以上,那么一定有不正常的请求地址过来,接着服务器才会响应并发送到客户端。由此判断是请求的地址有异常
应用服务器受到攻击时的网卡流量图
网站应用服务器受到攻击时的负载现象
2、分析web日志,可以发现很多IP同时在一秒钟对的多个地址发送GET请求,且返回的地址的流量在200k-300k之间。试想一下,返回一个php地址,怎么会有200多k的流量,那么就一定是恶意的请求。看下面url中的 232347,这个232347,就是返回给客户端的流量。
123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-116-20.html HTTP/1.0" "200" 232347 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-"
123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-1402-1.html HTTP/1.0" "200" 253872 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-"
123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-63-1.html HTTP/1.0" "200" 118163 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-"
123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-1342-1.html HTTP/1.0" "200" 235327 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-"
123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum.php?mod=forumdisplay&fid=58 HTTP/1.0" "200" 283377 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-"
3、攻击主要针对php应用,php并发跟nginx差了好几个数量级。这次攻击,平均每台php 每秒最高承受200个并发,绝大部分的针对列表页,直接对数据库造成影响。
四、解决方案
1、防火墙封IP(不推荐)
用封IP的方式来阻止攻击源IP,是一种方法,起初,我是采用了这种方法,但是这样封IP,还需要到日志中去搜索。比较繁琐,而且效果不明现。
2、Nginx被动防御(推荐)
还记得日志中的相同的user-agent的没有,nginx这次利用了user-agent来防御攻击。
在的nginx的配置文档的上面加入了
if ( $http_user_agent ~* "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.0\;\ .NET\ CLR\ 1.1.4322\)" )
{
return 444;
}
重启nginx后,nginx 在日志中检测到该类user-agent时,就会返回444 http 状态码,既请求失败。这样设置后,各应用服务器负载恢复到正常,网卡流量正常。
218.5.73.245 - - [07/Mar/2012:10:53:12 +0800] "GET /forum-222-1.html HTTP/1.0" 444 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
218.5.73.245 - - [07/Mar/2012:10:53:12 +0800] "GET /forum-222-1.html HTTP/1.0" 444 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
218.5.73.245 - - [07/Mar/2012:10:53:12 +0800] "GET /forum-222-1.html HTTP/1.0" 444 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
Nginx 处理攻击ip的结果
五、总结
1、本次nginx 在防小型ddos或者cc有自己的特色:处理请求高效,消耗资源极低。
缺点:需要分析日志,找到规律,比如:user-agent等等。
2、疑问?
Q:有些同学要问了,这样屏蔽该类user-agent,造成误杀率有多大?
A:cc攻击者攻击时,都会有自己特殊的user-agent,屏蔽该类user-agent,不会造成额外的误杀。这是通过观察屏蔽日志的得出来的结论,服务器用上该类策略后,从来木有一个网友因为这事找过。
Q:如果cc攻击软件伪装成正常的user-agent,这样的造成误杀多大?
A:1):并不是所有的攻击者都具备修改user-agent的,相当部分的攻击者用的都是购买的攻击软件,如果要修改,则要付出金钱的代价。这不是攻击者想要的结果。2):就算是伪装成了正常的user-agent,也会有自己的特点,可以从其共有特征来分析,比如来源地址是否相同等等,这里就可以作为共同点来设置策略。在做策略时应注意观察nginx屏蔽日志中,是否其他的正常的请求也被屏蔽了?
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
例如上面的日志,这次攻击者将user-agent伪装成正常的,再用user-agent做关键字,就会有部分误杀了。所以针对此类攻击,可以以来源地址作为关键字,nginx防护策略可以这么做,
if ($http__referer ~ * "/zhuanti/nzpp/zonghegr.jsp?group=2")
{
return 444;
}
这样就不会有误杀了
3、经验教训
教训:去年的一次CC攻击,跟这次攻击有异曲同工之处,都是打的是php;那时我们在启用了黑洞防护墙后效果并不明显。
经验:当天晚上,我仔细分析了web日志,发现其user-agent,都是相同的,例如windows 5.0,跟正常的windows NT 5.0有本质区别,那可不可以在这上面做文章呢。带着这个问题,在网上搜索了nginx 防cc方面的资料,果然发现网上的高手的想法跟我的相同,都从其相同点user-agent入手,用nginx 来匹配该类user-agent,然后返回503 http状态码,当然这里我做了修改,返回了444状态码。所以,在吸取了上次的教训后,在今年网站遭受攻击时,我果断采用该条策略,结果证明效果很明显。虽然cc攻击一直在持续,但是网站访问依然流畅。
本文出自 “晓辉” 博客,请务必保留此出处http://coralzd.blog.51cto.com/90341/941630
分享到:
相关推荐
提出了一种通用的基于概率包标记大规模DDoS攻击源跟踪方法。相比其他方法,该方法通过引入包标记中继算法既适用于直接类型的DDoS攻击路径恢复,也适用于反射类型的DDoS攻击路径恢复。此外,通过巧妙运用方程组惟一解...
这就需要引入一种全新的技术——入侵防御系统(Intrusion Prevention System, IPS)防火墙是一次性的防护手段,根据防火墙的策略规则(IP地址,端口等)只允许通过策略规则所允许的数据包,但它不能发现和阻断隐藏在...
我们分析了超级僵尸网络的可能性,超级僵尸可以超乎想象的大规模攻击。为了竞争生存,超级僵尸将会使用多种策略手段来对付防御手段。因此,超级僵尸必须被研究机构研究,只有这样,防御这个威胁的防御手段才会有效...
FFS Firewall也许无法解决大规模的DDOS攻击,但是还是可以有效地降低DDOS攻击对站点的影响。研发这个防火墙,也是因为本人的站点受到某蛋疼人士的长期攻击,对站点服务造成了巨大的影响。FFS Firewall已经率先在本人...
FFS Firewall也许无法解决大规模的DDOS 攻击,但是还是可以有效地降低DDOS攻击对站点的影响。研发这个防火墙,也是因为本人的站点受到某蛋疼人士 的长期攻击,对站点服务造成了巨大的影响。FFS Firewall已经率先在...
其次要扩充服务器数量及网络带宽,避免服务器被强制瘫痪,必要时与运营商深度合作,共同应对大规模攻击;此外还可利用综合性安全算法如:SYN Cookie/SYN Proxy、safereset等,在网络入口处为每一个来访IP地址分配...
网络入侵案件频繁发生,就统计 数据来看,全球每20秒就有一次网络入侵案件发生,黑客们一但发现或是找到系统漏洞 所在,就会对其攻击,最终造成用户经济、财产、精神等方面损失。中国互联网信息中 心在2018年调查...
威胁越来越复杂,数量越来 越大,在您有机会解决前一次攻击之前,很可能会 演变成新的攻击。尽管安全开支有所增加,但在您 的环境中,威胁的驻留时间(检测和修复攻击所需 的时间)仍在增加。 让安全团队面临的挑战...
威胁 先来看一个例子-双十一 双十一有很多风险 其中稳定性风险,特别是11.11零点高峰的性能容量稳定性风险是超级挑战的 这个稳定性和安全的关系及其密切(DDoS攻击、CC攻击、大规模垃圾流量、业务系统超载等等) 要...
网络空间战略和政策升级调整 注重安全保障与攻击能力双向提升 加强对数据资源跨境传输的管控 2015年以来,国家行为体实施的大规模网络监控和网络攻击造成了国家间的严重不信任情绪,对国际局势的稳定带来不良影响。...
其中, 50%的支付额超过了1万美元,20%超过4万美 元 勒索软件业务规模有望达到10亿美元 近40%的个人消费者原意支付100美元以上来恢 复数据,大部分勒索软件能从每位受害者手中勒 索300美元以上赎金 超过50%的父母...