サービス拒否攻撃(DoS攻撃)と分散型サービス拒否攻撃(DDoS攻撃)は、Webサービスやネットワークインフラを標的とする代表的なサイバー攻撃です。正規ユーザーがサービスを利用できなくなることで、ビジネスに深刻な損害を与えます。

本記事では、DoS攻撃とDDoS攻撃について以下の内容を解説します。

  • DoS攻撃とDDoS攻撃の定義と根本的な違い
  • 代表的な攻撃手法とOSIレイヤー別の分類
  • 攻撃による影響とビジネスリスク
  • 技術的対策と運用的対策の両面からの防御方法
  • 実際の攻撃事例と最新の脅威動向

この記事を読むことで、DoS攻撃・DDoS攻撃の仕組みを体系的に理解し、適切な対策を講じるための知識を身につけることができます。

前提知識

本記事を理解するために、以下の知識があることを前提としています。

  • TCP/IPプロトコルの基本概念を理解している
  • OSI参照モデルの各レイヤーの役割を把握している
  • ファイアウォールやロードバランサーの基本的な機能を知っている

DoS攻撃とDDoS攻撃の違い

DoS攻撃とDDoS攻撃は、どちらもサービスの可用性を妨害する攻撃ですが、攻撃の規模と手法に大きな違いがあります。

DoS攻撃(Denial of Service攻撃)

DoS攻撃は、単一の攻撃元からターゲットシステムに対して大量のリクエストやパケットを送信し、サービスを利用不能にする攻撃です。

graph LR
    subgraph attacker["攻撃者"]
        A["単一の攻撃元"]
    end
    
    subgraph target["ターゲット"]
        T["Webサーバー"]
    end
    
    A -->|"大量のリクエスト"| T
    T -->|"過負荷"| X["サービス停止"]

DoS攻撃の特徴は以下の通りです。

特徴 説明
攻撃元 単一のIPアドレスまたはシステム
検出難易度 比較的容易(単一ソースのため)
対策難易度 IPブロックなどで対応可能
攻撃規模 限定的(単一システムのリソース制約)

DDoS攻撃(Distributed Denial of Service攻撃)

DDoS攻撃は、多数の分散した攻撃元から同時にターゲットを攻撃する手法です。攻撃者は通常、ボットネット(マルウェアに感染した多数のコンピュータネットワーク)を利用します。

graph LR
    subgraph attacker["攻撃者"]
        C["C&Cサーバー"]
    end
    
    subgraph botnet["ボットネット"]
        B1["感染PC 1"]
        B2["感染PC 2"]
        B3["感染PC 3"]
        B4["感染PC N"]
    end
    
    subgraph target["ターゲット"]
        T["Webサーバー"]
    end
    
    C -->|"攻撃指令"| B1
    C -->|"攻撃指令"| B2
    C -->|"攻撃指令"| B3
    C -->|"攻撃指令"| B4
    
    B1 -->|"攻撃トラフィック"| T
    B2 -->|"攻撃トラフィック"| T
    B3 -->|"攻撃トラフィック"| T
    B4 -->|"攻撃トラフィック"| T

DDoS攻撃の特徴は以下の通りです。

特徴 説明
攻撃元 数千〜数百万の分散したIPアドレス
検出難易度 困難(正規トラフィックとの判別が難しい)
対策難易度 高度な対策が必要
攻撃規模 数Tbpsに達する大規模攻撃も可能

DoS攻撃とDDoS攻撃の比較

比較項目 DoS攻撃 DDoS攻撃
攻撃元の数 1つ 多数(数千〜数百万)
攻撃の規模 小〜中規模 中〜超大規模
IPブロックの有効性 有効 限定的
必要なリソース 少ない ボットネット等が必要
攻撃のコスト 低い 中〜高(ただし攻撃代行サービスも存在)

代表的なDDoS攻撃手法

DDoS攻撃は、OSI参照モデルのどのレイヤーを標的とするかによって分類されます。

OSIレイヤー別の攻撃分類

graph TB
    subgraph app["アプリケーション層攻撃(L7)"]
        A1["HTTP Flood"]
        A2["Slowloris"]
        A3["DNS Query Flood"]
    end
    
    subgraph trans["トランスポート層攻撃(L4)"]
        T1["SYN Flood"]
        T2["ACK Flood"]
        T3["TCP Connection Flood"]
    end
    
    subgraph net["ネットワーク層攻撃(L3)"]
        N1["UDP Flood"]
        N2["ICMP Flood"]
        N3["リフレクション攻撃"]
    end

ネットワーク層(L3)とトランスポート層(L4)の攻撃

