セールスセンター2022.05.10
大量発生で厄介な「フラッディング攻撃」の仕組みと対策について解説!
近年、サイバー攻撃において最も多い攻撃が、サーバーに負荷をかけるDoS攻撃(Denial of Service attack)と呼ばれるものです。攻撃ツールとして特別なプログラムなどが不要なため誰でも簡単にできてしまう攻撃で、不要なデータを洪水のように大量に送りつけることから、一般的に「フラッディング攻撃」と呼ばれています。
フラッディング攻撃においては、私たちも意識していないところで、攻撃者になる可能性があります。そうならないために、フラッディングの仕組みや、どのように攻撃として仕掛けられるのかを理解しておきましょう。
今回は、とある企業のIT部門に所属するセキュリティに精通した中山部長(44歳)と新人セキュリティ担当の石塚さん(24歳)の会話から、フラッディングについて学んでいきましょう。
1. フラッディングとは?
あれれ、業務でアクセスしなくちゃいけないWebサイトにつながらないな~。どうしちゃったのかしら。
どうやらアクセスが集中しているみたいだね。クライアントからのリクエストをWebサイトが処理しきれていないんだ。
つながらないと仕事にならない~!あ、そうだ!ページ更新してみよう。カタカタカタ…。(F5キー連打)
あ、石塚さん、ちょっと待った! 実はそのF5キーの連打もサイバー攻撃の一種なんだ。
え! そうなんですか!? 私、逮捕されちゃうんですか?
もちろん程度にもよるけどね。(笑)
フラッディングとは
フラッディング(flooding)は「洪水」を意味する言葉です。ネットワーク機器の処理能力を超えるデータ量が発生し、ネットワークシステムの動作に支障が出る状態のことをフラッディングと呼びます。
たとえば、LANケーブルをつないだばかりのネットワーク機器は、宛先の機械情報を学習していないため、すべてのポートからすべての宛先にデータを転送します。その結果、仕様動作の範囲内であったとしても、フラッディングが起こることがあるのです。
フラッディングしたデータは転送されることなく破棄されるため、通信は途切れてしまいます。このような事象は偶発的にも発生しますが、第三者によって意図的に引き起こされた場合は「フラッディング攻撃」となります。
フラッディング攻撃とは
フラッディングの仕組みを意図的に悪用し、許容量を超える大量のデータを送り付け、機能不全に陥れる行為をフラッディング攻撃と呼びます。フラッディング攻撃は、高い負荷を与える事でサービスを妨害するDoS攻撃(Denial of Service Attack)に分類される攻撃です。特に金融、行政、市区町村サービスなど公開されたサービスは、常態的にフラッディング攻撃の標的となるため、十分な対策が必要です。
フラッディング攻撃の特徴としては、一見すると正常なリクエストであるという点が挙げられます。たとえば、Webサイトの表示を更新させるファンクションキーであるF5を用いた「F5攻撃」や「リロード攻撃」と呼ばれるものがその例です。
一般的によく利用されるファンクションキーであるため、正常なリクエストか悪意のある負荷攻撃かの判別が難しいといわれています。
小さなデータでも大量に送り付ければ、「攻撃」になってしまう。このようなフラッディング攻撃は、高度なマルウェアを仕込むよりも比較的簡単に実行できる攻撃手法です。
ではフラッディング攻撃の種類や仕組みについて、さらに詳しく見ていこう。
2. フラッディング攻撃の種類と仕組みについて
F5キーのリロードも度合いによっては立派なサイバー攻撃になることがあるんですね…。
フラッディング攻撃と正常なリクエストを見分けるのは難しいんだよ。だから多くの場合で、一定量を超過した送信元のクライアントからの通信を予防処置的に遮断する、というのが一般的な対策なんだ。
出禁みたいなものですね…。気をつけます。
まぁ、個人が行うレベルでは大したことはないから、基本的には大丈夫だけど、近年インターネット空間にはこのような沢山のパケットがあふれかえっているんだ。
明らかに悪意のあるパケットの見分け方ってあるんですか?
フラッディングにも実は種類があるんだよ。完全に見分けるのは難しいけど、その傾向を捉えることは可能だよ。
フラッディング攻撃の種類
フラッディング攻撃には「SYNフラッド攻撃」「UDPフラッド攻撃」「ICMPフラッド攻撃」など、プロトコルの特性に応じた手法が存在します。
SYNフラッド攻撃
インターネット通信の原則として、サーバーとクライアント間で、要求(SYN:Synchronize)と応答(ACK:Acknowledge)が存在します。
正常な通信であれば要求のあと、応答を待って通信を開始します。一方SYNフラッド攻撃の場合は、応答を待つことなく一方的に要求パケットを送り続け、応答待ち状態にすることでオーバーロードさせます。前出のF5リロードもこの仕組みです。
UDPフラッド攻撃
UDPフラッド攻撃は、このUDPパケットでサーバーに対し一方的に要求パケットを送り付け、オーバーロードさせる攻撃です。UDP(User Datagram Protocol)は、ステートレスという特徴を持っており、最近では流行の動画配信やWeb会議システムなどリアルタイム性が求められるサービスで利用されるパケットです。
ICMPフラッド攻撃
ICMP(Internet Control Message Protocol)は、インターネット通信における通信状態の確認プロトコルです。大量のICMPパケットを短い間隔で一方的に送り付け、オーバーロードさせる攻撃です。
また、確認用のパケットであるICMPは小さいサイズで送ることが決められていますが、意図的にパケットサイズを大きくすることで、受信するときの処理、分割するときの処理でオーバーロードさせるPoD(Ping of Death)攻撃も存在します。
このように、フラッディング攻撃にはさまざまな種類があるんだ。パケットの種類は専門的な範囲だから理解するのは難しいけど、どれも目的は大量に送り付けて処理機能をオーバーロードさせることだと捉えておけばOKだよ!
3. フラッディング攻撃の対策について
パケットの特性によってさまざまな種類のフラッディングがあるのですね。
種類は多いけど、要するに「サービスを妨害すること」が目的なんだ。そのために、攻撃対象がどういうサービスを提供しているのかをフラッディングと近しいメソッドで偵察しているんだよ。
うわぁ~徹底した仕事ぶり…なんだか怖いですね。偵察でどこまでわかってしまうのでしょうか?
たとえば、すべてのサービスポートに対してUDPパケットを送って、反応があれば提供している、反応が無ければ提供していない、ということがわかる。それから、Webサイトなら簡易的なアクセスで利用しているOSやアプリケーションもわかってしまうこともあるよ。サーバーが提供しているサービスとOS、アプリケーションのバージョンがわかれば、高い確率でその脆弱性をついたフラッド攻撃が実行されてしまうんだ。
偵察パケットを含めたフラッディング攻撃か…。小さいパケットのわりに厄介ですね。防ぎようはあるのでしょうか?
ほかのセキュリティ対策と同様に、これをやれば大丈夫という万能な策はないんだ。開発段階から考慮すること、運用で継続的に取り組むことが大切だよ。
フラッディング対策の前提
フラッディング対策は、正常な通信に対してもネックとなってしまう可能性があります。SYNやUDP、ICMPなど、フラッディングに使われるパケットは通常の通信でも一定量発生するためです。そのため、極端な対策が困難な攻撃といえます。
ここでは、偵察パケットも含めたおもな対策について見ていきましょう。
アプリケーションをチューニングする
フラッド攻撃は、Webサーバーのように公開系のシステムが対象になることが多い攻撃です。そのため、アプリケーション側でセッション数や応答に関する制約を設定し、パフォーマンスに応じて適度に設定を見直す必要があります。また、OSやアプリケーションのアップデートを定期的に行い、常に最新の状態で運用することも重要です。
サーバーの可用性・処理能力の向上を検討する
近年ではクラウドサービスの普及により比較的柔軟にスケールアウト環境の構築が可能となりました。予算にもよりますが、アクセス数に応じて処理するサーバーの台数を自動的にスケーリングするなどの対策が有効です。
外部からの接続をファイアウォールで監視・チューニングして制御する
近年のファイアウォールは、次世代型と呼ばれるものが主流です。一定のパケット量を超過した場合に、自動的に特定の送信者を遮断したり、不正なパケットを検出したり、ポートスキャンのような偵察パケットや怪しいトラフィックの振る舞いを監視したりできる機能もあります。
公開系のサービスの場合は、極端に制御しすぎるとサービス自体の運営に支障をきたす可能性もあるため、状況に応じて適宜チューニングしていくとよいでしょう。
フラッディング攻撃の対策は基本的にはチューニングです。パケットの中身よりもトラフィック全体の通信量とシステムの状態を監視し、常に最適化のための運用を意識しましょう!
4. まとめ
フラッディングとは、処理する許容量を超えることで生じる事象のことで、この仕組みを意図的に引き起こすフラッディング攻撃にはさまざまな種類があります。
フラッディング攻撃対策は正常な通信にも影響を与えかねないため、状況に応じた最適化処理(チューニング)が必要です。