ITの教科書検索
入門読了 約12分

DoS攻撃・DDoS攻撃とは ― SYNフラッドと増幅攻撃

DoS攻撃は大量の通信でサービスを止める攻撃で、多数の機器から一斉に行うのがDDoS攻撃です。SYNフラッドと増幅攻撃が成り立つ仕組みと、防ぎ方の違いを図で示します。

目次
  1. DoS攻撃・DDoS攻撃とは、サービスを使えなくする攻撃
  2. DoSとDDoSの違いは、攻撃元の数
  3. DoS攻撃の種類:何を使い切らせるか
  4. SYNフラッド:接続の待ち枠を使い切る
  5. 増幅攻撃:小さな要求を大きな応答に変える
  6. 対策の考え方
  7. 練習問題
  8. 参考にした資料

DoS攻撃・DDoS攻撃とは、サービスを使えなくする攻撃

Webサイトやオンラインサービスが突然つながらなくなる原因の1つが、DoS攻撃です。DoS攻撃は、サーバやネットワークに大量の通信を送りつけるなどして、正規の利用者がサービスを使えない状態にする攻撃です。DDoS攻撃は、同じことを多数の機器から同時に行う攻撃です。

DoSはDenial of Serviceの略で、日本語ではサービス妨害攻撃と呼びます。DDoSの頭のDは、分散を意味するDistributedの頭文字です。DoSとの違いは、攻撃の送信元が1台か多数かです。

目的は、データを盗んだり書き換えたりすることではなく、サービスを使えなくすることです。情報セキュリティの3要素でいえば、可用性を狙う攻撃にあたります。標的の機器に侵入せず、通信を送るだけで成り立つ攻撃が多いのも特徴です。そのため、不正アクセスへの備えであるID・パスワードの管理だけでは防げません。

DoS攻撃は、人の心理的な隙を突くソーシャルエンジニアリングや標的型攻撃とも違います。狙うのは、通信の決まり(プロトコル)の仕組みそのものです。

DoSとDDoSの違いは、攻撃元の数

DoS攻撃の攻撃元は1台です。1台の機器から標的へ通信を送り続け、標的の処理能力や回線を使い切らせます。

DDoS攻撃の攻撃元は多数の機器です。攻撃者は、ウイルスなどで多数の機器を乗っ取り、指令を出して一斉に通信を送らせます。乗っ取られた機器の集まりをボットネットと呼び、その中の1台1台をボットと呼びます。機器の乗っ取りに使うマルウェアの種類は、マルウェアの種類の記事で説明しています。

DoS:攻撃元は1台攻撃元1台大量の通信標的サーバ203.0.113.50DDoS:攻撃元は多数ボット乗っ取られた機器ボット乗っ取られた機器ボット乗っ取られた機器ほか多数大量の通信標的サーバ203.0.113.50
標的は同じ標的サーバで、違うのは攻撃元の数だけです。DoS攻撃は1台の機器から、DDoS攻撃はウイルスなどで乗っ取られた多数の機器から、同時に通信を送ります。攻撃元が多いほど、標的に集まる通信が増えます。1台の攻撃元だけを止めても防げない点も、DDoSの特徴です。

DDoSでは、標的に集まる通信が増えます。通信が多数の送信元から来るため、攻撃元を1つずつ止める方法も効きにくくなります。攻撃の本当の出どころも、見つけにくくなります。

乗っ取られた機器の持ち主も、被害者です。自分の機器が攻撃に使われていることに、気づかない場合があります。

DoS攻撃の種類:何を使い切らせるか

DoS攻撃は、標的が持つ資源のどれかを使い切らせます。使い切らせる資源で分けると、手口の違いが見えやすくなります。

使い切らせるもの代表的な攻撃詳しく見る節
回線の帯域大量の通信で回線を埋める。増幅攻撃もこの仲間増幅攻撃の節
メモリ(接続の状態を覚える領域)SYNフラッドSYNフラッドの節
CPUの処理能力大量のパケットに照合や応答をさせる種類の節の末尾

