サーバセキュリ(4)
DNSサーバ
DNS(Domain Name System)
インターネットの重要な基盤技術の一つで、コンピュータの世界で通用する識別番号=IPアドレスと,人間の世界で通用する名前=ドメイン名を対応付けるしくみ
DNSの主な機能
リゾルバ(resolver)
DNSサーバにIPアドレスを問い合わせるプログラム。DNSサーバは,問い合わせメッセージを受け取ると,自分が持っている「ゾーン情報(ドメイン名とそれに対応するIPアドレスなどの登録情報を記した対応表)」を調べて答えを探す。
コンテンツサーバ(ゾーンサーバ)
自分が管理しているゾーンに対する問い合わせだけに回答する。名前解決ができなくてもほかのネームサーバへの問い合わせはせず、自らが管理しているデータベースに該当する情報がなければ「情報はない」と答える。
キャッシュサーバ(フルサービスリゾルバ)
スタブリゾルバから送られる「再帰(Recursive)検索」要求を受け、名前解決が完了するまで、それぞれの名前についてほかのネームサーバに「反復(Iterative)検索」という形で問い合わせをする。また、その結果をスタブリゾルバに返答する。
このとき、同じ問い合わせを何度も繰り返すという非効率を避けるため、一度名前解決をしたドメイン名を内部にキャッシュして再利用することから「キャッシュサーバ」とも呼ばれる
スタブリゾルバ
利用者側から出される要望を基にフルサービスリゾルバと交信し、調べたいドメイン名を渡して必要な情報を教えてもらう、端末側で動作する検索プログラム。単に「リゾルバ」と呼ばれることもある。
リソースレコードリソースレコード
DNSサーバに登録する情報のこと
名称 | 概要 | |
---|---|---|
A | アドレス | ホスト名に対応するIPアドレス(IPv4) |
AAAA | アドレス | ホスト名に対応するIPアドレス(IPv6) |
CNAME | キャノニカルネーム | ホスト名の別名 |
MX | メールエクスチェンジ | メールサーバのホスト名 |
NS | ネームサーバ | DNSサーバのホスト名 |
SOA | スタートオブオーソリティ | プライマリDNSサーバのホスト名、DNSサーバの動作に関する情報等 |
PTR | ポインタ | ホストの別名逆引き用 |
TXT | テキスト | ホスト名に関するテキスト情報(SPFレコードの記述にも使用) |
OPT | EDNS0に関する情報等 |
DNSラウンドロビン
1つのドメイン名に複数のIPアドレスを割り当てて、クライアントPCなどからの問い合わせごとに順番に応答していく負荷分散技術
メリット
- DNSサーバのゾーンファイルの設定のみで容易に負荷分散を実現
- ロードバランサ等の高価な専用装置なしでも負荷分散を実現
デメリット
- ロードバランサのように効率的な負荷分散は実現できない
- 同じクライアントからの通信を常に同じサーバに転送する、という通信の継続性を実現できない
- サーバの障害を検知できず、障害が起きているサーバにもパケットを転送してしまう
ダイナミックDNS
RFC 2136として規格化されたDNSデータベースを動的に更新する技術。
DNSの脆弱性
※代表的な攻撃
- ゾーン転送要求による登録情報の収集
- DNSキャッシュポイズニング(汚染)攻撃
- 不正なリクエストによりサービス不能状態を引き起こす攻撃
- DNSリフレクション(DNS amp)攻撃
実行方法
ゾーン転送要求による登録情報の収集
ゾーン転送とは、ドメイン名とIPアドレスの対応付けなどを行うDNSにおいて、DNSサーバの管理するゾーン情報(あるドメインの中に含まれるホスト名とIPアドレスの対応などの情報を集積したひとまとまりのデータ)を別のコンピュータに一括して転送すること、そのようなDNSサーバの機能。通常は、セカンダリDNSサーバがプライマリDNSサーバの持つデータの複製を作るために利用する
DNSサーバはゾーン情報のマスターデータを保存・管理するプライマリDNSサーバのほかに、1台以上のセカンダリDNSサーバを置いて冗長化しなければならないため、定期的にデータの複製を作成するためにゾーン転送が使われる
ゾーン転送はそのドメインのセカンダリサーバ以外には使わせないようにするのが基本で、DNSサーバの設定が不適切な場合、第三者にゾーン転送されてしまい、漏洩したネットワークの構成情報などを元に攻撃を受けてしまう。
DNSキャッシュポイズニング(汚染)攻撃
あるドメインについて偽の情報を発信し、インターネット上のDNSサーバに伝播させることにより、一般の利用者がそのドメイン内のサーバに到達できないようにする、ドメイン所有者の意図しない別のサーバにアクセスを誘導する、手法。この手法を利用して、商取引サイトのドメイン情報を書き換えて詐欺サイトに誘導し、クレジットカード番号などを詐取する攻撃手法を「ファーミング詐欺」という。また、近年では、違法または反社会的な情報やサービスを提供しているWebサイトなどへの一般利用者のアクセスを遮断するため、ネットワーク事業者などが国の要請や法律の規定に従って、あえてそのドメインへのDNSキャッシュポイズニングを行なう場合がある
古いDNSサーバソフトの仕様では、あるドメイン情報を管理するサーバから送られてくる情報に別のドメインの情報が紛れ込んでいても、特に確認することなく受け取って保存してしまう。この脆弱性を悪用して、本来管理権限の無いドメインの情報をいろんなDNSサーバに勝手に送りつけて書き換えてしまうことにより、外部からのそのドメインへのアクセスを所有者に無断でコントロールする
不正なリクエストによりサービス不能状態を引き起こす攻撃
DNSサーバの使用上の脆弱性や実装上の脆弱性を突いて不正な要求を与えることで、サービス不能状態を引き起こす攻撃
DNSリフレクション(DNS amp)攻撃
多数のコンピュータから一斉に大量のデータを送りつけて対象を麻痺させるDDoS攻撃の一種で、DNSサーバのキャッシュ機能を悪用する手法
- 自分の管理するDNSサーバに大容量の無意味な文字列を並べたレコードを作成し、キャッシュ機能を持った公開DNSサーバにこれを送りつけてキャッシュさせる
- 管理の甘いコンピュータにこっそり遠隔管理ソフトを仕込んだゾンビPCを大量に用意する
- これを操って、キャッシュをコピーしたDNSサーバに大容量レコードの送信を要求するパケットを一斉に送信させる。このとき、送信元アドレスを偽って攻撃対象となるコンピュータのアドレスを設定することにより、DNSサーバからの応答(最初に作成した大容量レコード)が攻撃対象に送信される
- 対象となったコンピュータはこれを捌ききれずに通信不能に陥ったり、回線がパンクしたりしてしまう
対策
予防・防止
- DNSサーバのソフトウェアのバージョンを最新にする
- DNSの送信元ポート番号とトランザクションIDを推測されにくいものにする
- DNSSEC(DNS Security Extensions)を使用する
- ゾーン転送をセカンダリDNSサーバにのみ許可するよう設定するとともに、ゾーン転送するデータの範囲を最小限に設定する
- 脆弱性検査を実施し、DNS関連のセキュリティホールの有無を・対処する
- DNSキャッシュサーバが不要なクエリを拒否するようにアクセス制限を施す
検知・追跡
- ネットワーク監視型IDS、IPSを用いてDNSサーバに対する攻撃を検知する
回復
- 攻撃を受けた脆弱性を特定するとともに、予防・防止に挙げた対策を実施する
512オクテット制限への対応
DNSのUDPメッセージは、最大で512オクテット、とするのが元々の仕様で、512オクテットを超える場合、UDPではなくTCPを用いることになっていた(TCPフォールバック)。TCPフォールバックでは、512オクテット以下の複数のパケットに分割したTCPパケットにて結果を返す必要がある。だが、TCPによるDNSプロトコルに対応せず、このためTCPで値を返しても受け取ることができない実装が多かった。もって、DNSサーバから(UDPでの)応答がない→通信できない、という問題が生じた
また、しかしIPv4に加えてIPv6も使われるようになると、どうしてもリザルトの容量が多くなり、もって512オクテットに収まりきらないことが増えてきた
この対策として作られたのが、EDNS0である
近年、負荷分散や障害に対する耐性の向上を目的として、一つのドメイン名に多数のレコードを割り当てることがある。また、IPv6、ENUM、DNSSECをはじめとした新しい技術への対応などによって、DNSメッセージに含まれる情報は増加する傾向にある。IPv6やDNSSECのメッセージを取り扱うDNSサーバは、EDNS0をサポートすることが必須とされている
EDNS0で拡張される点
1.DNSメッセージヘッダ | :RCODEやフラグの拡張 |
2.DNSラベルタイプ | :ラベル型の拡張 |
3.DNSメッセージの UDPペイロードサイズ | :最大512オクテットの制限を通信可能であれば 65535オクテットまでに拡張 |
 

