DDoS攻撃の基礎からその対策方法、トレンドなどをひも解く本連載。前回は、ネットワーク帯域レイヤーに対するDDoS攻撃の対策方法を紹介しました。今回は、DNSを中心としたインフラレイヤーを対象とする攻撃とその対策について解説します。

インフラレイヤーへのDDoS攻撃とは

第4回でも解説したように、インフラレイヤーへの攻撃は、DNSやCGNATなどインフラを支える基盤に対して行われます。

特にDNSは攻撃者にとって恰好の攻撃対象です。DNSを攻撃することで、インターネットサービスを活用する上で必要となるドメイン名からIPアドレスの解決ができなくなり、多くのユーザーがWeb閲覧やメール配信などを行えなくなります。

第2回にアップストリームプロバイダーを狙ったDDoS攻撃の事例として、Dyn社への攻撃を紹介しましたが、この攻撃対象はDNSでした。

Dyn社は主要事業としてDNSサーバのホスティングサービスを提供しており、TwitterやFacebook、Netflixなど多くの有名なWebサービスで利用されています。このDyn社のDNSサーバ機能が停止し、名前解決ができなくなったことで、多くのWebサービスにアクセスできなくなりました。

DNSへの攻撃は、Webサイトをダウンさせなくてもユーザーによるアクセスを止められるため、間接的なDDoS攻撃が行えます。そのため攻撃者にとっては、標的のサーバがドメイン名でアクセスするサービスであれば、DNSを狙うことは有効な手段になります。

DNS水攻め攻撃(ランダムDNSクエリー攻撃)

代表的なDNSへの攻撃に、DNS水攻め攻撃(ランダムDNSクエリー攻撃)があります。DNS水攻め攻撃は、大量のDNSクエリー(問い合わせ)を権威DNSに送ることで、権威DNSのリソースを枯渇させ、DNSを不能にさせる攻撃です。

通常、クライアント端末からDNSへの問い合わせは、組織内またはプロバイダなどが提供するキャッシュDNSサーバへ、再帰的に問い合わせをします(詳細な仕組みは第7回の記事を参照ください)。問い合わせの結果は、DNS内のレコードで設定されているTTL値の期間内でキャッシュされます。期間が過ぎるとDNSは再び再帰的に問い合わせを行い、その結果をキャッシュします。

このキャッシュ機能により、権威DNSサーバへの問い合わせを抑え、権威DNSサーバやキャッシュDNSサーバのリソースを効率よく活用できます。

DNS水攻め攻撃では、キャッシュにヒットしないユニークなFQDN(Fully Qualified Domain Name)に対するDNSクエリーを配信することで権威サーバへ到達する問い合わせを発生させ、DNSサーバのリソースを枯渇させます。

例えば、1.expample.com, 2.exmpale.com .... 100000.expmple.com(実際は数値や文字が混ざったランダムな名前を生成します)のような、一度も問い合わせされていないキャッシュDNSではヒットしないユニークなドメインを大量に問い合わせた場合、example.comを管理する権威DNSサーバにリクエストが殺到します。このようなリクエストをウイルスに感染してコントロール下にあるボット(端末群)から大量に送信するのです。

  • DNS水攻め攻撃イメージ図

権威DNSのDDoS攻撃対策

それでは、インフラ側はこのようなDDoS攻撃に対してどのような対策をとればよいのでしょうか。

単純に考えるならば、権威DNSのリソースを増やしたり、権威DNSサーバを複数配置して分散させたりすることも対策の1つとして考えられますが、大規模な攻撃を防ぐには多くの費用がかかります。そこで、効率よくリソースの枯渇を防ぐ場合は、DDoS緩和装置を権威DNSの手前に配置して不正なリクエストを識別し、悪性の通信を洗浄(スクラブ)することが必要になります。

例えば、ユニークなFQDNのDNSクエリー数をソースIP単位でトラッキングして、閾値を超えた場合にDNSのクエリーの正当性をチェックする対策方法があります。一例としてTruncated Bit(DNSに収まりきれない大きさであることを示すビット)を含めたレスポンスで返してTCPでDNSリクエストが再送されるかなどで確認することができます。

正規のDNSクライアントであれば、Truncated Bitを含めたレスポンスを返すと、UDPで送信してきたDNSクエリーをTCPで再送するというプロトコルの特徴を活用して、DNS認証として正当なDNSクライアントかどうかを識別することができます。

また、送信元IP(キャッシュDNSサーバ)と特定のドメインへのクエリーを一定時間受け付けないようにし、影響度の高い送信元と標的とされているドメイン間の通信に絞って洗浄することでリソース枯渇を防ぐ方法もあります。そのほか、下図のように正規のクエリーだけを通過させるため、さまざまな観点から洗浄することで、正規のクエリーのみ許可することができます。

キャッシュDNS側の対策

キャッシュDNS側の対策で一番重要なことは、そのDNSサーバが踏み台にならないように、特定の端末だけがアクセスできるように制限をかけることです。また、アクセスが許可された端末でも、ウイルスに感染してボットとして攻撃に加担することもあります。そのため、ランダムに発生させるユニークなクエリーが異常に発生している場合は、送信元を特定し制限をかける必要があります。

キャッシュDNSを管理する組織は、キャッシュDNSのリソースを保護するためにも、不審なクエリーや攻撃と見られるDNSパケットが送信されていないか監視することが求められます。

DDoS攻撃は大容量のトラフィック攻撃だけではない

今回はDNSを標的とするDDoS攻撃を紹介しましたが、アプリケーションレイヤーのリソースを枯渇させる攻撃としてボリューム型の攻撃とは異なる対策が必要です。同様に、Webサーバに対してもWebサーバのリソースを枯渇させるDDoS攻撃が多く発生しているため、リソースを保護する対策が必要です。

「DDoS攻撃 = 大容量の攻撃トラフィック」としてよく認識されますが、通信の総容量が大きくなくても、アプリケーションへの接続を大量に発生させることで、システムのリソースを枯渇させることは簡単にできてしまいます。そのため、キャリアのバックボーンで行うDDoS対策だけではなく、サーバの手前でアプリケーションレイヤーに流れるパケットの悪性を識別してリソースを保護することも、DDoS対策として重要であることを認識いただきたいです。

四柳 勝利(よつやなぎかつとし)


A10ネットワークス株式会社 ビジネス開発本部 ビジネスソリューション開発部 セキュリティビジネスディベロップメント&アライアンスビジネスマネージャ
公認情報システム監査人(CISA)、Certfied Information System Security Professional (CISSP)、GIAC Certifed Intrusion Analyst (GCIA)

セキュリティーベンダーのプリンシパルアーキテクト、コンサルティングファームのシニアマネージャを経て、2016年よりA10ネットワークスのセキュリティビジネスの責任者に着任。イベントでの講演、書籍や寄稿記事の執筆などセキュリティの啓発活動にも従事。