インターネットの技術文書RFC 4732は、アプリケーションが使い切らされる資源を挙げています。メモリ・CPU・ディスク・プロセス数・同時接続数の上限です。資源によって、攻撃が止まったあとの回復の様子も違います。CPUは攻撃が止まれば空きますが、ディスクの空きは、消す処理をしないと戻りません。

次の2つの節では、表の「回線の帯域」と「メモリ」を使い切らせる代表的な手口を説明します。メモリを狙うSYNフラッドは、帯域を埋める攻撃より少ないパケットで済みます。帯域を狙う手口には、通信を何倍にも膨らませる増幅攻撃があります。

SYNフラッド:接続の待ち枠を使い切る

SYNフラッドは、SYNだけを大量に送り、サーバの接続の待ち枠を使い切らせる攻撃です。TCPは、3ウェイハンドシェイクという3回のやりとりで接続を始めます。SYNフラッドは、最初のSYNだけを送り、最後のACKを返さないことで成り立ちます。

サーバは、SYNを受けると、その接続の情報を覚えてからSYN+ACKを返します。最後のACKが届くまでのこの状態を、半開き接続と呼びます。多くのOSは、覚えておける半開き接続の数に上限を設けています。

この上限が埋まると、新しいSYNは無視されるか、未完了の接続が置き換えられます。どちらになるかはOSによって違います。正規のクライアントのSYNも、同じ扱いを受けます。

攻撃者は、送信元アドレスを偽装することが多いです。この場合、サーバのSYN+ACKは偽装された送信元へ届きます。そのアドレスの持ち主も、巻き添えの被害を受けます。

偽装した送信元が動いている機器だと、接続を断るRSTが返り、枠はすぐに空きます。そのため攻撃者は、SYN+ACKに何も返さないアドレスを送信元に選びます。次の図で、受付表が埋まる様子を1段ずつ確かめられます。

STEP 1 / 5
標的サーバ 203.0.113.50 の半開き接続の受付表(枠の数は説明用の例)
192.0.2.10
空き
空き
空き
192.0.2.10 → 203.0.113.50 SYN
203.0.113.50 → 192.0.2.10 SYN+ACK
受付表:1枠使用中(空き3)
ステップ1:ふつうの接続のはじまり
正規のクライアント(192.0.2.10)が、サーバへSYNを送ります。サーバは、この接続を受付表の1枠に書き留め、SYN+ACKを返します。この状態を半開き接続と呼びます。

待ち時間を短くして枠を早く空ける方法もありますが、攻撃者が送る頻度を上げれば効果は薄れます。一方、SYNクッキーという方法は、そもそも枠を使いません。接続の情報を、SYN+ACKのシーケンス番号に埋め込むからです。このため、SYNフラッドへの代表的な対策になっています。

ただし、SYNクッキーはTCPの一部の機能と両立しない場合があります。そのためRFC 4987は、SYNクッキーを初期設定では有効にしないよう勧めています。

増幅攻撃:小さな要求を大きな応答に変える

増幅攻撃は、小さな要求を送り、標的に向けて大きな応答を返させる攻撃です。応答を返す側のサーバを、反射サーバと呼びます。増幅攻撃を反射攻撃と呼ぶこともあります。

攻撃者は、要求の送信元アドレスを標的のアドレスに書き換えます。反射サーバは、要求の送信元に応答を返すので、応答は標的へ届きます。

攻撃者反射サーバ例:DNSサーバ標的203.0.113.50小さな要求送信元を標的に偽装大きな応答要求の28〜54倍(DNS)
攻撃者は、送信元を標的のアドレスに書き換えた小さな要求を、反射サーバへ送ります。反射サーバは、要求の送信元に向けて応答を返すので、大きな応答が標的に届きます。標的から見ると、通信してきた相手は反射サーバです。攻撃者のアドレスは、標的に届く通信の中に出てきません。

この手口は、送信元アドレスを偽装できる攻撃者にしか使えません。送信元を確かめるやりとりを挟まないUDPのサービスは、偽装された要求にも応答してしまいます。DNSは、その代表例です。

