DNS増幅攻撃の意味
ドメインネームシステム(DNS)増幅攻撃は、分散型サービス妨害(DDoS)攻撃の一種です。この攻撃では、攻撃者が特定のネットワーク、アプリ、サイト、サービスなどへのアクセスを妨げるため、応答を遅延させたり完全に停止させたりすることを目的としています。多くのDDoS攻撃は、ネットワークが処理できる以上のトラフィックを送り込むボリューム型です。これは、六車線の高速道路が、コンサートや試合会場へ向かう多くの車で混雑する状況に似ています。
DNS増幅攻撃は、似た目的を達成するために様々な手法を用います。たとえば、高速道路に大量の車が集まる代わりに、数台の大型トラックが交通を完全に塞ぐようなイメージです。通常のDDoS攻撃が標準サイズのパケットによってネットワークを圧迫するのに対し、DNS増幅攻撃は大きなパケットを活用して同様の効果を狙います。
DNS増幅攻撃では、外部の攻撃者がDNSの通常の動作を利用して、標的に攻撃を仕掛けます。攻撃者の目的は、偽のDNS要求を大量に送り、貴社の帯域を圧迫してサイトを停止させることです。
攻撃の仕組みを理解するには、まずDNSの働きを確認する必要があります。クライアントがブラウザに www.example.com を入力すると、DNSはその要求を受け取り、ドメイン名に対応するIPアドレスを探し出し、ブラウザに返すことで通信が成立します。これにより、クライアントはサイトにアクセスできるようになります。
IPアドレスを取得する流れは、まずクライアントの端末が近くのDNSサーバを確認し、見つからなければ契約しているISPのDNSリゾルバへ問い合わせ、さらに見つからなければインターネット上のDNSリゾルバを次々と辿って行くというものです。企業内では通常、内部向けにDNS要求が処理されますが、インターネット上には誰でも利用できる『オープン』なDNSリゾルバが多数存在し、攻撃者もこれらを利用することで、警告を発することなく偽の問い合わせを大量に送ることが可能になります。
要するに、攻撃者の次の一手は増幅です。通常のDNS要求は数行、数バイト程度と非常に小さいものですが、返される応答はそれよりわずかに大きいに過ぎません。
目的達成のため、攻撃者はDNS要求を工夫し、応答のサイズを大幅に増大させます。例えば、www.example.com のIPアドレスだけでなく、レコードタイプ「ANY」でゾーン全体の情報を要求することで、サブドメイン、ネームサーバ、メールサーバ、エイリアスなどの詳細が含まれる応答を得ることができます。その結果、10バイトのDNS要求が10倍、20倍、あるいはそれ以上に膨れ上がる可能性があります。
この流れの要点は、DNS応答が攻撃対象ではなく攻撃者に返されることです。ここで、UDP(ユーザーデータグラムプロトコル)が攻撃者に便宜を図ります。
インターネット上で毎日膨大な数のDNS要求が送られるため、DNSのやりとりは極めて高速で行われる必要があります。このため、DNSはUDPに依存しています。UDPは、クライアントとサーバ間でメッセージを単に転送するだけで、再送やデータ確認などの余分な処理を行わないため、非常に速いのです。また、コネクションレスであるため、通信の流れを追跡せず、要求内の送信元IPアドレスの正当性を確認しません。
そのため、攻撃者はDNS要求時に送信元IPアドレスを偽装し、被害者のものとして送信します。この手法により、DNSリゾルバからの応答は攻撃者ではなく、被害者のネットワークに送られることになります。DNSリゾルバは、あたかも何の要求もしていない被害者へ応答を返す鏡のような役割を果たします。
別の例えで言えば、偽の求人広告を複数のサイトに掲載し、連絡先に被害者のメールアドレスを記載した場合を考えてみてください。広告管理システムが応募者の情報を確認しなければ、実際に広告を出していない被害者に大量の不要なメールが送られてきます。さらに、応募に対して資格、写真、職歴、推薦状、学歴、その他詳細情報を求めるような『増幅』型のやり取りでは、送られてくるメールの容量は非常に大きくなります。
攻撃を成功させるためには、攻撃者は多数のDNS要求を送り、複数のDNSリゾルバを利用することが多いです。この攻撃のメリットは、攻撃者側のリソースがさほど必要とされず、ボットネットが必ずしも必要ではない点にあります(ただし、使用する可能性はあります)。少ない労力とリソースで、攻撃者は被害者のサイトに大量のトラフィックを送り込み、パフォーマンスを著しく低下させるか、完全に停止させることが可能となります。
ただし、トラックの例えには欠点もあります。一定の大きさを超えると、UDPパケットは分割されずに送信することが難しくなります。つまり、攻撃者が応答を大幅に拡大しても、パケットは小さな断片に分割されます。それでも、被害者のネットワークは分割パケットの処理と再構築を強いられ、負荷がかかる点に変わりはありません。また、この攻撃は攻撃者側にごく僅かなリソースしか必要としません。
DNS増幅攻撃は、偽装された単一のIPアドレスから突然大量のトラフィックが送られてくるため検出は容易ですが、同様の理由で攻撃者の実体を特定することはほぼ不可能です。インターネット上には誰でも利用できるDNSリゾルバが多数存在するため、攻撃者は容易に攻撃を実行でき、実体は秘匿されたままです。このため、DNS増幅攻撃の被害対象は、どのサイトやインターネット対応サービスもなり得ます。
DNSリフレクション攻撃に利用される特定のネームサーバを識別するのは、設定ミスが原因ではないため難しくはありません。しかし、オープンな再帰DNSリゾルバを見つけ出すための公開ツールはいくつか存在します。これらのツールは、貴社のネットワーク全体をスキャンし、脆弱なオープンDNSリゾルバの位置を一覧表示します。
Open DNS Resolver Project
Open DNS Resolver Projectは、公開されているオープンDNSリゾルバとして機能するDNSサーバのリストを提供しています。問い合わせ画面では、ネットワーク管理者がCIDR形式のIPレンジを入力できます。
The Measurement Factory
http://dns.measurement-factory.com
The Measurement Factoryは、Open DNS Resolver Project同様、公開DNSサーバのリストを管理し、管理者がオープン再帰リゾルバを検索できるようにしています。さらに、個々のDNSリゾルバがオープン再帰を許可しているかをチェックする無料ツールも提供しており、設定変更の必要性やその効果を確認するのに役立ちます。最後に、各Autonomous System (AS)ごとに確認された公開リゾルバの数を統計情報として示しています。
DNSInspect
DNSInspectは、DNSリゾルバの脆弱性をテストするための、もう一つの公開オンラインツールです。The Measurement Factoryの個別テスト機能に似ていますが、DNSゾーン全体の設定やセキュリティ上の問題も検査することが可能です。
Pointers
通常の再帰的DNS問い合わせでは、クライアントが近くのDNSサーバにドメイン名や逆引き用のIPアドレスを指定して問い合わせを送信し、DNSサーバが必要な問い合わせを行い応答パケットを返します [6, p.21]。この場合、意図しない応答は考慮されません。しかし、DNS増幅攻撃では、対応する要求のない応答が返される点が特徴です。
DNS増幅攻撃はサービス妨害を引き起こしますが、送信元IPアドレスが正規のDNSリゾルバからのものに見えるため、通常のDDoS攻撃と同様に特定のIPをブロックする方法では防ぎにくいです(オープンリゾルバからの全トラフィックを遮断すると、正当な要求も妨げられる可能性があります)。しかし、企業は対策を講じることでこのような攻撃への防御力を高めることができます。
まず、従業員からIoT端末まで、すべての利用者が社内専用のDNSサーバを利用し、社内からのDNS要求のみを処理するようにすべきです。社内のDNSサーバ外からのトラフィックは、企業ネットワークから出てはなりません。
また、多くの攻撃、例えばDDoS攻撃は、エッジファイアウォールが偽装された送信元IPアドレスを利用したトラフィックを許してしまうことにより可能となります。通常、企業内のPCやプリンター、サーバなどは、内向きのIPアドレスを持ちますが、侵害されたデバイスでは公的なIPアドレスが偽装される可能性があります。不十分なエッジファイアウォールは、このようなトラフィックを検知せずにインターネットへ流してしまうことがあります。企業は、送信トラフィックが社内IPアドレスから発せられるよう管理する必要があります。
企業ネットワークに入るDNS応答は、送信要求を処理するDNSサーバ宛でなければなりません。そうすることで、対象外のDNS応答をブロックできます。DNS対応のファイアウォールを利用すれば、社内DNSサーバから送信された要求への応答のみを許可することができ、全ての応答に対応する要求がなければトラフィックの過負荷を防ぐことが可能です。
さらに、DNS Anycastを利用することで、異なる拠点にDNSトラフィックを分散し、単一サーバへの負荷を軽減するロードバランスが実現できます。
もし受信トラフィックの量が企業ネットワークに過剰な負荷をもたらす場合は、ISPと連携して上流でのトラフィック遮断を行うことが望ましいです。ISPの設定は低コストですが柔軟性に欠けるため、多くの企業は第三者のDDoS保護(スクラビング)サービスを利用し、攻撃が企業ネットワークに到達する前に遮断する対策を採用しています。
残念ながら、この種の攻撃が生む膨大なトラフィックに対して、被害者が大規模なDNS増幅型DDoS攻撃に対抗する手段は限られています。しかし、攻撃者が利用できるサーバ数を減らすことで、防御力を高めることは可能です。
この種の攻撃において、再帰リゾルバの利用を完全に排除する唯一の方法は、誤設定された再帰リゾルバを撤去することですが、これは関係各所による大規模な取り組みが必要となります。Open DNS Resolver Projectによれば、インターネット上の既知のDNSリゾルバ2700万のうち、約2500万が攻撃に悪用されるリスクを抱えています。いずれにしても、こうした攻撃の可能性を低減するための方法はいくつか存在しており、可能な限り設定手順が提供されています。設定情報は、企業ネットワークで広く用いられているBIND9とMicrosoft DNS Server に限定されています。他のDNSサーバを利用している場合は、各ベンダーの文書を参照してください。
攻撃者が送るDNS要求は、被害者のネットワークの送信元アドレスに偽装されています。そのため、DNS増幅攻撃のリスクを下げる第一歩は、ISPが偽装された送信元アドレスのDNSトラフィックを全て破棄することです。Internet Engineering Task ForceのNetwork Working Groupは、2000年5月のBCP38および2004年3月のBCP84において、送信元アドレスがパケットの経路上で到達可能かを評価し、不可能な場合はそのパケットを破棄する方法を示しています。この設定変更は一般的なDDoS攻撃のリスクを大幅に低減します。従って、すべてのネットワーク管理者は、可能な限りネットワーク入口フィルタリングを実施することを強く推奨します。
現在、インターネット上に存在する多くのDNSサーバは、特定のドメインに対してのみ名前解決を行うよう設計されています。これらのシステムでは、クライアント向けの名前解決は別のサーバが担当し、主要サーバは外部クライアントへDNSゾーン情報のみ提供します。この場合、他のドメインの再帰要求に応じる必要がないため、再帰処理は無効に設定すべきです。
企業やISP内で運用されるDNSサーバは、認可されたクライアントからの再帰的な問い合わせにのみ応じるよう設定する必要があります。通常、これらの要求は企業の内部ネットワークからのみ発せられるべきです。すべてのサーバ管理者は、再帰処理の利用を企業内のクライアントに限定することを強く推奨します。
現在、BIND9向けのパッチ群としてベータ機能が提供されており、サーバ管理者は特定のクライアントに対する1秒あたりの応答数を制限することが可能です。この機能は、権威DNSサーバおよび、パフォーマンスに影響はあるものの、再帰リゾルバでも利用可能です。最適なセキュリティのため、権威DNSサーバと再帰リゾルバは別々のシステムで運用し、権威DNSサーバ側にRRLを実装し、再帰リゾルバ側にACLを設定することが推奨されます。これにより、特定の権威DNSサーバから送信されるトラフィック量を削減し、DNS増幅攻撃のリスクを低減できるとともに、内部の再帰リゾルバのパフォーマンスには影響を与えません。
最新情報を購読