DNSキャッシュサーバ構築(目次)
| Table of Contents |
はじめに
BIND 9.7によるDNSキャッシュサーバの構築手順です。
OSはCentOS 6.2を利用して、rndcとDNSSECに対応させます。
DNSキャッシュサーバの構築手順については下記を参照して下さい。
環境
-
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; 192.168.11.0/24; }; # キャッシュを応答する先をローカルホストとローカルネットワークに限定します allow-q u ery - cache { localhost ; 192.168 .11 .0 / 24 ; } ; # キャッシュサーバなので再帰問い合わせを許可します recursion yes ; # DNSSECは無効にします。(後で有効にします) dnssec - enable no ; dnssec - validation no ; dnssec - lookaside auto ; #autoを指定するとトラストアンカの設定が自動作成されます。 } ; # ログ設定(デフォルト) logging { #デバック時のログ出力先 (主にrndc trace コマンドで利用) channel default_debug { file " data/named.run " ; severity dynamic ; } ; } ; #キャッシュサーバの設定 view " localhost_resolver " { #ローカルネットワークのみ利用可能にします match - clients { localhost ; 192.168 .11 .0 / 24 ; } ; recursion yes ; #ルートゾーンの設定 zone " . " IN { type hint ; file " /var/named/named.ca " ; } ; #ローカルホストに名前解決に関する設定 include " /etc/named.rfc1912.zones " ; } ;
-
統計情報やログの出力先となるフォルダを作成します。フォルダ所有者は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
起動・自動起動
自動起動の設定
-
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
動作確認
正引きの確認
-
digコマンドで正引きを行い結果が表示される事を確認します
# dig @localhost example.com ; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> @localhost example.com; (2 servers found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5571;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0;; QUESTION SECTION:;example.com. IN A;; ANSWER SECTION:example.com. 172748 IN A 192.0.43.10;; AUTHORITY SECTION:example.com. 172747 IN NS b.iana-servers.net.example.com. 172747 IN NS a.iana-servers.net.(省略)
逆引きの確認
-
digコマンドで逆引きを行い結果が表示される事を確認します
# dig @localhost -x 192.0.43.10; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> @localhost -x 192.0.43.10; (2 servers found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13366;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 0;; QUESTION SECTION:;10.43.0.192.in-addr.arpa. IN PTR;; ANSWER SECTION:10.43.0.192.in-addr.arpa. 21600 IN PTR 43-10.any.icann.org.;; AUTHORITY SECTION:43.0.192.in-addr.arpa. 86399 IN NS b.iana-servers.net.43.0.192.in-addr.arpa. 86399 IN NS d.iana-servers.net.(省略)
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