Technical Notes
テクニカルノーツ
DNSサーバを構築してみた
2014.1.23
Debian wheezyでDNSサーバを構築してみました。
基本的なインストール方法と設定手順を説明します。
なお、各正・逆引きファイルの設定内容は省略しています。
BINDインストール
#aptitude install bind9 bind9-host bind9utils
設定ファイルの設定
named.confの設定
以下の2行のみ設定を有効にする
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
named.conf.optionsの設定
options {
directory "/var/cache/bind";
//query-source address * port 53; //コメントアウト
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; }; //IPv6は使用しないので設定
allow-query {
192.168.XXX.0/24;
XXX.XXX.XXX.XXX/XX;
};
allow-transfer {
192.168.XXX.0/24;
XXX.XXX.XXX.XXX/XX;
};
version "DNS Server";
}
設定内容
-
//query-source address * port 53
コメントアウトするのは、ポートを固定すると攻撃先のポートが特定されて攻撃へのリスクが高くなります。
-
allow-query
問合せを許可する範囲を設定します。
-
allow-transfer
ゾーンの転送を許可する範囲を設定します。
named.conf.localの設定
各正・逆引きゾーンファイルの設定内容は省略します。
なお、ゾーンファイルの命名規則は、内側はファイル名の頭に「db.」+ホスト名、外側はファイル名の頭に「zone.」+ホスト名にして、ファイル名で各ホストの外側・内側の設定ファイルがわかりやすいようしています。
view "internal" { match-clients { 192.168.XXX.0/16; 127.0.0.0/8; }; recursion yes;
zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; };
zone "one-x.co.jp" { type master; file "/etc/bind/db.one-x.co.jp"; }; }
view "external" { match-clients { any; }; allow-query { any; }; recursion no; zone "one-x.co.jp" in { type master; file "/etc/bind/one-x.co.jp.zone"; } ;
}
設定内容
-
view "internal"
内向けのLAN内の設定を記載します。
-
view "external"
外向けのWAN側の設定を記載します。
-
match-clients
指定範囲の物が定義を参照します。
-
recursion
再帰検索の設定。外側の設定は禁止(no)にすること。
yesにすると攻撃(不正なリクエスト)に対して再帰検索による不要な検索(管理外のドメインに対する検索)やDNSキャッシュするで、サーバに負荷がかかったりやキャッシュポイズニング等にる攻撃に弱くなるためです。
設定の確認
以下のコマンドで設定のシンタックスエラーをチェックできます。
問題がある場合は、コマンド実行後にエラーが表示されます。表示されない場合は問題ありません。
# named-checkconf /etc/bind/named.conf
BINDの起動
# /etc/init.d/bind9 start
動作検証
dnsutils をインストール
digコマンドを使うので dnsutils をインストールします。
#aptitude install dnsutils
dig コマンドで検証
dig コマンドで AUTHORITY SECTION が正常に取得できることを確認します。
以下は、コマンド実施の例です。
#dig @localhost one-x.co.jp MX
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @localhost one-x.co.jp MX
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35491
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;one-x.co.jp. IN MX
;; ANSWER SECTION:
one-x.co.jp. 86400 IN MX 0 mail.one-x.co.jp.
;; AUTHORITY SECTION:
one-x.co.jp. 86400 IN NS ns.one-x.co.jp.
;; ADDITIONAL SECTION:
ns.one-x.co.jp. 86400 IN A XXX.XXX.X.XX
;; Query time: 9 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Jan 23 16:26:01 2014
;; MSG SIZE rcvd: 83
以上