ネットワーク

インターネットを支えるDNS
その重要性と危険性を改めて考える

掲載日:2023/04/11

インターネットを支えるDNSその重要性と危険性を改めて考える

DNSはインターネットを利用するうえで非常に重要な役割を果たす仕組みだが、一般のユーザーがDNSを意識する機会は少ない。しかしDNSの仕組みを悪用するサイバー攻撃はたびたび観測されており、多くの管理者を悩ませている。ここではDNSの仕組みと重要性、そしてDNSに潜む危険性について改めて解説する。

DNSの仕組み

「DNS(Domain Name System)」とは、インターネットにアクセスする際、IPアドレスとドメイン名を変換する仕組みだ。

インターネットに接続されている機器には、必ずIPアドレスが割り振られており、この情報を基にデータはやりとりされている。IPアドレスは「192.0.0.1」のような数字で表現されているため、一見しただけではどのIPアドレスがどの機器に割り振られているのか判断するのは困難である。

この問題を解決するのがドメイン名とDNSだ。例えばGoogleであれば「google.com」というドメイン名を組織に割り振ることで、識別しやすい形式となっている。このドメイン名とIPアドレスをひも付けて変換する仕組みがDNSである。

ドメイン名は組織に対して割り振られる名前であるため、ドメイン名の前にサブドメイン名やホスト名を付けて個々のホストを識別する。なお、ホスト名、サブドメイン名、ドメイン名を全て含む文字列を「FQDN(Fully Qualified Domain Name)」と呼ぶ。実際にIPアドレスに対応しているのは、このFQDNである。

DNSサーバーはツリー構造で階層化されており、分散管理されている。その最上位に位置するのが世界に13クラスターしかないDNSルートサーバーで、「.jp」や「.com」などのトップレベルドメインを管理している。

利用者がFQDNに対応するIPアドレスを問い合わせると、トップレベルドメインを管理しているDNSルートサーバーに、セカンドレベルのDNSサーバーを問い合わせ、さらにその下の階層へと再帰的な手順をたどることで最終的にIPアドレスを取得できる。

しかし、このような問い合わせを毎回繰り返すのは効率が悪いため、実際には利用者からの問い合わせはDNSキャッシュサーバーが代理で受け付け、必要に応じて上位DNSサーバーに問い合わせる仕組みになっている。問い合わせ結果はDNSキャッシュサーバーに一定期間保存され、保存期間内に同じ問い合わせを受けた場合、DNSキャッシュサーバーは上位DNSサーバーに問い合わせることなく保存している情報を利用者に返答する。こうして上位のDNSサーバーの負荷を軽減しつつ、応答時間を短縮するのだ。

DNSへのサイバー攻撃

ドメイン名とDNSによってインターネット利用の利便性は急速に高まり、現在ではDNSが正常に動作していなければ業務に必要なサイトにアクセスすることも困難である。だが、DNSへの依存度が高まれば、攻撃者もDNSサーバーを狙うようになるのは必然だ。

キャッシュポイズニング

DNSサーバーに対するサイバー攻撃の多くは、DNSキャッシュサーバーに対して行われる「キャッシュポイズニング」だ。攻撃者はDNSキャッシュサーバーにIPアドレスを問い合わせ、DNSキャッシュサーバーが上位のDNSサーバーに問い合わせを実行するタイミングに合わせ、偽のDNS情報をDNSキャッシュサーバーに送り付ける。この攻撃が成功すると、該当するFQDNを問い合わせた際に偽のIPアドレスが返ってくるようになるため、攻撃者が用意した不正なサーバーにアクセスしてしまう、あるいは該当するホストにアクセスできなくなってしまう。

カミンスキー攻撃

キャッシュポイズニングの手法の一つで、セキュリティ研究者のダン・カミンスキー氏が発表したことでこの名前が付けられた。キャッシュの保存期間を長く設定することで、DNSの問い合わせ頻度を下げることがキャッシュポイズニング対策に有効だとされてきたが、「ドメインは実在するが存在しないホスト名」のFQDNで問い合わせることで、強制的に上位DNSサーバーに問い合わせをさせられてしまう。

ゾーン転送要求による攻撃

負荷分散や冗長化を目的として、同じゾーン(DNSサーバが管理権限を持っているドメインの範囲)の中にドメイン情報を管理するプライマリーDNSサーバーと、その情報のコピーを持つセカンダリーDNSサーバーという2台以上で運用できる。このように、プライマリーDNSサーバーとセカンダリーDNSサーバーの間で、ゾーン情報をコピーすることをゾーン転送と呼ぶ。

セカンダリーからプライマリーに対してゾーン転送要求を送ることで、プライマリーとセカンダリー間でDNS情報を同期する仕組みになっているのだが、これを悪用してゾーン転送要求を外部から送り、不正なDNS情報を送り込むという攻撃も観測されている。ほとんどの場合、プライマリー側にゾーン転送に応じる要求元を同じゾーン内にあるセカンダリーにのみ制限するように設定することで防げる。

DNSを安全に運用するには

DNSサーバーはサイバー攻撃で標的となりやすいが、多くのセキュリティベンダーもこうした実態を把握しており、効果的なセキュリティソリューションも多い。ウイルスや不正侵入からサーバーやネットワークを守るUTM(Unified Threat Management)、あるいは侵入されても攻撃に対処できるEDR(Endpoint Detection and Response)などの多層防御は効果的である。

最近ではDNS応答にデジタル署名を付加するDNSSEC(DNS Security Extensions)によってキャッシュポイズニングを防ぐ、ゾーン転送要求において正しくアクセス制御するなど、DNSを安全に運用するためのソリューションも増えている。

普段、利用者はDNSを意識することはなく、URLをクリックすれば目的のサイトにアクセスできることが当然だと考えている。だが、DNS情報が不正なものに書き換えられてしまえば、全く違う不正なサイトにアクセスさせられてしまうかもしれない。

DNSサーバーの運用は非常に重要な課題ではあるが、人材不足によって多くの企業が情報システム部門やセキュリティ専任担当者を雇用することが困難なのが現状だ。セキュリティ製品やセキュリティマネジメントサービスの利用を検討している顧客に対し、DNSという身近なサービスを起点にセキュリティ運用を提案してみてはいかがだろうか。