bind の基本 / bind のインストール

1.BINDとは

BIND(Berkeley Internet Name Domain)はISCという組織によって開発・配布されているOSSです。LinuxのDNSサーバとしては最もポピュラーなもので、多くの人に利用されています。慣れないと、少々とっつきにくい部分もあると思いますが、DNSの仕組みとBINDの使い方を押さえておけばDNSサーバについては使えるといっても良いと思います。(と筆者は思っています。。)BINDはコンテンツサーバ・キャッシュサーバはもちろん、DNSサーバで必要となる大半の設定が可能です。本内容では特に利用者の多い BINDバージョン9を例に設定をご紹介します。

2.BINDさんの脆弱性チィーッスな面に関して

BINDは利用者が多く情報収集が容易な反面、脆弱性(ソフトウェアのセキュリティ欠陥)が度々発見されやすくもあります。クリティカル度合が高い脆弱性の場合はセキュリティアナウンスが複数のメディアから発信されますのでアップデートを怠らないようにしましょう。
【過去の脆弱性例】

3.BINDの設定概要

BINDの設定はおおまか以下の通り2つに分類されます。
  • DNSサーバの動作設定(/etc/named.conf)
  • ゾーンファイルの管理設定(/var/named/ゾーンファイル)
インストールした時点で汎用的な設定はすでに行われていますので、BINDの用途に合わせて追加で設定を行います。

namd.confについて

設定項目はステートメントと呼ばれる種別に分かれます。設定必須なパラメータの多くはoptionステートメントにあります。コメントアウトする場合には「//」を記述します。
//optionステートメント
options {
	listen-on port 53 { 127.0.0.1; };
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { localhost; };
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";
};

//loggingステートメント
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

//zoneステートメント
zone "." IN {
	type hint;
	file "named.ca";
};

//inzludeステートメント
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
 
ステートメント ステートメント内で設定する内容
option 何番ポートで受け付けを行うか、再帰的名前解決を許可するか、設定ファイルはどこにあるかなどをDNSサーバとしての振る舞いを決めるステートメントです。
zone コンテンツDNSサーバとして動作させる際に、ゾーンファイルがどこに置いてあるか、マスターかスレーブかなどを、記述するステートメントです。キャッシュDNSの場合はいじる必要なし。
control bindを起動・停止など操作する際にはインターフェースとしてrndcというプログラムが動作します。
このステートメントはrndcに関連した設定を行います。
include
named.confとは別の設定ファイルを読み込むための設定です。named.confは開けてみるとボリュームはさほどないように見えますが、標準的な設定(ルートDNSサーバの情報など)はincludeする別ファイルとして初めから存在します。
 acl
接続元の制限設定などを行う場合に利用するステートメントです。複数のIPアドレスやネットワークを1つのオブジェクトとして定義する際などに利用します。定義したオブジェクトはoptionステートメントの設定パラメータに流用することができ、設定ファイルが肥大するのを防いだりする際に利用します。

 

BINDのインストール・フィルタリングの許可

DNSのポート番号は53番です。TCPとUDP共に利用されますので解放します。また、BINDはrndcによる動作のコントロールを自身の953ポート経由を利用するため、ループバックアドレス宛ての953ポートアクセスを許可する必要があります。rndcによる起動管理はBINDの起動スクリプトでも利用されています。解放しないと下記のように起動に失敗します。
[root@example?~]# service named restart
Stopping named:

rndc: connect failed: 127.0.0.1#953: operation canceled
iptableの解放設定(iptablesを使用している場合に設定)
iptables -A INPUT -p tcp -d 127.0.0.1 --dport 953 -j ACCEPT
iptables -A OUTPUT -p tcp -s 127.0.0.1 --sport 953 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
rndcが起動スクリプトで使用されている(init.d/named スクリプト抜粋)
# Stop daemons.
 echo -n $"Stopping named: "
 [ -x /usr/sbin/rndc ] && /usr/sbin/rndc stop >/dev/null 2>&1;
 RETVAL=$?

bind-chrootについて

インストールにはサーバのセキュリティリスクを軽減させるため、BIND-chrootもインストールすることをおすすめします。BIND-chrootを利用すると指定したディレクトリをルートディレクトリとして動作させることが可能です。chrootの何が嬉しいかというとセキュリティ性が向上することです。例えば、BINDの脆弱性を突かれて、コードの実行を許してしまった場合でもコードの実行範囲をchrootディレクトリ内に留めることができ、重要な/etc配下のファイルなどに影響が及ぶ可能性を軽減できます。(100%安全というわけではありませんので、あくまでベター)

4.BINDのインストール

yumを利用してインストールが可能です。動作時は「named」という名前のデーモンプロセスで動作します。BINDはBIND本体、BIND-chrootはBIND-chrootパッケージ、BIND-utilsはdigやnslookupを利用するためのツールが含まれます。
[root@lab-ns01 ~]# yum install bind bind-chroot bind-utils

Copyright © 2021 たぐたぐ.com. All rights reserved.