探针,可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息,还能进行服务器性能测试。深受各种站长的喜爱,我也不例外…… 也许很多站长也和我一样,喜欢在自己的网站上放个探针,有事无事观察观察自己的环境,亦或者公开给大家观
探针,可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息,还能进行服务器性能测试。深受各种站长的喜爱,我也不例外……
也许很多站长也和我一样,喜欢在自己的网站上放个探针,有事无事观察观察自己的环境,亦或者公开给大家观赏。
不过,今天我要告诉大家,这是极度危险的一件事情,那个小小的探针可能就成为KO你服务器的凶手(我不是指探针透露的环境信息)!
就以雅黑探针为例吧。玩了那么多年探针,我们应该知道,探针最耗资源的一项就是浮点运算能力检测了,这需要占用大量的CPU去进行运算,点一次,可能占用的资源不太多,但是,如果你连续点击多次的话……
上图是我连续点了“一个探针足矣毁掉一台服务器”多次后的结果,我的CPU是I3 2120,可以看出,CPU占用已经到达了100%,而且这时网站也无法正常访问了。直到浮点运算结果出来后,才能正常加载。
这只是人手点击而已,如果用按键精灵的话,恐怕情况更糟糕!
我们再来做一个测试,首先保存以下代码为PHP文件:
<?php function test_float() { //得到圆周率值 $t = pi(); $timeStart = gettimeofday(); for($i = 0; $i < 3000000; $i++) { //开平方 sqrt($t); } $timeEnd = gettimeofday(); $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"]; $time = round($time, 3)."秒"; return $time; } if ($_GET['act'] == "float") { $valFloat = test_float(); echo($valFloat); exit(); } else { echo("Hello world"); } ?>
我保存为float.php,那么我访问http://域名/float.php?act=float就会进行float运算。
接下来,我使用某个工具,对float.php?act=float进行连续30秒,每秒钟3000次的GET请求,看看效果如何!
在进行GET请求后,系统平均负载立刻上升,到30/446后,完全定格住了,也就说已经无法正常对网站进行POST或者GET东西了。按F5刷新,网站长久未响应。而且此时,我的系统已经有明显的卡顿感。
连续的GET请求过去了一段时间,但是CPU占用还是保持100%不变,而且网站也仍然未响应,可以看出,CPU还有一大堆的浮点运算还没结束!由于我使用了varnish做前端,因此使用free -m看使用的内存,只有几百MB。
经过上面的测试,我们可以发现,这是一个效果非常明显的攻击,攻击者不需要太多肉鸡,也不需要大带宽,即可干死一台大内存的服务器!而且目前很多网站都是直接跑Apache的,那东西非常耗内存,加上高的CPU占用率,死的更快……
因此,各位站长们,为了你们的服务器的稳定,赶快把探针给撤掉吧……
原文地址:一个探针足矣毁掉一台服务器, 感谢原作者分享。