DDoS攻撃
Distributed Denial of Service Attack
概要(サマリー)
DDoS(ディードス)攻撃とは、数千台、数万台といった大量のコンピュータから、特定のWebサイトやサーバーに対して一斉にアクセスを集中させ、サービスを麻痺させる攻撃である。
たとえるなら、あるお店の入り口や電話回線に対して、世界中から雇われた何万人もの偽客(または操られた人たち)が一斉に押し寄せたり、無言電話をかけ続けたりするような状態である。これにより、本当にそのお店を利用したい一般のお客さんが入店できなくなったり、お店がパンクして休業に追い込まれたりしてしまう。
攻撃者は、ウイルスなどで乗っ取った世界中の無関係なコンピュータを利用して分散的に攻撃を仕掛けるため、防ぐのが非常に難しいのが特徴である。
詳細解説
DDoS攻撃の仕組みと「ボットネット」
DDoS攻撃の「D(Distributed: 分散された)」が示す通り、攻撃は1台ではなく、世界中に分散した多数の機器から行われる。
攻撃者はあらかじめ、ウイルスやマルウェアを使ってセキュリティの甘いパソコンやスマートフォン、IoT機器(ルーターやネットワークカメラなど)を乗っ取り、遠隔操作できる状態にしておく。このように乗っ取られた機器のネットワークを「ボットネット」と呼び、個々の機器を「ボット」と呼ぶ。
攻撃者が指示を出すと、これらのボットが一斉に標的のサーバーへアクセスを開始するため、被害サーバー側には膨大なトラフィックが押し寄せることになる。
DoS攻撃とDDoS攻撃の違い
- DoS(Denial of Service)攻撃: 1台のコンピュータから標的に対して攻撃を行う。送信元が1つのIPアドレスに特定されるため、そのIPアドレスからのアクセスを遮断(ブロック)すれば比較的容易に対策できる。
- DDoS攻撃: 複数の場所(ボットネット)から同時に攻撃を行う。攻撃元のIPアドレスが数万以上に分散しているため、どれが攻撃でどれが一般のアクセスかを見分けるのが困難であり、単純なIPブロックでは防ぎきれない。
代表的なDDoS攻撃の種類
DDoS攻撃には、狙うレイヤーによっていくつかの手法が存在する。
* インフラ/ネットワーク層への攻撃(ボリュメトリック攻撃): 大量のパケットを送りつけ、回線帯域を限界まで消費させて通信を通りにくくする(例:UDPフラッド攻撃、DNS増幅攻撃など)。
* プロトコル層への攻撃: TCP接続の仕組みなどを悪用し、サーバーやネットワーク機器の接続管理能力を使い果たさせる(例:SYNフラッド攻撃など)。
* アプリケーション層への攻撃(HTTPフラッド攻撃): Webサイトの特定のURL(重い処理が走るデータベース検索など)に対して大量のHTTPリクエストを送り、サーバーの処理能力(CPUやメモリ)を使い果たさせる。
DDoS攻撃の対策方法
DDoS攻撃を完全に防ぐことは困難だが、以下のような緩和策(ミティゲーション)が取られる。
* CDN(コンテンツ配信ネットワーク)の活用: 攻撃トラフィックを世界各地の分散サーバーで分散・吸収し、本番サーバーまで攻撃を通さないようにする。
* DDoS専用プロテクションサービスの導入: CloudflareやAWS Shieldなどの専用サービスを使い、アクセスパターンから異常な通信を自動検知して遮断する。
* WAF(Web Application Firewall)の設置: アプリケーション層への執拗なリクエストをフィルタリングし、不自然な挙動のブラウザや自動化されたアクセスを排除する。ただし、回線帯域そのものを埋めるタイプのDDoS攻撃には、CDNや専用のDDoS対策サービスとの併用が必要である。
AIコーディングとの関係
AIとDDoS耐性を考慮したシステム設計
DDoS攻撃そのものをプログラムコードだけで防ぐことはできないが、AIに「DDoS攻撃に強いシステム構成やインフラ設計を教えて」と相談することで、効果的な防御設計を提案してもらうことができる。
また、APIの実装において「レートリミット(一定時間内のアクセス回数制限)」を設けるコードをAIに書かせることで、小規模なDoS攻撃やスクレイピングによるサーバーへの負荷を未然に防ぐことができる。
指示を出す際のポイント
AIに高負荷対策のコードや構成を依頼する際は、以下のように指示すると有効である。
* 「Node.js(Express)で、同じIPアドレスからのAPIリクエストを1分間に最大60回までに制限するレートリミッターのコードを書いて」
* 「AWS環境で、DDoS攻撃からWebアプリケーションを保護するためのネットワーク構成案を示して」
よくある勘違い
自分のパソコンはDDoS攻撃の標的にならないから関係ない?
標的になることはなくても、「攻撃の踏み台(ボット)」にされる危険性がある。
セキュリティ対策を怠っているパソコンや家庭用のWi-Fiルーターがマルウェアに乗っ取られると、自分が気づかないうちに誰かのWebサイトを攻撃する加害者になってしまう。そのため、OSのアップデートやパスワード設定などの基本的なセキュリティ管理が間接的なDDoS対策になる。
アクセスが集中してサイトが落ちたのはすべてDDoS攻撃?
すべてがDDoS攻撃とは限らない。
テレビ放映やSNSでの拡散によって正規ユーザーのアクセスが急増し、サーバーが耐えられなくなることもある。一方で、いわゆる「F5アタック」のように、意図的にページの再読み込みを繰り返して負荷をかける行為は、小規模なDoS攻撃に近い。
現象としてはどちらも「サイトが重い」「つながらない」という形で見えるが、攻撃によるものか正規アクセスの集中によるものかによって、サーバー管理者側の対応(スケールアップ、キャッシュ、アクセス制限、DDoS対策サービスの利用など)が異なる。
ファイアウォールさえあればDDoS攻撃を防げる?
一般的なファイアウォールだけではDDoS攻撃を防ぎきれない。
通常のファイアウォールは、特定のポートや許可されていない不正な経路の通信を止めるものである。しかし、DDoS攻撃(特にHTTPフラッド)は、Webサイトを閲覧するための正規のポート(80番や443番)を通り、一見普通のアクセスに見える通信を大量に送ってくるため、ファイアウォールをすり抜けてしまう。これに対応するには、より高度なWAFや専用のDDoS対策サービスが必要となる。
まとめ
- DDoS攻撃は、ウイルス等で乗っ取った多数の機器(ボットネット)から一斉に大量のアクセスを送り、サーバーをパンクさせる。
- 送信元が分散しているため、単一のIPブロックなどの単純な対策では防御が難しい。
- 主な対策は、CDNでトラフィックを逃がすことや、AWS/CloudflareなどのDDoS対策専用システムを利用することである。
- 開発者は、APIへのアクセス制限(レートリミット)を設けるなどして、アプリケーションを保護するコードを実装する。
情報ソース
より詳しくAIに聞いてみよう
- DDoS攻撃の種類と、それぞれの攻撃がネットワークのどの階層(レイヤー)を標的にしているのか一覧で教えてください。
- Express(Node.js)で、
express-rate-limitを使って特定のAPIルートにアクセス制限をかけるコード例を示してください。 - DDoS対策サービス(Cloudflareなど)が、どのようにして「攻撃のパケット」と「一般ユーザーのアクセス」を見分けているのか教えてください。
- AIを使って個人開発のWebアプリを立ち上げる際、お金をかけずに行える最低限のDDoS・負荷対策を教えてください。
- AWSのCloudFrontとWAFを組み合わせて、ウェブサイトをDDoS攻撃から守る構成の手順を教えてください。