
どうも、こんばんは。たこやきです。
今回はあと2週間後に迫った情報処理安全確保支援士の過去問を解いていて、少し知識不足だと感じたDNS関連のセキュリティについて自分なりにまとめていきたいと思います。
DNSは今このブログのURLを登録するためにDNSサービス(ムームドメイン)を利用してはいますが、それ以外では正直あまり触らないので、身近に触れる機会がかなり少なかったです。

ドメインネームシステムをもっと知りたい
・DNSのセキュリティに関して知りたい人
・情報処理安全確保支援士のDNSに関する分野があまり分からない人
参考までに僕の今までの経歴を簡単に書いておきます。
2017/3:大学(農学部)を卒業
2017/4:IT未経験で独立系のSIerに就職
2021/7:独立系のSIerを退職
2021/8:未経験でコンサル会社に就職 ← イマココ
他にも情報処理安全確保支援士の興味があれば見ていただけますと幸いです!
目次
DNSとは

よく電話帳に例えられるやつですね
DNSのゾーンファイル(正引き)としては↓のようなイメージになるようです。
今はもう少しUIが充実していて上記のようなファイルは触らず、直感的な操作で設定できると思いますが、DNSの役割としてはIPアドレスとドメイン名の変換です。
上記のようにドメイン名(人間に覚えやすい形)からIPアドレス(機会がやり取りする形)に切り替えるシステムで、基本的には内部LANやインターネットに公開されて多くのPCからアクセスされます。
DNSがなくても最悪IPアドレスでやりとりすることもできますが、どこにアクセスしてるか分からないですよね…

google.comが192.168.0.1とかだと少ししんどいですよねw
概要としては↑のイメージであとは情報処理試験にもよく出るコンテンツサーバとキャッシュサーバについて説明します。(DNSの機能はコンテンツ機能とキャッシュ機能に大別されます)
コンテンツサーバ
別名、権威DNSサーバやゾーンサーバとも呼ばれます。サーバ自身に登録されたドメイン(ゾーン)情報の非再帰的な名前解決に応じるサーバー。
→自分に登録されたドメイン情報(ゾーン)=コンテンツを返却するやつ。(権威があるから他の人のところには聞きに行かない)
キャッシュサーバ
別名、フルサービスリゾルバと呼ばれます。名前解決要求が来た際に、他のDNSサーバ(コンテンツサーバ、キャッシュサーバ)に問い合わせを行い、その結果を名前解決要求元(リゾルバ)に返します。また、一定期間は名前解決結果をキャッシュとして保持して再利用します。(だからキャッシュサーバ)
問い合わせ元のアドレスやドメインに制限がないものをオープンリゾルバと呼びます。
→自身にはドメイン情報が登録されておらず、ドメイン情報(コンテンツ)を他の人に聞きに行くやつ。(パシリとしてフルサービスをする)

両機能が一台のDNSサーバーでまかなわれることもあります。
DNSサーバに対する攻撃
上記のようなDNSですが、いったいどんな攻撃を受けるのでしょうか。以下が代表的なようです。
- ゾーン転送要求による登録情報の収集
- DNSキャッシュポイズニング攻撃
- 不正なリクエストによるサービス不能状態を引き起こす攻撃
- DNSリフレクション攻撃
ゾーン転送要求による登録情報の収集
負荷分散のために複数台のDNSサーバ(プライマリ、セカンダリ)を設置することがあり、その際にはそれぞれのDNS情報を同期するために必要があります。
その際、他のDNSからのゾーン情報(ドメイン情報)取得を行う処理を行うのですが、この時に行われるのがゾーン転送要求です。(53番ポートが使われる)
無警戒のサーバであれば、攻撃者からのゾーン転送要求にも返答してしまい、自身が管理しているゾーン情報(ドメイン情報)を知られてしまいます。
DNSキャッシュポイズニング攻撃
攻撃者が、キャッシュサーバに偽のDNS情報を送り込むことで、攻撃者のサーバにアクセスさせたりキャッシュサーバの機能を停止させたりする攻撃です。名前から何となくイメージが付くのでわかりやすさはあるかと思います。
カミンスキー攻撃という派生した「存在しないホスト名で問い合わせる攻撃」も見つかり、ポートのランダム化などの対策が取られています。
不正なリクエストによるサービス不能状態を引き起こす攻撃
DNSサーバの脆弱性や仕様上の弱点をついてサービス不能状態に陥らせる攻撃です。バージョンアップやをすることで弱点をなくすような設定変更をして対策していきます。
DNSリフレクション攻撃
DNSをDoS攻撃の踏み台として加担させるような攻撃です。最終的な攻撃対象のIPアドレスを問い合わせ元として設定し、名前解決要求を送ることで、攻撃対象のIPアドレスに問い合わせ結果を返します。
オープンリゾルバはこ踏み台として使われやすくなります。
DNSサーバに対する攻撃
これらの攻撃への対策は以下のようなものが挙げられます。
- バージョンの最新化
- 送信元ポートのランダム化(DNSキャッシュポイズニング攻撃への対策)
- DNSSECを利用した暗号化
- ゾーン転送要求のアクセス制御
- セキュリティホールへの対策
また、検知、追跡にはIDSやIPS等のネットワーク監視ツールを用いたり、DNSクエリログを分析したりすることが有効とされています。

ポートのランダム化やDNSSECあたりは覚えておきたいですね。
まとめ
今回はDNSのセキュリティに関してみてきました。
文章にしてみることで攻撃の種類の違いであったり、DNSの大きな分類であるキャッシュサーバとコンテンツサーバの特徴であったりが少し腹落ちした気がします。
キャッシュサーバとコンテンツサーバの役割や関連性を覚えておくだけでも、どんな弱点や攻撃があるかを推測できると思うので、覚えておいた方が良い気がしました。

次回は、メールのセキュリティの記事が書けたら幸いです。
※本記事では解釈を間違えている場合もありますがそこはご了承ください。
可能であればコメントにてご指摘いただけますと幸いです。
コメント