インフラストラクチャ層攻撃とも呼ばれ、大量のトラフィックでネットワーク帯域やサーバーリソースを枯渇させます。

SYN Flood攻撃

TCPの3ウェイハンドシェイクを悪用した攻撃です。攻撃者は大量のSYNパケットを送信し、ACKを返さないことで、サーバーのコネクションテーブルを枯渇させます。

sequenceDiagram
    participant A as 攻撃者
    participant S as サーバー
    
    A->>S: SYN(偽装IP)
    S->>A: SYN-ACK
    Note right of S: 接続待ち状態を保持
    A->>S: SYN(偽装IP)
    S->>A: SYN-ACK
    Note right of S: 接続待ち状態が蓄積
    A->>S: SYN(偽装IP)
    S->>A: SYN-ACK
    Note right of S: リソース枯渇

UDP Flood攻撃

大量のUDPパケットをターゲットの様々なポートに送信します。サーバーは到達不能なポートへのパケットを処理しようとし、ICMP Destination Unreachableを返すためにリソースを消費します。

リフレクション攻撃とアンプリフィケーション攻撃

送信元IPアドレスを偽装し、第三者のサーバー(DNSサーバー、NTPサーバーなど)を踏み台にして、ターゲットに大量の応答パケットを送りつける攻撃です。

graph LR
    subgraph attacker["攻撃者"]
        A["攻撃者"]
    end
    
    subgraph reflector["リフレクター"]
        R1["DNSサーバー 1"]
        R2["DNSサーバー 2"]
        R3["NTPサーバー"]
    end
    
    subgraph target["ターゲット"]
        T["被害者サーバー"]
    end
    
    A -->|"偽装リクエスト<br/>送信元IP=被害者"| R1
    A -->|"偽装リクエスト<br/>送信元IP=被害者"| R2
    A -->|"偽装リクエスト<br/>送信元IP=被害者"| R3
    
    R1 -->|"増幅された応答"| T
    R2 -->|"増幅された応答"| T
    R3 -->|"増幅された応答"| T

主なアンプリフィケーション攻撃の増幅率は以下の通りです。

プロトコル 増幅率 説明
DNS 28〜54倍 DNSクエリに対する応答サイズの差を悪用
NTP 556倍 monlistコマンドを悪用
Memcached 51,000倍 キャッシュされたデータを悪用
SSDP 30倍 UPnPプロトコルを悪用

アプリケーション層(L7)の攻撃

アプリケーション層攻撃は、Webアプリケーションの特定の機能やエンドポイントを標的とします。トラフィック量は比較的少なくても、サーバーリソースを効果的に消費させます。

HTTP Flood攻撃

正規のHTTPリクエストを大量に送信する攻撃です。GETリクエストやPOSTリクエストを使用し、特にリソースを消費するページ(検索機能、ログインページなど)を標的にします。

1
2
3
4
5
6
7
# HTTP Flood攻撃のイメージ(教育目的のみ)
# 実際の攻撃への使用は法律で禁止されています

# 攻撃者は以下のようなリクエストを大量に送信
# GET /search?q=very_long_query_string HTTP/1.1
# GET /api/heavy-computation HTTP/1.1
# POST /login HTTP/1.1 (大量のログイン試行)

Slowloris攻撃

HTTPリクエストを非常にゆっくり送信し、サーバーの接続を長時間占有する攻撃です。少ないリソースで効果的にサーバーを麻痺させることができます。

sequenceDiagram
    participant A as 攻撃者
    participant S as サーバー
    
    A->>S: GET / HTTP/1.1
    A->>S: Host: target.com
    Note over A,S: ヘッダーを少しずつ送信
    A->>S: X-Custom: a
    Note right of S: 接続を維持
    A->>S: X-Custom: b
    Note right of S: タイムアウトまで待機
    A->>S: X-Custom: c
    Note right of S: リソース占有継続

DDoS攻撃の影響とリスク

DDoS攻撃は、技術的な影響だけでなく、ビジネス全体に深刻な損害を与えます。

直接的な影響

影響カテゴリ 具体的な影響
サービス停止 Webサイトやアプリケーションへのアクセス不能
パフォーマンス低下 レスポンス時間の大幅な増加
インフラコスト増加 帯域幅やコンピューティングリソースの追加費用
運用負荷 インシデント対応によるIT部門の負担増大

ビジネスへの影響

影響カテゴリ 具体的な影響
売上損失 ECサイトの場合、停止時間に比例した直接的な売上減少
顧客離れ サービス品質低下による顧客満足度の低下
ブランド毀損 セキュリティへの信頼性低下
法的リスク SLA違反や個人情報保護法への抵触

