🐷

DoSとDDoSの違いとその対策

に公開

※本記事は、ChatGPTとの対話をもとに生成AIを活用して執筆していますが、全体の構成と主張は筆者自身の考えによるものです。


こんにちは、今回はWebサービスを運用する上で避けて通れない「DoS攻撃」と「DDoS攻撃」について、基本から対策まで整理してみたいと思います。

DoS攻撃とは?

DoS(Denial of Service)攻撃は、サーバーやネットワークに対して大量のリクエストやデータを送りつけ、サービスを利用不能にする攻撃手法です。

特徴としては、

  • 単一のマシンから攻撃が行われる
  • 攻撃は比較的単純
  • IPアドレスのブロックなどで比較的防ぎやすい

具体例

  • 1秒間に数千件のHTTPリクエストを送りつける
  • セッションをわざと開いたままにしてサーバーの接続数を使い切る(例:Slowloris)

DDoS攻撃とは?

DDoS(Distributed Denial of Service)攻撃は、DoS攻撃を多数の端末から同時に仕掛ける手法です。

特徴としては、

  • ボットネットと呼ばれる感染端末のネットワークを使う
  • 攻撃元が世界中に分散しているため、検知・防御が非常に困難
  • アクセスが正規に見えるため、通常のWAFでは対処しきれないことも

具体例

  • 数千〜数百万台の端末が同時にWebサイトにアクセスしてトラフィックを飽和させる
  • IoT機器や家庭用PCを乗っ取って攻撃を実行する(例:Miraiボットネット)

DoSとDDoSの違いまとめ

項目 DoS DDoS
攻撃元 単一 複数(分散)
攻撃規模 小〜中 大規模
防御の難易度 比較的低い 非常に高い
特徴 リクエストが集中する 正規アクセスのように見える

対策方法まとめ

1. レートリミット

  • 一定時間内のアクセス数を制限し、異常アクセスを防止
  • DoSには有効。DDoSでは部分的にしか効果がない

2. IPフィルタリング / Geoブロック

  • 明らかに異常なIPや、特定の国・地域をブロック
  • 攻撃元が限定されている場合に有効

3. CDN(Content Delivery Network)の利用

  • Cloudflare, Akamai などでアクセスを分散・バッファリング
  • 大量アクセスを受けても元のサーバーを守れる

4. WAF(Web Application Firewall)

  • 不正リクエストのパターンを検知して遮断
  • アプリケーション層での攻撃にも対応可能

5. DDoS対策サービスの導入

  • AWS Shield, Azure DDoS Protection, Google Cloud Armorなど
  • 専用の大規模防御ネットワークを利用して攻撃を自動緩和

6. Anycastルーティング

  • 地理的に分散した複数のデータセンターにリクエストを分散
  • 単一地点へのトラフィック集中を回避

Node.jsでのレートリミット基本実装(Express)

DoS攻撃対策の第一歩として、Node.jsアプリでレートリミットを導入するのは効果的です。ここでは、Expressと express-rate-limit を使ったシンプルな実装例を紹介します。

インストール

npm install express express-rate-limit

実装例

import express from 'express';
import rateLimit from 'express-rate-limit';

const app = express();

// IPごとに1分間に100回までのアクセスを許可
const limiter = rateLimit({
  windowMs: 60 * 1000,
  max: 100,
  message: 'Too many requests from this IP, please try again later.',
});

app.use(limiter);

app.get('/', (req, res) => {
  res.send('Hello, rate-limited world!');
});

app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

補足

  • IPアドレスをもとにレートリミットをかけています。
  • IPではなく、APIキーやユーザーID単位での制限をかけたい場合は、keyGenerator オプションでカスタマイズ可能です。

おわりに

DoSやDDoS攻撃は年々巧妙化しており、「うちには関係ない」と思っていると、ある日突然大規模な攻撃に見舞われることもあります。

まずはレートリミットやCDNの導入など、できるところから対策を始めてみることが大切です。

参考リンク

Discussion