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

このエントリーをはてなブックマークに追加
Last-modified: 2012-05-01 (火) 20:29:39   最終更新のRSS