攻撃規模の推移

近年のDDoS攻撃は大規模化・巧妙化が進んでいます。

最大規模の攻撃 特徴
2016 1.2 Tbps(Dyn DNS攻撃) Miraiボットネットによる大規模攻撃
2018 1.7 Tbps(GitHub攻撃) Memcachedアンプリフィケーション
2020 2.5 Tbps(AWS顧客への攻撃) 複合型攻撃
2023 3.5 Tbps以上 HTTP/2 Rapid Reset攻撃
2024-2025 5 Tbps以上 AIを活用した適応型攻撃の出現

DDoS攻撃への対策方法

DDoS攻撃への対策は、技術的対策と運用的対策の両面から実施する必要があります。

技術的対策

ネットワークレベルの対策

graph TB
    subgraph defense["多層防御アーキテクチャ"]
        CDN["CDN / エッジネットワーク"]
        WAF["WAF"]
        LB["ロードバランサー"]
        FW["ファイアウォール"]
        IPS["IPS/IDS"]
        SRV["アプリケーションサーバー"]
    end
    
    INT["インターネット"] --> CDN
    CDN --> WAF
    WAF --> LB
    LB --> FW
    FW --> IPS
    IPS --> SRV

各レイヤーでの対策内容は以下の通りです。

対策レイヤー 具体的な対策
CDN トラフィックの分散、エッジでのキャッシュ、DDoS吸収
WAF L7攻撃のフィルタリング、レートリミット
ロードバランサー トラフィック分散、ヘルスチェック
ファイアウォール IPブラックリスト、ポートフィルタリング
IPS/IDS 攻撃パターンの検出とブロック

レートリミットの実装

アプリケーションレベルでのレートリミットは、L7攻撃への効果的な対策です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Nginxでのレートリミット設定例
http {
    # レートリミットゾーンの定義
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=login_limit:10m rate=1r/s;
    
    server {
        # API エンドポイントへのレートリミット
        location /api/ {
            limit_req zone=api_limit burst=20 nodelay;
            limit_req_status 429;
            
            proxy_pass http://backend;
        }
        
        # ログインページへの厳格なレートリミット
        location /login {
            limit_req zone=login_limit burst=5 nodelay;
            limit_req_status 429;
            
            proxy_pass http://backend;
        }
    }
}

SYN Cookieの有効化

SYN Flood攻撃への対策として、LinuxサーバーでSYN Cookieを有効化します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# SYN Cookieの有効化
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# 永続化設定(/etc/sysctl.conf)
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# 設定の適用
sysctl -p

iptablesによる基本的なDDoS対策

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 無効なパケットのドロップ
iptables -A INPUT -m state --state INVALID -j DROP

# SYN Flood対策
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# ICMP Flood対策
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# 接続数の制限
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j DROP

クラウドベースのDDoS対策サービス

大規模なDDoS攻撃に対しては、クラウドベースのDDoS対策サービスの利用が効果的です。

サービス 特徴
AWS Shield AWSインフラに統合、Standard(無料)とAdvanced(有料)を提供
Cloudflare グローバルエッジネットワーク、無料プランあり
Akamai 大規模なエッジネットワーク、エンタープライズ向け
Azure DDoS Protection Azureに統合、機械学習による検出
Google Cloud Armor GCPに統合、WAF機能も提供

AWS Shieldの設定例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# AWS CloudFormationでのShield Advanced設定例
AWSTemplateFormatVersion: '2010-09-09'
Description: DDoS Protection with AWS Shield Advanced

Resources:
  # CloudFrontディストリビューションの保護
  ShieldProtection:
    Type: AWS::Shield::Protection
    Properties:
      Name: MyCloudFrontProtection
      ResourceArn: !Sub 'arn:aws:cloudfront::${AWS::AccountId}:distribution/${CloudFrontDistribution}'
      
  # Application Load Balancerの保護
  ALBShieldProtection:
    Type: AWS::Shield::Protection
    Properties:
      Name: MyALBProtection
      ResourceArn: !Ref ApplicationLoadBalancer

  # Shield Advancedの自動軽減設定
  ShieldProactiveEngagement:
    Type: AWS::Shield::ProactiveEngagement
    Properties:
      ProactiveEngagementStatus: ENABLED
      EmergencyContactList:
        - EmailAddress: security@example.com
          PhoneNumber: '+81-3-1234-5678'
          ContactNotes: 'Primary security contact'

運用的対策

技術的対策と併せて、運用面での対策も重要です。

