Cloudflareこのコンテンツは英語のみでご利用いただけます。私たちは常に日本語でより多くのコンテンツを提供するために取り組んでいます。お待ちいただいてありがとうございます。GitHubでサンプルをクローンEnterprise向け料金設定DDoS攻撃対策ホットラインお客様のプライバシーは私たちにとって重要です。ありがとうございましたCloudflareの担当者がご連絡いたします。SalesSupport1-888-993-5273SYNフラッド攻撃SYNフラッドはTCP/IPのハンドシェイクにある脆弱性を悪用し、Webサービスを破壊しようとします。有名なDDoS攻撃SYNフラッド学習目的この記事を読み終えると、以下のことができます。関連コンテンツDNSフラッドHTTPフラッドUDPフラッド攻撃マルウェアPing(ICMP)フラッド攻撃SYNフラッド攻撃とはSYNフラッド(ハーフオープン攻撃)は、利用可能なサーバーリソースをすべて消費することで正当トラフィックがサーバーを利用できないようにするサービス妨害(DDoS)攻撃の一種です。初回接続要求(SYN)パケットを繰り返し送信することで攻撃者はターゲットのサーバーマシンにある利用可能な全ポートを制圧し、ターゲットのデバイスの正当トラフィックへの応答が遅くなったり応答できなくなったりすることとなります。SYNフラッド攻撃の仕組みとは?SYNフラッド攻撃はTCP接続におけるハンドシェイクプロセスを悪用することで動作します。通常状態では、TCP接続は接続を確立するために3つのプロセスを実行します。接続を開始するためクライアントがSYNパケットをサーバーに送信します。その後、通信を認識するために、初回パケットにSYN/ACKパケットでサーバーが応答します。最後に、サーバーからのパケットを受信したことを知らせるため、クライアントがACKパケットを返します。パケットの送受信シーケンスが完了したら、TCP接続が開いてデータの送受信が可能になります。サービス妨害を作成するため、攻撃者は初回のSYNパケット受信後にサーバーが1つ以上のSYN/ACKパケットで応答を返し、ハンドシェイクの最終ステップを待機するという事実を悪用します。下記はその仕組みです。多くの場合なりすましのIPアドレスを利用して、攻撃者が大量のSYNパケットをターゲットのサーバーに送信します。サーバーが各接続リクエストに応答し、応答を受け取れるようポートを開いた状態にします。サーバーが到着することのない最後のACKパケットを待機する一方で、攻撃者はより多くのSYNパケットを送り続けます。新たなSYNパケットが届くとサーバーは一時的に一定時間新たにポート接続を開いておくことになり、利用可能なポートがすべて利用されるとサーバーは通常の動作ができなくなります。ネットワーク上、サーバーは接続を開始しましたが接続のもう一方であるマシンは開始していないため、この接続はハーフオープン状態と考えられます。この種のDDoS攻撃では、ターゲットのサーバーが開いている接続を継続的に残し、ポートが再び使用可能になる前に各接続がタイムアウトするのを待機します。そのため、このような攻撃は「ハーフオープン攻撃」とみなされます。SYNフラッドは3つの方法で発生します。IPアドレスが偽装されていないSYNフラッドのことを直接攻撃と呼びます。この攻撃では攻撃者はそのIPアドレスを全くマスキングしません。攻撃作成に実際のIPアドレスで単一のソースデバイスを利用した結果、攻撃者は検出や対策に対して非常に脆弱です。ターゲットのマシンでハーフオープン状態を作り出すため、ハッカーは自分のマシンがサーバーのSYN/ACKパケットに応答しないようにします。これはSYNパケット以外の発信パケットを止めるファイアウォールのルールや、悪意のあるユーザーのマシンに到達する前にSYN/ACKパケットの受信を除外することで実現されることが多くあります。対策が非常に容易(各悪意のあるシステムのIPアドレスをブロックするだけ)であるため、実際にこの方法が用いられることは(皆無ではないにせよ)めったにありません。攻撃者がMiraiボットネットなどのボットネットを利用している場合、感染デバイスのIPをマスキングすることには気を使いません。悪意のあるユーザーは、対策を回避して自分のIDの検出をより困難にするため、送信する各SYNパケットのIPアドレスを偽装することもあります。パケットは偽装できますが、潜在的にソースまで追跡することもできます。この種の検出作業は難しいものでえすが、特にインターネットサービスプロバイダー(ISP)がサポートしてくれる場合は不可能ではありません。ボットネットを利用した攻撃の場合、攻撃の発生源を追跡できる可能性は低くなります。難読化のレベルを高めるため、攻撃者が各分散デバイスにパケットを送信するIPアドレスを偽装させることもあります。攻撃者がMiraiボットネットなどのボットネットを利用している場合、感染デバイスのIPをマスキングすることには気を使いません。SYNフラッド攻撃を用いることで、悪者は他のDDoS攻撃と比較してかなり少量のトラフィックでターゲットのデバイスやサービスにサービス妨害を仕掛けることができます。ターゲットの周辺にあるネットワークインフラストラクチャを飽和させる帯域幅消費型攻撃の代わりに、SYN攻撃が必要とするのはターゲットのOSの利用可能なバックログよりも大きいということだけです。攻撃者がバックログのサイズや各接続がタイムアウトまでどれだけ長く開かれたままであるかを判断することができれば、システムを利用不可にするために必要な正確なパラメーターを狙うことができ、サービス妨害の作成に必要な合計トラフィックを最小限に抑えられます。SYNフラッド攻撃の対策とは?SYNフラッドの脆弱性は長い間知られており、多くの緩和経路が利用されています。以下は一部のアプローチです。バックログキューの増加ターゲットデバイスの各オペレーティングシステムには許容できる一定数のハーフオープン接続があります。大量のSYNパケットへの対応の1つは、OSが許容するハーフオープン接続の数を最大化することです。最大バックログ数を正常に増やすためには、システムはすべての新規リクエストを処理するためのさらなるメモリリソースを予約しなければなりません。システムに増加したバックログキューサイズを処理するだけの容量がない場合はシステムパフォーマンスにネガティブな影響がありますが、サービス妨害を受けるよりは良いでしょう。別の緩和策として、バックログが埋まったら最も古いハーフオープン接続を上書きするというものがあります。この方法では、悪意のあるSYNパケットでバックログが満たされるよりも短い時間で正当な接続が確立される必要があります。攻撃規模が大きくなったり、バックログサイズが小さすぎたりするとこの防御は失敗します。cookiesこの方法はサーバーでクッキーを作成するものです。バックログが満たされた場合に接続を中断するリスクを回避するため、サーバーは各接続リクエストにSYN/ACKパケットで応答しますがその後でSYNリクエストをバックログから削除します。メモリからリクエストを削除してポートを開いたままにし、新たな接続の準備をします。接続が正当なリクエストの場合、最後のACKパケットがクライアントマシンからサーバーへ送信され、サーバーはSYNバックログキューのエントリーを(制限付きで)再構築します。この対策ではTCP接続に関する一部の情報が失われますが、攻撃の結果として正当なユーザーにサービス妨害が起こるよりは良いでしょう。CloudflareのSYNフラッド攻撃対策とは?Cloudflareは、ターゲットとなるサーバーとSYNフラッドの間に立つことでこの種の攻撃を一部軽減しています。初回のSYNリクエストが作成されると、Cloudflareがクラウド内でハンドシェイクプロセスを処理し、TCPハンドシェイクが完了するまでターゲットのサーバーとの接続を保留します。Networkに配置します。CloudflareのDDoS対策について詳しくご確認ください。