快捷搜索:   nginx

Linux服务器对付PHP DDOS脚本对外攻击的办法

要说最近网络安全界被议论最多的是什么,绝对是PHP DDOS,这个PHP DDOS脚本从被一个老外开发出来后,辗转来到了中国,然后被中国的大小黑客给发扬光大了。。。。


为什么我会忽然写这个对付攻击的办法。。。实在是一言难尽,笨牛网不是刚搬了服务器嘛。。一些以前就和笨网分享服务器资源的老客户也随我搬迁到了洛杉矶机房,因为第一次配置CENTOS的服务器,难免经验不足,客户同志们的网站,因为很多默认被设置为666权限,有写入执行问题,所以我为了省事就全部让他们设置成777,结果就这样出事了。。。有些网站的程序真的是漏洞百出,有个客户就这样被传了个PHP DDOS的脚本,被利用来对外发动DDOS攻击, 我也是在对服务器进行例行检查的过程中才发现的,服务器的对外流量跑满了!!!,我就想我服务器上都是小站点,平常整台服务器加起来一天的IP都不到5K的,怎么可能今天忽然跑满了,然后就将PHP改成SU-PHP模式,一个个进程去核对,终于让我发现的问题站点,进而对文件分析终于让我抓到了那只小木马。。。

对PHP DDOS脚本就不多分析了,这里我直接将文件删除了,然后设置了全新权限。同时为了防止有客户被传上木马对外攻击,我对服务器进行了部分调整,主要方法如下:

 

 因为服务器只设置了PHP环境,同时分析那只木马主要也是利用php shell发包,然后执行ddos攻击(代码没细看,可能是用UDP)。因此我主要对PHP的一些会被利用的函数进行处理,同时对LINUX系统的IPTABLES防火墙进行适当配置。备注:我用的是CENTOS,别的类型的LINUX系统可能在配置iptable时候有所差异,这个要自己调节了。

1、修改PHP.INI
在php.ini中的;disable_functions一行将其前面的;号去掉,然后按下面填写
disable_functions=symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,curl_exec,curl_multi_exec,show_source

另外如果你服务器没有进行采集的必要,还可以将allow_url_fopen = Off 设置成off,默认的是On的

2、编写个sh脚本,用来修改iptable的设置,禁止服务器的ouput对外发udp包(本机设置的域名解析服务器除外)
vi phpddos.sh
进入vi编辑器后,将下面命令黏贴进去

#!/bin/sh
NSIP=`cat /etc/resolv.conf |grep nameserver |awk 'NR==1{print $2 }'`
/sbin/iptables -A OUTPUT -p udp -j DROP
/sbin/iptables -I OUTPUT -p udp --dport 53 -d $NSIP -j ACCEPT
/etc/init.d/iptables save
service iptables restart

然后chmod +x phpddos.sh
最后./phpddos.sh
执行下这个sh脚本,大功告成。


在网上又淘到一段IPTABLES的防火墙设置方案,大家也可以用这个,将下面代码每一行复制到SSH中执行一次。用这个防火墙规则,就无须再改动php.ini了。我测试成功,可以防止UDP类的PHP-DDOS木马对外攻击,黑客的攻击工具会显示对外发包攻击成功,但是实际上这些包都会被iptable防火墙给过滤掉,不会对外攻击了。

#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
#/etc/rc.d/init.d/iptables save
# service iptables restart
#chkconfig iptables on

开放 对外 以及对内的 DNS端口 53
禁止其他全部出站的UDP 协议
开机启动iptables
另外要说明的是,上面的代码是因为我服务器使用的是谷歌的DNS来解析,我服务器端对外的访问(在服务器端上网,就需要,如果只是单纯的服务器,不进行yum安装也可以不用),因此我开放对8.8.4.4和8.8.8.8的访问,如果你不是设置为谷歌的DNS,那么这里要自行修改成你的DNS。使用的DNS是什么可以用下面方法查询
#cat /etc/resolv.conf |grep nameserver


参考:https://www.bnxb.com/websafe/25090.html

顶(1)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论