外向けDNSゾーンサーバ構築(目次)
| Table of Contents |
はじめに
BIND 9.7による外向けDNSゾーンサーバの構築手順です。
OSはCentOS 6.2を利用して、rndcに対応させます。
環境
-
OS
- CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
-
パッケージ
- bind-9.7.3-8.P3.el6_2.2
-
その他
- ローカルネットは192.168.11.0/24とします
インストール
-
bind 本体のインストール
# yum install bind bind-chroot
-
必要な設定ファイルをコピーします。
# cd /usr/share/doc/bind-9.7.3/sample/# cp -rp etc/* /var/named/chroot/etc# cp -rp var/named/named* /var/named/chroot/var/named
-
コピーした設定ファイルの権限を変更します。
# chown -R root:named /var/named/chroot
設定
chrootの設定
chrootについて
第三者に権限が奪取された場合に、被害を最小限に防ぐためchrootを導入します。
chrootはnamedプロセスにおけるルートディレクトリを変更する事で、
権限が奪取された場合に上位階層のファイルへアクセス出来ないようにします。
ルートディレクトリの設定
-
「/etc/sysconfig/named」でルートディレクトリを設定します。
# vi /etc/sysconfig/namedROOTDIR=/var/named/chroot
これで権限が奪取されたとしても「/var/named/chroot」より上の階層にアクセスできません。
named.confの編集
-
設定ファイル「/var/named/chroot/etc/named.conf」を編集します。
# vi /var/named/chroot/etc/named.conf
# 動作全般に関する設定 options { # バージョンを知られないように隠す設定 version " unknown " ; # 設定ファイルのディレクトリ (デフォルト) # 下記設定の場合、chrootにより /var/named/chroot/var/named が設定される directory " /var/named " ; # キャッシュ内容を保存するファイル(rndcで利用) dump - file " data/cache_dump.db " ; # 名前解決の回数などを統計データとして保存するファイル(rndcで利用) statistics - file " data/named_stats.txt " ; # サーバ終了時にメモリ使用統計について出力するファイル(rndcで利用) memstatistics - file " data/named_mem_stats.txt " ; # サービスのListenポートとIP listen - on port 53 { any ; } ; listen - on - v6 port 53 { :: 1 ; } ; # 問い合わせ元をローカルホストに限定します(デフォルト) allow - qu ery { localhost; }; # キャッシュの応答先をローカルホストに限定します(デフォルト) allow-q u ery - cache { localhost ; } ; # 再帰問い合わせの設定(viewで再定義します) recursion no ; # DNSSECは無効にします。(後で有効にします) dnssec - enable no ; dnssec - validation no ; dnssec - lookaside auto ; #autoを指定するとトラストアンカの設定が自動作成されます。 # ゾーン情報の転送を許可するセカンダリDNS allow - transfer { 192.168 .11 .101 ; } ; } ; # ログ設定(デフォルト) logging { #デバック時のログ出力先 (主にrndc trace コマンドで利用) channel default_debug { file " data/named.run " ; severity dynamic ; } ; } ; # 外部向けDNSの設定 view " external " { match - clients { any ; } ; match - destinations { any ; } ; zone " . " IN { type hint ; file " /var/named/named.ca " ; } ; recursion no ; allow - qu ery-cache { none; }; zone "oss-d.net" { type master; file "oss-d.net.ex_zone"; }; zone "0.0.10.in-addr.arpa" IN { type master; file "0.0.10.in-addr.arpa.ex_zone"; };};
-
統計情報やログの出力先となるフォルダを作成します。フォルダ所有者はnamedに変更します。
# mkdir /var/named/chroot/var/named/dynamic# mkdir /var/named/chroot/var/named/data# chown named:named /var/named/chroot/var/named/dynamic# chown named:named /var/named/chroot/var/named/data
SElinuxの設定
-
「/var/named/chroot/var/named」配下はnamedで書き込みできないため、
書き込み可能にするようSELinuxの設定を変更します
-
SElinuxのパラメータを確認します。
# getsebool -a|grep namednamed_write_master_zones --> off
-
SElinuxのパラメータを変更します。
# setsebool -P named_write_master_zones 1
外部向けゾーンファイルの設定
- グローバルIPがないので、10系のローカルIPを外部向けとして記載しています。
正引きの設定
-
外部向け正引きゾーンファイルを設定します。
# vi /var/named/chroot/var/named/oss-d.net.ex_zone
$TTL 86400 @ IN SOA dns . oss - d . net . root . oss - d . net . ( 2012050101 ; Serial 3 H ; Refresh 15 M ; Retry 1 W ; Expire 1 D ) ; Minimum ; IN NS dns . oss - d . net . IN MX 10 mx . oss - d . net .; mx IN A 10.0 .0 .10 dns IN A 10.0 .0 .100 www IN CNAME dns external IN A 10.0 .0 .201
逆引きの設定
-
外部向け逆引きゾーンファイルを設定します。
# vi /var/named/chroot/var/named/0.0.10.in-addr.arpa.ex_zone
$TTL 86400 @ IN SOA dns . oss - d . net . root . oss - d . net . ( 2012050101 ; Serial 3 H ; Refresh 15 M ; Retry 1 W ; Expire 1 D ) ; Minimum ; IN NS dns . oss - d . net .; 10 IN PTR mx . oss - d . net . 100 IN PTR dns . oss - d . net . 201 IN PTR external . oss - d . net .
リゾルバの設定
-
リゾルバを設定します
# vi /etc/resolv.conf
nameserver 127.0 .0 .1
起動・自動起動
自動起動の設定
-
chkconfigコマンドで自動起動をONにします
# chkconfig named on
-
chkconfigコマンドで自動起動の確認をします。LUNレベル3,5がonになっていれば問題ありません。
# chkconfig --list named named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
起動
-
BIND を起動します。
# /etc/init.d/named start
-
psコマンドで起動の確認を行います。
# ps ax |grep named 4711 ? Ssl 0:00 /usr/sbin/named -u named -t /var/named/chroot
動作確認
外部向け設定の確認
外向けの設定はDNSサーバを127.0.0.1に設定して確認します。
-
正引きを確認します。(10系のIPアドレスで回答されます)
# nslookup dns.oss-d.net 127.0.0.1Server: 127.0.0.1Address: 127.0.0.1#53Name: dns.oss-d.netAddress: 10.0.0.100
-
逆引きを確認します。
# nslookup 10.0.0.100 127.0.0.1Server: 127.0.0.1Address: 127.0.0.1#53100.0.0.10.in-addr.arpa name = dns.oss-d.net.
-
再帰問い合わせの確認(外部向けは再帰問い合わせ不可能です)
# nslookup exsample.com 127.0.0.1Server: 127.0.0.1Address: 127.0.0.1#53** server can't find exsample.com: REFUSED
rndcの設定
-
rndcを設定して、BINDをリモートから制御可能にします。
DNSSECの設定
-
DNSキャッシュポイズニング対策としてDNSSECを導入します。
各種コマンド
dig
-
正引き(@のDNSサーバは省略可)
# dig @localhost example.com
-
逆引き(@のDNSサーバは省略可)
# dig @localhost -x 192.168.11.101
-
MXレコードの確認
# dig @localhost example.com mx
-
設定ファイルの内容確認
# named-checkconf -p -t /var/named/chroot