応答が要求の何倍になるかを、増幅率と呼びます。アメリカのサイバーセキュリティ機関CISAは、帯域増幅率を表にまとめています。帯域増幅率は、応答のデータ部分(UDPペイロード)のバイト数を、要求のバイト数で割った値です。

反射に使われるサービス増幅率(BAF)
DNS28〜54倍
SSDP30.8倍
NTP556.9倍
Memcached10,000〜51,000倍

たとえば増幅率が28倍のサービスに10Mbps分の要求を送ると、単純計算で280Mbps分の応答が標的へ向かいます。攻撃者の回線が細くても、標的には大量の通信が届きます。

TCPのSYN+ACKの再送を使う増幅もあります。この場合も、偽装した送信元から反射サーバへSYNを送り、返ってくるSYN+ACKが標的へ向かいます。標的からRSTも最後のACKも返らないと、反射サーバはSYN+ACKを何度か再送します。その分だけ、標的に届く通信が増えます。

対策の考え方

対策は、狙われる資源と手口ごとに変わります。次の表は、ここまでの攻撃と対策の対応です。

狙われる資源・手口対策仕組み
SYNフラッドSYNクッキー受付表に何も書き留めず、SYN+ACKのシーケンス番号に情報を埋め込む
SYNフラッド手前の機器での代理応答ファイアウォールなどが接続の完了まで受け、完了後に本来のサーバへ中継する
送信元を偽装する攻撃偽装した送信元の遮断ISPなどが、割り当てた範囲に無い送信元アドレスのパケットを捨てる
増幅攻撃大きな応答を返す前の確認送信元が本物かを確かめるやりとりを挟んでから、大きな応答を返す
帯域・処理能力の全般容量の余裕と分散予想できるピークに耐える容量を用意し、提供拠点を分散する

送信元の偽装を遮断する対策は、BCP 38として知られるRFC 2827が定めています。ISPなどが、割り当てた範囲に無い送信元アドレスのパケットを捨てる方法です。ただし、正当なアドレスから送られる攻撃や、乗っ取られた多数の機器からの攻撃には効きません。世界中で導入される保証もないので、受ける側がこの対策だけに頼ることはできません。

ファイアウォールは、通す通信を絞る仕組みです。SYNフラッドでは、ファイアウォールが接続の完了まで手前で受ける使い方もあります。ただし、DDoSの通信は多数の送信元から来るので、正規の通信と見分けにくくなります。送信元や宛先ポートの絞り込みだけでは、防ぎきれません。通信の流れがふだんと違うことから攻撃を見つけるには、IDSやIPSを使います。

急に増えた正規のアクセスと、巧妙なDoS攻撃は、原理的には区別できません。そのためRFC 4732は、最初の防衛線として、予想できるピークに耐える容量を用意することを挙げています。容量が足りないサイトは、最も落としやすい標的です。

もう1つの考え方は、サービスの提供拠点を分散することです。拠点が複数あれば、全体を攻撃するのが難しくなります。

ロードバランサは、複数のサーバに処理を振り分けます。CDNは、世界中のエッジサーバでコンテンツを配ります。どちらも、1か所に通信が集中しない形を作る仕組みです。クラウドでは、AWS WAFとShieldのような防御サービスも使えます。

練習問題(全6問)

Q1DoS攻撃とDDoS攻撃の違いとして正しいものは?
Q2SYNフラッドで使い切らされる資源はどれ?
Q3SYNフラッドで、攻撃者が送信元を偽装したSYNを送ると、サーバの受付表の枠が空かないのはなぜ?
Q4DNSの増幅率を28倍から54倍とします。攻撃者が10Mbps分の要求を反射サーバへ送るとき、標的に向かう応答の量はどの範囲になる?
Q5SYNクッキーの説明として正しいものは?
Q6あるサイトに急にアクセスが集中して、サービスが止まった。この通信だけを見て、DoS攻撃か正規のアクセス集中かを判断することについて、正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

目的別の本の選び方を見る

セキュリティの記事を続けて読む

セキュリティ 全37本中8本目