当前位置: > 网络安全 > 黑客攻防 > DDoS攻击 >

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

时间:2014-12-15 22:09来源:linux.it.net.cn 作者:IT



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

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

 
1
2
3
4
5
$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里禁用如下函数:

1
2
3
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里禁用

 
1
fopen allow_url_fopen = Off

 

二、通过iptables禁止向外发包

 
1
2
3
4
5
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 }'

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容