DDoS攻撃に対処する方法

今日の現在のトピック、つまりDDoSとそれに対処する方法についてお話したいと思います。 通常の管理者はそれが何であるかを知っていますが、ほとんどのウェブマスターにとって、この略語はこのトラブルを直接経験するまで謎のままです。 そのため、DDoSは分散型サービス拒否の略語であり、感染した何千ものコンピューターがサーバーに大量の要求を送信しますが、その後は処理できません。 DDoS攻撃の目的は、サーバーの通常の動作を中断し、将来、サイトまたはサーバー全体を「クラッシュ」させることです。



これから身を守るには? 残念ながら、DDoS攻撃に対する普遍的な保護対策はまだ存在しません。 ここでは、ハードウェア、ソフトウェア、さらには組織の特性の測定を含む統合アプローチが必要です。







ネットワークの巨人であるシスコのソフトウェアおよびハードウェアシステムが最も効率的ですが、それらのためにはきちんと分岐する必要があります。



IISサーバーを保護するために、Microsoftの(ソフトウェア)ソリューションを使用できますが、この会社の寛大さを知っていれば、それらも無料ではないことを推測できます。



現在、カスタムDDoS攻撃は収益性が高く、急速に発展しているオンライン犯罪のニッチになっています。 Googleで検索すると、「専門家」からの多数のオファーを見つけて、競合他社のサイトを排除できます。



DDoSから保護するための基本原則は何ですか? まず第一に、個人の人種的、国家的、または宗教的な感情を損なう可能性のあるコンテンツを公開することにより、あなたのサイト(あなたのサイト)に過激な人々の特別な注意を引き付ける必要はありません。



「注文」された場合、または以前のアドバイスに従わなかった場合は、注意してください-Webサーバーのハードウェアリソースにはパフォーマンスを確保する必要があり、分散システムと冗長システムは可能な限り効率的に構築されます。 DDoSの仕組みを理解しないと、効果的な保護を構築することは不可能です。 悪意のあるコードに感染した多数のコンピューターが、DDoS攻撃を実行するために使用されます。 これらのコンピューターはボットネット(「ボットネット」-ゾンビマシンのネットワーク)に結合され、攻撃者の命令でDDoS攻撃を実行し、コンピューターの所有者はこれを疑うことさえしません。



ホスティング会社として、 私たちは毎日お客様のサイトでDDoS攻撃に直面し、それらに対処した経験があります。 前述のように、単に普遍的な保護対策はありませんが、攻撃はまだ防ぐことができます。 DDoS攻撃が特定のサイトに到達するとします(domain.ruとします)。 ログには、多数のGET要求がメインページに送られることが示されています。 ほとんどの場合、JavaScriptリダイレクトを使用してボットをだますことができます。 例:



<script type="text/javascript">

window.location = "domain.ru/index.php"

</script>








その結果、GET要求によって直接攻撃される各セクションでは、ファイルサイズはわずか数バイトになります。これは、ボットが〜50-100kbページに接触し、同時に5-10個のSQLクエリをプルする場合よりもはるかに優れています。 ブラウザでJavaScriptが無効になっていない正当なユーザーは、index.phpにリダイレクトされます。



ただし、大きなボットが1つあります。検索ボットにもjsインタープリターが装備されておらず、攻撃ボットと同様にjsリダイレクトに埋もれます。 tcpdumpやnetstatなどのUNIXユーティリティを使用して、特定のIPアドレスからの接続数をカウントして禁止する小さなスクリプトを作成できます。



たとえば、ホストを確認することで、ボットを特定できます。 サーバーへの多くの接続を作成するIPをブロックする基本スクリプトの小さな例(このオプションはCentos 5.6でテストされました):



クローンエントリー



*/1 * * * * netstat -an | grep tcp | awk '{print $5}' | cut -d: -f1 | sort -n | uniq -c > /var/log/ip.list







このコマンドは、接続数とIP自体を含むリストを作成します。次に例を示します。



10 209.232.223.117

1 209.85.161.191

2 212.113.39.162

1 212.78.78.78

61 213.142.213.19

5 213.151.240.177

1 210.169.67.225

1 216.179.59.97



スクリプト自体は、画面で実行したり、デーモンを作成したりできます。



#!/bin/bash

connects=150 <- IP

while read name

do

// - IP

count=`echo $name | awk '{print $1 }'`

// IP

ip=`echo $name | awk '{print $2 }'`

//

hostname=`host $ip`;

// -

if [ "$count" -gt "$connects" ]

then

//, IP

if grep $ip /etc/white.list > /dev/null 2>&1

then

// google ( - )

if echo $hostname | grep "google" > /dev/null 2>&1

then

//

echo "$ip" >> /etc/white.list

echo `date +%H:%M_%d-%m-%Y` $ip "- ADDED TO WHITE LIST AS $hostname SEARCH BOT IP" >> /var/log/ddos_log

else

// -

route add $hostname reject

fi

fi

fi

done < /var/log/ip.list








また、DDoS攻撃によって引き起こされるいくつかの問題を回避するのに役立つApacheパラメーター設定も見てみましょう。



タイムアウト-このディレクティブ(DDoS攻撃を受けやすいWebサーバー)に可能な限り低い値を指定します。



KeepAliveTimeoutディレクティブ-値を下げるか、完全にオフにする必要もあります。



他のモジュールによって提示されるさまざまなタイムアウトディレクティブの値を確認する必要があります。



ディレクティブLimitRequestBody、LimitRequestFields、LimitRequestFieldSize、LimitRequestLine、LimitXMLRequestBodyは、顧客の要求によるリソースの消費を制限するように慎重に構成する必要があります。



必ずAcceptFilterディレクティブを使用してください(それをサポートするOSで)。 デフォルトでは、Apache httpd構成に含まれていますが、その作業のために、OSの新しいカーネル設定(* nix、* bsd)で再構築する必要がある場合があります。



MaxClientsディレクティブを使用して、サーバーに同時に接続できるクライアントの最大数を指定します。ディレクティブの値を減らすことにより、Webサーバーの負荷を減らすことができます。



ソフトウェアレベルでDDoSから保護することが可能です。 これは、無料のスクリプト-DDoS Deflateで役立ちます。 これにより、子供の洪水とDDoSを簡単に取り除くことができます。 スクリプトは「netstat」コマンドを使用してDDoSとフラッドを検出し、その後iptablesまたはapfファイアウォールを使用して害虫のIPアドレスをブロックします。 ただし、リラックスして、弱いDDoSによってサーバーが損傷を受けることはないと考えてください。 たとえば、攻撃するゾンビマシンは10〜50だけですが、それらはすべて厚いチャネルを持っているため、運が良ければ、出張に行くか、または数十(または数百)のサーバーがあり、物理的に時間がないモニター」それらのすべて。 この場合、少数のマシンでもチャネルをあふれさせたり、Apache、mysqlなどのWebサーバーに障害を発生させる可能性があります。 もう1つは、管理者が24時間サーバーを「監視」し、攻撃を簡単に検出する場合です。 しかし、これはめったに起こらないため、アラームシステムを接続する必要があり、攻撃しているゾンビマシンをブロックするプロセスを自動化する必要があります。



PS記事はユーザーの役人によって私に送られました。 記事に関する質問、以下の記事に関する推奨事項、関心のあるトピックや質問は、彼に送ってください。



ご清聴ありがとうございました!



All Articles