A-A+

Centos下PHP-DDOS脚本的研究与防范

2012年06月20日 CentOS, PHP 评论 2 条 阅读 4,197 次

前天由于一个客户不停地向外发包,导致服务器整个瘫痪。仔细检查后发现客户的discuz程序被植入被植入了PHP-DDoS攻击脚本,访问触发后会不停地攻击他人服务器。所以导致了网络的瘫痪。主要原因由于程序的不健壮以及PHP新的BUG被大规模利用。

特征:用PHP代码调用sockets,直接用服务器的网络攻击别的IP。 PHP脚本DDOS攻击的原因及php脚本部分源码:

$fp = fsockopen(“udp://$host”, $port, $errno, $errstr, 5);
if($fp){ 
       fwrite($fp, $out); 
       fclose($fp);
}

php脚本中的 fsockopen 函数,对外部地址,通过UDP发送大量的数据包,攻击对方。

解决方案:

可通过 php.ini ,禁用 fsockopen、 fwrite、 fclose这三个函数

一、禁用fsockopen函数

在php.ini里禁用如下函数:

disable_functions=gzinflate,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,
proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,
symlink,popepassthru,stream_socket_server,fsocket,fsockopen,fwrite,fclose

在php.ini里禁用

fopen allow_url_fopen = Off

二、通过iptables禁止向外发包

iptables -I OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT #允许需要UDP服务的端口(如DNS)
iptables -A OUTPUT -p udp -j DROP #禁止本机对外发送UDP包
#“53”,为DNS所需要的UDP端口,“8.8.8.8”部分为DNS IP,根据您服务器的设定来定。
#若您不知您当前服务器使用的DNS IP,可在SSH中执行以下命令获取:
cat /etc/resolv.conf |grep nameserver |awk 'NR==1{print $2 }'
标签:

2 条留言  访客:0 条  博主:0 条   引用: 1 条

  1. avatar 正版软件分享

    现在很怕这个。

来自外部的引用: 1 条

  • 求教,我的服务器是被黑了吗?怎么有这么大的发送流量? – Linux – 开发者问答

给我留言