インシデント対応計画の策定

graph TB
    subgraph plan["DDoSインシデント対応フロー"]
        D["検出"] --> A["分析"]
        A --> C["分類"]
        C --> M["軽減措置"]
        M --> R["復旧"]
        R --> L["事後分析"]
    end

対応フローの各ステップで実施すべき内容は以下の通りです。

ステップ 実施内容
検出 監視ツールによるアラート、異常トラフィックの検知
分析 攻撃の種類、規模、標的の特定
分類 攻撃の深刻度評価、エスカレーション判断
軽減措置 フィルタリング、レートリミット、CDN活用
復旧 サービス正常化の確認、監視強化
事後分析 根本原因分析、対策の改善

監視とアラートの設定

継続的な監視により、攻撃の早期検出が可能になります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Prometheus + Alertmanagerでの監視設定例
groups:
  - name: ddos_alerts
    rules:
      # リクエストレートの急増検出
      - alert: HighRequestRate
        expr: rate(http_requests_total[5m]) > 10000
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "High request rate detected"
          description: "Request rate is {{ $value }} req/s"

      # 特定IPからの大量リクエスト検出
      - alert: SuspiciousIPActivity
        expr: sum by (remote_addr) (rate(http_requests_total[1m])) > 1000
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Suspicious IP activity detected"
          description: "IP {{ $labels.remote_addr }} is sending {{ $value }} req/s"

      # エラーレートの急増検出
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.5
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "High error rate detected - possible DDoS"

定期的な訓練とテスト

DDoS対策の有効性を確認するため、定期的なテストを実施します。

テスト種類 内容 頻度
負荷テスト 正常な高負荷状態でのシステム挙動確認 四半期ごと
DDoSシミュレーション 制御された環境での攻撃シミュレーション 半年ごと
フェイルオーバーテスト 障害時の切り替え手順確認 四半期ごと
インシデント対応訓練 対応チームの机上訓練 四半期ごと

実際の攻撃事例と最新動向

代表的な攻撃事例

Mirai ボットネット攻撃(2016年)

IoTデバイス(ルーター、カメラなど)をボットネット化し、DNS プロバイダーのDynに対して1.2Tbpsの攻撃を実行しました。Twitter、Netflix、GitHubなど多数のサービスに影響が及びました。

教訓として、以下の点が重要視されるようになりました。

  • IoTデバイスのセキュリティ強化の必要性
  • DNSインフラの冗長化の重要性
  • サプライチェーン全体でのセキュリティ対策

GitHub への Memcached攻撃(2018年)

Memcachedサーバーを悪用したアンプリフィケーション攻撃により、1.7Tbpsの攻撃トラフィックが発生しました。GitHubはDDoS対策サービスを活用し、約10分で攻撃を軽減しました。

HTTP/2 Rapid Reset攻撃(2023年)

HTTP/2プロトコルの脆弱性を悪用した新しい攻撃手法で、従来の対策を回避する高度な攻撃として注目されました。Cloudflare、Google、AWSなどが協調して対策を講じました。

最新の脅威動向(2024-2025年)

現在のDDoS攻撃には以下のような傾向が見られます。

傾向 説明
攻撃の大規模化 5Tbpsを超える攻撃の出現
マルチベクター攻撃 L3/L4とL7を組み合わせた複合攻撃
AI活用 機械学習による攻撃パターンの最適化
DDoS-as-a-Service 攻撃代行サービスの低価格化
IoTボットネットの進化 5G対応デバイスの悪用増加
ランサムDDoS 身代金要求を伴うDDoS攻撃の増加

まとめ

DoS攻撃とDDoS攻撃は、サービスの可用性を脅かす深刻なサイバー攻撃です。効果的な対策には、以下の要素を組み合わせた多層防御が必要です。

対策カテゴリ 具体的な対策
ネットワーク層 ファイアウォール、IPS/IDS、SYN Cookie
アプリケーション層 WAF、レートリミット、CAPTCHA
インフラ CDN、クラウドベースDDoS対策サービス
運用 監視、インシデント対応計画、定期訓練

特に重要なポイントは以下の通りです。

  • 単一の対策に依存せず、多層防御を構築する
  • クラウドベースのDDoS対策サービスを活用する
  • インシデント対応計画を事前に策定し、定期的に訓練する
  • 継続的な監視により、攻撃の早期検出と対応を行う
  • 最新の脅威動向を把握し、対策を更新し続ける

DDoS攻撃は今後も進化を続けるため、セキュリティ対策も継続的に見直しと改善を行うことが重要です。

参考リンク