サービスを停止させることを目的とする攻撃をDoS攻撃といいます。場合によってはサーバーを乗っ取られたり,不正なプログラムを起動されたりする危険もあります。

 DoS攻撃(Denial of Service Attack)は,4つのセキュリティ・モデルの最後に当たります(図1)。Webサーバーやメール・サーバー,DNSサーバーなどのインターネット上に配置されているサーバーが攻撃対象となります。悪意を持つ人は,このサーバーに対して攻撃を仕掛けて,サーバーの機能を停止させたり性能を劣化させます。これにより,正当なユーザーがサービスを受けられなくなります。サービスを停止させる迷惑行為です。

図1●4つのセキュリティ・モデル
図1●4つのセキュリティ・モデル

 DoS攻撃はネットワークを使って遠隔で危害を及ぼします。その種類は,サーバーに対して大量のトラフィックを浴びせかけ回線容量を消費させるものと,サーバーの仕組みやソフトウェアの欠陥を突いて,サーバー自体の動作を停止させるもの――の2種類に分けられます。後者の攻撃は,サーバーの性能を劣化させるものから,もっと凶悪な場合には不正侵入を試みるものまであります。

 それぞれ,どのような方法で攻撃を仕掛けてくるのか,そしてどのように防御するのかを説明します。

回線帯域を占領する攻撃

 回線帯域を占領する攻撃(図2)は,ターゲットのサーバーに大量のパケットを浴びせかけて,サーバーが接続している回線を溢れさせることを狙ったものです。例えば,大量のpingパケットをターゲットに対して送り込みます。この場合,発信元のIPアドレスを調べれば,すぐに攻撃者が突き止められる気がします。しかし,実際には突き止められない場合がほとんどです。

図2●DoS攻撃は踏み台を使って発信元を隠す
図2●DoS攻撃は踏み台を使って発信元を隠す

 IPパケットが目的地に届けられるまでの道筋で,ネットワーク上のルーターはあて先アドレスを見て転送先ルーターを決めます。発信元アドレスは見ません。発信元アドレスに何がセットされていようが,あて先アドレスがネットワーク上に存在していれば,そのパケットはそのアドレスまで届けられるのです。ですから攻撃者は攻撃パケットの発信元アドレスに自分の正しいアドレスを書かずに,不正なアドレスを書いておきます。これを「アドレス・スプーフィング」といいます。

 ソケット・プログラミングの中級程度のスキルがあれば,アドレス・スプーフィングは難しくありません。偽のIPアドレスを発信元アドレスにセットしたパケットをネットワークに送り出すプログラムは,意外と簡単に作成できるものです。

 そんなことって,簡単にできていいのかな?と不審にも思えます。IPで送る際に,偽アドレスを発信元にセットできないような仕組みにすれば良いのではないかと思いませんか。しかし,そういう仕組みにできない理由があります。実際,自分のIPアドレスではなく他人のIPアドレスを発信元アドレスにしてパケットを送り出す装置は,ネットワークの中に多く存在します。代表的なのがルーターです。Linuxマシンでも,IP_FORWARDING機能をONにすることでルーターになれます。ルーターは,一方のインタフェースから受信したパケットを別のインタフェースに出力します。別のインタフェースから出力するパケットの発信元IPアドレスは自分自身(ルーター)ではなく,そのパケットの元々の発信者のものです。このように,自分のアドレスではなく他人のIP アドレスを発信元にセットしたパケットを送信する機能は,必要なのです。アドレス・スプーフィングは,この仕組みを悪用しているわけです。

 アドレス・スプーフィングの目的は自分のアドレスを隠すことですが,図2(上)のようにターゲットが,応答パケットを返送してくるのを避ける目的もあります。例えば,pingであればICMPリプライが返送されます。これは攻撃者にとっても厄介です。

 そこで,応答を逆手にとって,ターゲットのIPアドレスを発信元に設定したpingパケットを送り出すことにします。そうすれば図2(下)のように,ターゲットにはICMPリプライが送られることになります。中継してくれるホスト・コンピュータは何でも構いません。中継者は,ただ送られてきたping パケットに対して,送信元に応答を送り出しているだけです。しかし応答のあて先は,アドレス・スプーフィングされたターゲットになっています。ターゲットにとっては,ICMPリクエストを送った覚えがないのに,ICMPリプライを受け取るという不思議な目に遭います。

 攻撃者はこのような中継ホスト(踏み台ホストともいう)をインターネットの中に多く見つけ出して,複数のホストに対して同時に大量のping(ICMP リクエスト)を送り出します(図3)。このパケットのあて先は踏み台ホストなのでいろいろな種類がありますが,発信元はすべて攻撃対象のターゲット・ホストにセットされています。そうすると,踏み台ホストが返送するICMPリプライはすべて攻撃対象サーバーに集まっていきます。

図3●複数の踏み台を使うDDoS攻撃
図3●複数の踏み台を使うDDoS攻撃

 攻撃対象サーバーから見れば,いろいろな拠点から同時多発的に攻撃を受けているように見えます。このように,ターゲット・ホストをかく乱するために,複数拠点の踏み台ホストを使った攻撃を分散DoS攻撃とか,DDoS(Distributed DoS;ディードス)攻撃といいます。