プライベートDNS: チュートリアル、ベストプラクティス、実例
プライベートDNSで確保する企業内ネットワークの安全性とパフォーマンス
2023年10月24日
翻訳: 竹洞 陽一郎
この記事は米Catchpoint Systems社のチュートリアル記事 "Private DNS: Tutorial, Best Practices & Examples"の翻訳です。
Spelldataは、Catchpointの日本代理店です。
この記事は、Catchpoint Systemsの許可を得て、翻訳しています。
ほとんどのエンジニアは、DNSを設定する際の慣習とベストプラクティスに精通しています。
しかし、プライベートDNSを使用する際に可能な多くの改善には、すべての人が気づいているわけではありません。
プライベートDNSは、内部リソース名を解決するために使用されるレコードをプライベート(公開DNSによって解決できない)に保持する別の方法です。
組織のDNSレコードの使用における追加の柔軟性、高度なセキュリティ機能、そして利用可能な幅広い設定が、シンプルで複雑なトポロジーの両方に非常に魅力的です。
以下の記事は、プライベートDNSがどのように機能するかについての詳細な説明であり、プライベートDNSを成功裏に実装するためのアーキテクチャとベストプラクティスの例を含んでいます。
プライベートDNSのキーコンセプトのまとめ
この記事で取り上げる内容を簡単にまとめました。
プライベートDNSの仕組み | プライベートDNSは、公開DNSとまったく同じように、一連の問い合わせとレスポンスを使用して動作します。 主な違いは、レコードがどのように維持され、配布されるかに関連しています。 |
---|---|
プライベートDNSのアーキテクチャ | プライベートDNSのアーキテクチャの例には、専用、スプリットホライズン、DNSフォワーディング、SDN(ソフトウェア定義ネットワーク)、およびクラウドベースのDNSが含まれます。 |
DNS over TLS(DoT) | プライベートDNSは、改善されたセキュリティ、より良いパフォーマンス、および強化されたプライバシーを提供します。 |
プライベートDNSの実装 | 環境にプライベートDNSアーキテクチャを追加するには、アーキテクチャの選択、テスト、適切な監視、およびセキュリティとプライバシーのベストプラクティスを活用するなど、徹底的な計画プロセスが必要です。 |
IPv6でのプライベートDNS | プライベートDNSは、IPv4とIPv6の両方でほぼ同じように動作しますが、IPv6ではいくつかの追加的な考慮事項を考慮する必要があります。 |
プライベートDNSの仕組み
プライベートDNSは、内部ネットワーク内でカスタムDNS名前空間を作成する方法です。
これにより、組織は自分自身のドメイン名を開発し、それらを内部ネットワーク上のデバイスで解決できるようになり、公開DNSサーバを使用する必要がありません。
以下がプライベートDNSの仕組みです。
- 組織は、プライベートネットワーク内にプライベートDNSサーバを設定します。
このDNSサーバは、組織のカスタムドメイン名に対する権威あるDNSサーバとして機能します。 - 内部ネットワーク内のデバイスにIPアドレスが割り当てられます。
- 組織はカスタムドメイン名を作成し、それらをそのデバイスのIPアドレスと関連付けます。
- IPアドレスとカスタムドメイン名に関する情報は、プライベートDNSサーバのゾーンファイルに保存されます。
- プライベートネットワーク上のデバイスが別のデバイスにそのカスタムドメイン名でアクセスする必要がある場合、そのデバイスはプライベートDNSサーバに問い合わせを行います。
- プライベートDNSサーバは、そのゾーンファイル内でドメイン名に関連付けられたIPアドレスを調べ、そのIPアドレスを要求しているデバイスに返します。
- 要求しているデバイスは、そのIPアドレスを使用してプライベートネットワーク上の目的のデバイスと接続を確立できます。
プライベートDNSの利点
改善されたセキュリティと制御
公開DNSサーバはインターネット上の誰でもアクセス可能であり、攻撃に対して脆弱です。
プライベートDNSサーバをホスティングすることで、組織はDNS攻撃などの外部からの脅威に対するリスクを限定することができます。
プライベートDNSを使用することで、組織は自分たちのDNSレコードに完全な制御を持つことができ、独自のサブドメインを管理したりアクセス制御を設定したりすることができます。
これにより、トラフィックをリダイレクトするかフィッシング攻撃を仕掛ける目的でDNSレコードに無許可でアクセスしたり変更したりすることを防ぐことができます。
この機能により、組織は自分たちのネットワーク内でDNSの問い合わせとレスポンスを保持することができ、それを公開DNSサーバに送信する必要がなくなります。
これにより、第三者のDNSプロバイダと共有するデータの量が減少し、プライバシーが強化されます。
最後に、プライベートDNSにより、特定のドメインやトラフィックの種類をブロックするなど、組織自身のセキュリティポリシーを実施することも可能です。
これにより、マルウェアの感染やその他のセキュリティ問題を防ぐ手助けとなります。
より良いパフォーマンス
プライベートDNSはいくつかの方法でパフォーマンスを向上させることができます。
公開DNSサーバは特にトラフィックが多い時間帯にはDNS問い合わせに対する応答が遅くなることがあります。
組織のネットワーク内にプライベートDNSサーバをホスティングすることで、ほとんどのクライアントはローカルネットワーク経由でサーバに直接接続できるため、DNSエントリを非常に迅速に解決することができます。これにより、レスポンスタイムが速くなり、タイムアウトや接続エラーの可能性が減少します。
プライベートDNSサーバは、ユーザを地理的に近いサーバに誘導するか、複数のサーバ間でトラフィックをバランスすることでトラフィックのルーティングを最適化することができます。
プライベートDNSにはアドホックなカスタマイズの機能も追加され、これは公開DNSサーバではオプションとしてはありません。
これにより、ネットワークの遅延を減らし、レスポンスタイムを向上させることで、アプリケーションやサービスのパフォーマンスが向上します。
プライバシー
名前に「プライベート」という言葉が含まれている通り、プライベートDNSはそれを使用する組織内でのプライバシーを強化する手助けとなります。
以下がその方法です。
一般的なDNS問い合わせは、インターネット上で送信されるネットワークトラフィックを監視する潜在的な攻撃者に対してマップを描くことができます。
頻繁に訪れるWebサイトの傾向を検出したり、DNSレコードがどのくらいの頻度で変更されるかを追跡したりすることができます。
同様に、DNSスクレイピングツールは攻撃者が任意のドメインに関する非常に有用な情報を特定するために使用されることがあります。
- サブドメイン
- ゾーン転送の脆弱性
- メールサーバのリスト
- メールアドレス
- テクノロジースタック
- DNS問い合わせとレスポンスを組織自身のネットワーク内で保持することで、第三者のDNSプロバイダと共有するデータ量が減少し、プライバシーが強化されます。
さらに、プライベートDNSにより、組織は自分たちのDNSデータに対してより大きな制御を持つことができます。
自分たちのDNSサーバとDNSレコードを管理し、アクセス制御を設定し、セキュリティポリシーをカスタマイズすることができます。
この機能によって、DNSレコードへの不正アクセスや不正な変更を防ぐことができます。
これらのいずれも、トラフィックをリダイレクトするためやフィッシング攻撃を行うために悪用される可能性があります。
プライベートDNSアーキテクチャ
業界で使用されているプライベートDNSのセットアップはいくつかあり、その設定や使用するハードウェアとソフトウェアのコンポーネントに違いがあります。
このセクションでは、3つの異なるアーキテクチャについて説明します。
また、後の記事のベストプラクティスセクションでアーキテクチャの選定についての議論も参照してください。
スプリットホライズンDNSサーバ
このアーキテクチャでは、同じDNSサーバが公開用とプライベート用のDNSゾーンの両方を管理します。
このサーバは、公共のインターネットからの公開ドメインに対する要求に応じる一方で、組織の内部ネットワーク内のデバイスからのプライベートドメインに対する要求にも応じます。
クラウドベースのDNS
このアーキテクチャでは、クラウドベースのDNS SaaS(Software as a Service)製品を使用して、組織のネットワークのドメイン名解決プロセスを管理します。
このサービスは、組織の内部ネットワークのプライベートDNS解決を提供するとともに、外部からのリクエストに対する公開DNS解決も提供するように設定することができます。
ただし、インフラストラクチャとセキュリティの責任はドメイン所有者ではなく、クラウドプロバイダにあるため、全く異なる一連の問題が生じる可能性があります。
ソフトウェア定義ネットワークを持つプライベートDNS
このアーキテクチャでは、プライベートDNS解決が、ネットワーク仮想化やその他の高度な機能を提供するソフトウェア定義ネットワーク(SDN)に統合されています。
プライベートDNS解決は、SDN内に展開された仮想DNSサーバを使用して実装することができます。
こうする利点としては、DNSインフラストラクチャをソフトウェアプラットフォームから管理できるようになる点です。
これはクラウドベースのDNSと似ていますが、こちらではドメイン所有者がセキュリティとインフラストラクチャの責任を全面的に負います。
プライベートDNSの実装とベストプラクティス
以下のアクションは、プライベートDNSの実装を支援し、それを効果的に使用するための最良の可能性を提供するのに役立ちます。
慎重に計画する
DNSの展開を設計する際には、以下の点を考慮に入れることが重要です。
Windowsサーバ環境では、DNSはドメインコントローラ(DC)で稼働しているべきです。
一般的に、DCはペアで展開され、多くの組織が冗長性のために少なくとも1台の物理サーバと任意の数の仮想サーバを作成することを選びます。
選ばれるソフトウェアは、計画プロセスの最も重要な部分になります。
Windowsの標準DNS機能は、設定が最も簡単であり、理論的には設定の際のミスの機会が少なくなるでしょう。
Windows DNSはWindows Active Directoryと統合し、ネットワーク上で稼働しているサービスのデータベースを作成します。
もしWindowsを通じた標準的なDNSサービスが使用されていない、そしてBind 9のような代替手段が実装される場合、Linuxサーバが必要です。
仮想化に関しては、この機会にDockerコンテナを環境で使用するケースを探究する良い機会でもあります。
適切なアーキテクチャを選ぶ
先に説明したDNSアーキテクチャそれぞれは多様なユースケースを持っているため、組織全体を見て要件を評価することが重要です。
一般的に、選ばれるアーキテクチャはクライアントとロケーションの成長の両方を可能にすべきです。
例えば、組織が現在1つの物理的な場所から運営されており、100~200程度のクライアントを持っているが、ほとんどのアプリケーションは内部でホストされている場合、スプリットホライズンDNSは優れた選択肢です。
これは、クライアントがどこに位置しているかに応じて、ローカルドメイン名と公開ドメインを異なる場所に解決する多様性を提供します。
例えば、組織内のクライアントがwww.example.comにアクセスすると、ローカルネットワーク外で同じURLを解決しようとするユーザとは異なるWebサーバのIPに誘導されるかもしれません。
組織が複数の場所、あるいは大陸にまたがって展開されている場合、クラウドベースまたはSDNベースのDNSサーバを実装することが好ましいかもしれません。
クラウドベースのDNSの場合、他の場所に近い異なる地域に追加の仮想サーバを移動または追加する機会があり、それでいてプライベート/公開DNSの柔軟性を活かしながら遅延を削減することができます。
いずれのアーキテクチャも、DNSを管理するためのソフトウェアベースのGUIを使用し、複数のユーザがどこからでもセットアップを管理できます。
徹底的にテストする
徹底的なテストは、プライベートDNSの展開が正確に動作し、期待されるパフォーマンスと信頼性のレベルを提供していることを確認するために不可欠です。
名前解決、キャッシング、エラーハンドリングを含む、DNS解決プロセスのすべての側面をテストしてください。
GRCのDNS Benchmarkは、新しいDNSサーバのテストデータを取得するための優れた方法です。
このソフトウェアは、以下に類似した出力を提供し、すべてのDNS解決メトリクスを確認することができます。
さらに、DNS Benchmarkを使用すると、業界の期待に応えているかどうかを確認するために、数百の利用可能なDNSサーバとあなたのデータを比較することができます。
新しいDNSサーバをプライマリDNSとして使用するテストグループとしていくつかのワークステーションを設定して開始します。
ワークステーションからは、DNS解決を調査するためにいくつかのツールを使用できます。
これには以下が含まれます。
- Windowsデバイス上のnslookup
- DNS Leak Test(DNS漏れテスト)
- MX Toolbox DNSチェック
以上の手順により、プライベートDNSの効果的な実装と運用が可能です。
監視とメンテナンス
プライベートDNSの展開が稼働を開始したら、システムを定期的に監視して、発生するかもしれない問題を検出し、対処することが重要です。
定期的なメンテナンスとアップデートも、システムを安全で最新の状態に保つために不可欠です。
Catchpointから利用可能ないくつかのリソースは、DNSの監視を開始する手助けとなるでしょう。
DNSサーバを監視するだけで防げる多くのサイバー攻撃があります。
そのいくつかは以下のとおりです。
- DNSキャッシュポイズニング
- DNSハイジャッキング
- DNSトンネリング
これらの手法により、プライベートDNSを効果的に監視し、メンテナンスすることができます。
セキュリティとプライバシーを考慮する
前述の通り、プライベートDNSはネットワークトラフィックのセキュリティとプライバシーを本質的に向上させることができますが、システムのセキュリティとプライバシーをさらに高めるために、DNS over TLS(DoT)のような他のセキュリティ対策を考慮することが重要です。
DoTは、Transport Layer Security(TLS)プロトコルを使用してDNSトラフィックに暗号化のレイヤーを追加します。
ユーザのデバイスがDoTをサポートするネットワーク上でDNSリクエストを送信すると、そのリクエストはTLSを使用して暗号化されます。
次に、リクエストはDoTもサポートするDNSリゾルバに送信され、そこでリクエストは復号化され処理されます。
リゾルバは、TLSを使用してレスポンスを暗号化し、それをユーザのデバイスに送り返します。
そこでレスポンスは復号化され、処理されます。
Microsoftは最近、Windows 11 Insider Build 25158以降にDNS over TLSのサポートを追加しました。
詳細な設定についてはこちらで見ることができます。
DNS Privacy Projectは、よりセキュアなDNSの標準とソフトウェアを作成するために素晴らしい進展を遂げています。
DNS Privacy ProjectのWebサイトのソリューションページには、現在または開発中のセキュリティプロトコルに関する全ての進展が一覧にされています。
プライベートDNSの実装例
サンプルネットワークでの実装とベストプラクティスがどのように見えるかをさらに明示するために、一例を見てみましょう。
Reality Technologyは、テクノロジーインフラストラクチャとプラクティスを計画中の新しい中小企業です。
この取り組みの一環として、ITチームはネットワークトポロジーの一部としてプライベートDNSを使用するかどうかを決定しようとしています。
すべてのトラフィックは同じLAN内であり、リモートワーカーはVPNソリューションを使用して接続します。
提案されたネットワークとワークロードの図は以下に示されています。
計画段階では、追加のVMをトポロジーに追加してRealityTech.intドメインのドメインコントローラーとして機能させ、専用のDNSアーキテクチャを利用して、DHCP/DNSの役割をファイアウォールアプライアンスからサーバに移動させることが決定されました。
このアーキテクチャは、ファイアウォールがDNS解決を処理することによって現在存在する単一の障害点を排除することで、より良いセキュリティとスケーラビリティを提供します。
提案されたソリューションはまた、VMでホストされている内部アプリケーションを解決するためのプライベートDNSレコードの使用も許可します。
計画フェーズが完了し、アーキテクチャが整ったら、組織はテストフェーズに移行します。
テスト中には、DNSサーバの内部IPがDHCPを介して分散できるか、エンドポイントが外部IPを解決できるかを確認する必要があります。
また、内部サブドメインの完全修飾ドメイン名(FQDN)が内部IPによって2つのアプリケーションサーバに割り当てられ、正しく解決されるかも確認します。
テストフェーズはまた、アーキテクチャの冗長性を評価し、アプリケーションサーバの優先度に応じて適切な追加を行う良い機会です。
監視とメンテナンスの計画段階には、ドメインサーバ、コアDNSサービス、およびサーバへのネットワーク接続を監視するチェックとアラートが設定されたリモート監視および管理(RMM)ソフトウェアの使用が含まれます。
ユーザは、アプリケーションサーバ名の解決に問題が発生した場合の適切な対応チャネルについてトレーニングを受ける必要があります。
セキュリティとプライバシーは、任意のインフラストラクチャ実装の決定において常に考慮されるべきです。
このアーキテクチャでの主な懸念事項は、内部ネットワークを強化することであり、プライベートDNSサーバは外部からアクセスできないことを考慮すると、攻撃の最も可能性の高い手段です。
内部ネットワークへの外部からのアクセスを防ぐ措置が優先事項となります。
外部向けのリソースはありませんので、ファイアウォールのアクセスリストはそれに応じて作成するべきです。
さらに、ネットワークはDNS over TLSに関連する追加のオーバーヘッドに耐えることができるので、追加のセキュリティのために実装するべきです。
IPv6環境でのプライベートDNS
これまでの議論では、プライベートDNSの設計に標準的なIPv4アドレススキームが適用されていると仮定していました。
上で述べたコンセプトとベストプラクティスのほとんどは、IPv6ネットワークでプライベートDNSを実装する場合にも適用されますが、考慮すべきいくつかの追加的な点があります。
- AAAAレコード
-
AAAA(クワッドA)DNSレコードは、ドメイン名をIPv6アドレスに変換するために使用されます。
IPv4アドレスにドメイン名をマッピングするために使用されるAレコードと同様に、AAAAレコードはDNSシステムの基本的な構成要素です。 - IPv6とSLAAC
-
ステートレスアドレス自動設定(Stateless Address Autoconfiguration)はRFC 4862によって定義され、DHCPまたは静的アドレッシングの代わりとして機能します。
SLAACでもこれらのアドレスの逆引きDNSレコードが必要です。
RFC 4472はこの問題を解決するためのソリューションを提案しています。
SLAACを持つIPv6クライアントの完全な範囲に対してワイルドカードレコードを設定することで、一可能性としてDNSリゾルバが逆DNS問い合わせを受信した際にPTRレコードを動的に生成することがあります。
結論
プライベートDNSは、組織やネットワークに多くの利点を提供することができます。
これには、セキュリティ、プライバシー、およびパフォーマンスの向上が含まれます。
専用のDNSサーバや他のプライベートDNSアーキテクチャを使用することで、組織はDNS解決プロセスに対するより多くのコントロールを得ることができ、これがネットワークの信頼性とセキュリティを向上させる手助けとなります。
プライベートDNSの導入には、慎重な計画、テスト、および継続的なメンテナンスが必要です。
これにより、システムが正確に動作し、求められるレベルのパフォーマンスとセキュリティを提供しているかを確認することができます。
ベストプラクティスに従い、ネットワークの特定のニーズを考慮することで、組織はプライベートDNSを成功裏に導入し、それが提供する利点を享受することができます。
次は?
1. DNS委任
DNS委任のアプリケーションと利点について全て学びましょう。実装のベストプラクティスも含みます。
2. DNSフラッド攻撃
DNSサーバをターゲットにした分散型サービス拒否(DDoS)攻撃であるDNSフラッド攻撃のタイプと影響、そしてそれらからどのように保護するかについて学びましょう。
3. プライベートDNS
プライベートDNSについて全て学びましょう。利点、異なるアーキテクチャタイプ、およびベストプラクティスを含みます。
4. DNSのTTL値
この無料ガイドでは、DNS Time to Live(TTL)値、その重要性、およびさまざまなレコードタイプに対して適切な数字を選択するためのベストプラクティスについて全て学びましょう。
5. マネージドDNS
マネージドDNSの利点と欠点を探り、手動DNS管理と比較してみましょう。
6. DNS攻撃
DNS攻撃がどのように機能し、それらを特定し軽減する方法を学びましょう。これには、DNSポイズニング、トンネリング、フラッド、ハイジャックが含まれます。
7. 遅いDNS
DNSパフォーマンスに影響を与える要因を学び、遅いDNSの状態を診断する方法とDNS速度を最適化するためのベストプラクティスについて学びましょう。
8. DNSハイジャック
DNSハイジャックがどのように発生するかを一例を用いて学び、これらのサイバー攻撃を検出し、修復し、防ぐためのベストプラクティスについて学びましょう。