はじめに
◆この記事は何?
DNSに関連する技術をシーケンス図を用いて説明します。
◆対象
DNSを理解したい人、試験のために覚えたい人
◆この記事のねらい
シーケンス図を書くことでDNSの理解が深まり、覚えやすくなります。
より効率良く勉強できるような一助になれば幸いです。
DNS(Domain Name System)
DNSはドメイン名とIPアドレスの対応を管理するための仕組みです。
ドメイン名とIPアドレスを変換する仕組みを名前解決といいます。
もしDNSがないと、Webサイトにアクセスする際にIPアドレスを指定しなければなりません。利便性が著しく低くなります。
DNSサーバ
コンテンツDNSサーバ
コンテンツDNSサーバは、管理しているドメインないのドメイン名とIPアドレスの対応を管理します。
キャッシュDNSサーバ
クライアントはキャッシュDNSサーバーにコンテンツDNSサーバへの問い合わせを代行してもらいます。
もしキャッシュDNSサーバがなければ、コンテンツDNSサーバにアクセスが集中してしまいます。
sequenceDiagram
participant クライアント
participant キャッシュDNSサーバ
participant コンテンツDNSサーバ
autonumber
クライアント ->> キャッシュDNSサーバ: IPアドレスの問い合わせ
キャッシュDNSサーバ ->> コンテンツDNSサーバ:IPアドレスの問い合わせ
コンテンツDNSサーバ -->> キャッシュDNSサーバ :IPアドレス
キャッシュDNSサーバ -->> クライアント :IPアドレス
◆キャッシュDNSサーバーの目的
キャッシュDNSサーバを利用することで、コンテンツDNSサーバへの不要な通信を削減し、クライアントへの応答時間を短縮できます。
DNSキャッシュポイズニング
DNSキャッシュポイズニングは、キャッシュDNSサーバに偽の情報を記憶させることで偽サイトに誘導する攻撃です。
sequenceDiagram
participant 攻撃者
participant キャッシュDNSサーバ
participant コンテンツDNSサーバ
autonumber
攻撃者 ->> キャッシュDNSサーバ : IPアドレスの問い合わせ
キャッシュDNSサーバ ->> コンテンツDNSサーバ : IPアドレスの問い合わせ
攻撃者 ->> キャッシュDNSサーバ : 偽情報を先に回答
コンテンツDNSサーバ -->> キャッシュDNSサーバ: IPアドレス(回答)
攻撃者は正規のコンテンツDNSサーバよりも先に偽の応答を送ることで、キャッシュDNSサーバに偽の情報を記憶させることができます。
また、カミンスキー攻撃はDNSキャッシュポイズニングの一つです。
◆カミンスキー攻撃
攻撃対象の名前にランダムなラベルを付加した名前を用いることで、連続での攻撃を可能にしました。攻撃試行を増やしています。
◆DNSキャッシュポイズニングの対策
①オープンリザルバにしないこと
オープンリゾルバとは、不特定多数の外部からの要求を受け付ける状態のことです。
オープンリゾルバにしないことで、第三者がキャッシュDNSサーバを利用できないようにします。
②ポート番号をランダムにする(ソースポートランダマイゼーション)
キャッシュDNSサーバは、正規の応答をトランザクションIDとポート番号で判断しています。
ポート番号をランダムにすることで、応答の偽装が成立しにくくなります。
③キャッシュの時間を長くする
キャッシュの時間を長くすることで、更新頻度が低くなるため、攻撃の機会が減ります。
④DoH(DNS over HTTPS)
DNSへの問い合わせを平文で通信するのではなく、HTTPSの暗号化通信にすることで、盗聴・なりすまし・改ざんを防ぎます。
攻撃者がネットワークトラフィックを盗聴しても内容を読み取ることができなくなります。
DNSSECはDNSキャッシュポイズニングを根本的に防ぐ対策になります。
DNSSEC
DNSSECは、コンテンツDNSサーバの応答にデジタル署名をつけて正当性を確認する仕組みです。
DNSSECは、DNS Security Extensionsを意味します。
コンテンツDNSサーバの公開鍵をDNSKEY、リソースレコードに対するデジタル署名をRRSIGといいます。
RRSIGはResource Record digital SIGnatureの略です。
おわりに
この記事では、DNS、DNSキャッシュポイズニング、DNSSECについてシーケンス図を用いて説明しました。
参考になれば幸いです。