简单防范PHPDDOS对外发UDP包消耗流量

发布于 2013-08-11  102 次阅读


今天vps上有一个dedecms被黑了,上传了phpddos,这个玩意最近很流行,几个小时把我1000G流量跑光了

Dear xxx, We are sending you this email because you have exceeded your bandwidth allocation on the virtual server listed below:

Hostname : xxx

IP Address : xxx

Status : SUSPENDED

Your virtual server has now been suspended.

PHP DDos 这东西真厉害,有兴趣的可以下载试试,不要作非法用途喔

http://www.exploit-id.com/dospoc/php-ddos-r0b0ts-udp-flooding-v0-1

或者点这下载

把自己adsl的ip填上服务器试试,马上掉包!

UDP Flood
Completed with 7759 (492.51 MB) packets averaging 3879.5 packets per second

image

image

简单防御方法:

一、对于Linux系统

iptables拦截对外的udp包,禁止phpddos对外发包,避免服务器大量消耗流量.

1、禁止本机对外发送UDP包

iptables -A OUTPUT -p udp -j DROP

2、允许需要UDP服务的端口(如DNS)

|->本文来自CrazyFeng.com ,转载时请保留本信息 !~

iptables -I OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT

“53”,为DNS所需要的UDP端口,“8.8.8.8”部分为DNS IP,根据服务器来定,若不知当前使用的DNS IP,可在SSH中执行以下命令:

cat /etc/resolv.conf |grep nameserver |awk 'NR==1{print $2 }'

然后保存并重启iptables服务

service iptables save
service iptables restart

下面是一键脚本,一步搞定:

wget http://img.crazyfeng.com/sh/iptables/udp-block.sh
sh udp-block.sh

二、对于Windows系统

利用IPSec IP安全策略

下载安全策略文件 http://img.crazyfeng.com/sh/phpddos/phpddos-ipsec.rar

使用方法:
首先 开始 - 运行 - gpedit.msc 找到IP安全策略
鼠标右键 - 所有任务 - 选择导入策略
最后指派策略即可

或者新建个bat文件,内容为:(2003)

DROP UDP Flood
@echo off
cls
:获取DNS地址
for /f "delims=: tokens=1,2" %%a in ('ipconfig /all ^|findstr /i "DNS Server"') do (
set DNSIP=%%b
)
:新建IP安装策略禁止UDP
netsh ipsec static add policy name=禁止UDP description=允许DNS,拒绝其它UDP外出
:新建IP安全规则
netsh ipsec static add filterlist name=允许UDP
netsh ipsec static add filterlist name=拒绝UDP
:新建IP筛选器
netsh ipsec static add filter filterlist=允许UDP srcaddr=me dstaddr=%DNSIP% description=允许DNS查询 protocol=udp mirrored=yes dstport=53
netsh ipsec static add filter filterlist=拒绝UDP srcaddr=me dstaddr=any description=禁止UDP外出 protocol=udp mirrored=yes
:新建IP筛选器操作
netsh ipsec static add filteraction name=允许DNS查询 action=permit 
netsh ipsec static add filteraction name=拒绝UDP外出 action=block 
:封装策略
netsh ipsec static add rule name=允许规则 policy=禁止UDP filterlist=允许UDP filteraction=允许DNS查询
netsh ipsec static add rule name=拒绝规则 policy=禁止UDP filterlist=拒绝UDP filteraction=拒绝UDP外出
:应用IP安全策略
netsh ipsec static set policy name=禁止UDP assign=y

后语:

上面主要是通过防火墙来屏蔽phpddos,避免其占用网络带宽.但这样是不够的,phpddos在工作时,会大量消耗服务器cpu

还要通过屏蔽php函数等,排查木马,修复程序漏洞等,进一步阻挡有害程序对web服务器的影响.

以后会再详细叙述.