DNS、管理者として見るか? 攻撃者として見るか?セキュリティ対策の「ある視点」(5)(1/3 ページ)

安定運用してしまうと軽視されがちなDNSサーバ、実は一番「ほっとけない」! DNSの設定ミスでSSHパスワードまで抜かれる可能性も?

» 2007年11月30日 00時00分 公開

 今回は、前回取り上げたSendmailに代表されるMTA(メール配送エージェント、メールサーバ)とサーバ内に同居させることの多い、DNSのセキュリティ設定について紹介させていただく。紹介するDNSは最もシェアが高いと思われるBIND(Berkeley Internet Name Domain)である。

DNSのバナー情報はいつ表示されるのか

 まずは、本連載ではお決まりの(?)バナー情報から紹介しよう。

 BINDの場合では、接続が確立したときやコマンドを実行したときにバナーが表示されるのではなく、発行したクエリーの応答の中にBINDのバージョンが表示される。以下は、「dig」コマンドを用いてバージョン取得を行った結果の例である。

【digの実行結果】

; <<>> DiG 9.2.4 <<>> @xxx.xxx.xxx.xxx version.bind chaos txt
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9660
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;;

QUESTION SECTION:
;version.bind.               CH         TXT
;;

ANSWER SECTION:
version.bind.       0       CH         TXT       "9.2.4"
;;

AUTHORITY SECTION:
version.bind.       0       CH          NS        version.bind.;;

Query time: 34 msec
;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx)
;; WHEN: Sun Nov 4 10:32:00 2007
;; MSG SIZE rcvd: 62

 ANSWER SECTIONの次の行に「"9.2.4"」とバージョンが表示されていることが分かる。digで問い合わせる方法は、以下の「xxx.xxx.xxx.xxx」の部分をBINDが稼働しているホストのアドレスに変更し、実行する。

dig @xxx.xxx.xxx.xxx version.bind chaos txt
(「version.bind」「chaos」「txt」の順番は上記通りでなくてもよい)

 Windowsにdigコマンドは付属していないが、以下のようにnslookupコマンドを実行することで同等の結果を取得することができる。

nslookup -type=txt -class=chaos version.bind xxx.xxx.xxx.xxx

 この実行結果は以下のようになる。

【nslookupの実行結果】

*** Can't find server name for address xxx.xxx.xxx.xxx: Non-existent domain
Server:   UnKnown
Address:  xxx.xxx.xxx.xxx

version.bind    text =           "9.2.4"
version.bind    nameserver = version.bind

 どうしてもWindows環境でdigを使いたい場合は、単体で配布しているサイトがあるので、そこからダウンロードすれば手っ取り早く利用することができるだろう。

まずはDNSのバージョンを隠そう

 それでは、このバージョン情報の隠ぺい方法を紹介しよう。

 BINDの設定ファイル(/etc/named.confなど)内のoptions内に以下のように記述を追加する。

options {
            〜 略 〜
            version "tsuji";
                        〜 略 〜
} ;

 versionに続く「"」で囲まれた中に任意の文字(何も書かなくてもよい)を記述することで、digやnslookupでバージョン情報の取得を試みたときにバージョン情報ではなく記述した任意の文字列を表示させることが可能である。上記の設定を施したBINDに対してdigでバージョン情報を取得した場合は、以下のように表示される。

【digの実行結果】

; <<>> DiG 9.2.4 <<>> @xxx.xxx.xxx.xxx txt chaos version.bind
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13242
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;;

QUESTION SECTION:
;version.bind.               CH         TXT
;;

ANSWER SECTION:
version.bind.       0       CH         TXT      "tsuji"


AUTHORITY SECTION:
version.bind.       0       CH          NS        version.bind.;;

;; Query time: 38 msec
;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx)
;; WHEN: Tue Nov 6 15:56:02 2007
;; MSG SIZE rcvd: 62

 version.bindの行が「tsuji」と変化していることが分かる。空白や「unknown」などの任意の文字列を設定するとよいだろう。設定を行ったら、BINDの再起動を行うことで設定が反映される。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。