BIND9について

/ LPIC / Comment[0]

named.confの設定

named.confはステートメントとオプションで構成されています。

主なステートメントと簡単な説明
acl ACLの定義
controls rndcによる制御を許可するホストの指定
include 外部ファイルを読み込む
key 認証情報の設定
options オプション
zone ゾーンの定義

acl

アクセス制御リストを定義します。

acl localnet {
  10.0.0.0/16;
  192.168.1.0/24;
};

include

指定した外部ファイルを読み込むステートメントです。

include "/etc/bind/file.zone";

controls

namedの制御を許可するホストを指定するステートメントです。

controls {
  inet 127.0.0.1 allow { localhost; };
};

options

namedの詳細オプションを指定するステートメントです。

主なオプションと簡単な説明
directory ゾーンファイルのディレクトリ
datasize データセグメントサイズの上限
coresize コアファイルサイズの上限
max-cache-size 最大キャッシュサイズbyte
recursion 再帰問い合わせを許可するか否か
recursive-clients 再帰問い合わせの最大同時接続数
allow-query 問い合わせを許可するホスト
allow-recursion 再帰問い合わせを許可するホスト
allow-transfer ゾーン転送を許可するホスト
allow-update ゾーン情報の動的アップデートを許可するホスト
blackhole 受け付けないホスト
forwarders 問い合わせの回送先DNSサーバ
forward forwardersの回送方法
notify ゾーンデータの更新をスレーブサーバに通知するか否か
version バージョン情報

LPIC公式wikiにも載ってる重要と思われるオプション

recursion

書式:recursion yes|no;
再帰的な問い合わせを受け付けるか否かを指定します。キャッシュサーバであればyes。

recursive-clients

書式:recursive-clients クライアント数;
再帰問い合わせを同時に受け付ける数を指定します。

max-cache-size
最大キャッシュサイズを指定します。単位はbyte。設定しないと無制限になってしまうので注意。
forwarders

書式:foward only|first;
書式:forwarders { IPアドレス; };
フォワードとはゾーン情報を持っていない場合別のDNSサーバに問い合わせる機能です。
forward firstとした場合、自分が情報を持っていない場合フォワードによる名前解決を試し、ダメだった場合自信が再帰問い合わせを行います。onlyとした場合はフォワードのみでの解決を行い自ら再帰問い合わせはしません。

zone

ゾーン名、ゾーンタイプ、ゾーンファイルなどの設定を行うステートメントです。ゾーンタイプには以下があります。

hint ルートDNSサーバを指定
master マスターDNSサーバである
slave スレーブDNSサーバである

zoneの記述例

マスターサーバ(10.0.1.1)
zone "local.net" {
  type master;
  file "local.net.zone";
};
スレーブサーバ
zone "local.net" {
  type slave;
  file "local.net.zone";
  master { 10.0.1.1; };
};

named.confの設定例

マスター
options {
  directory "/var/named";
  version "blah";
  notify yes;
  allow-transfer { 10.0.1.2; };
  recursion no;
};

zone "local.net" IN {
  type master;
  file "local.net.zone";
};
スレーブ
options {
  directory "/var/named";
  version "blah";
  recursion no;
};

zone "local.net" IN {
  type slave;
  masters { 10.0.1.1; };
  file "local.net.zone";
};
キャッシュサーバ
options {
  directory "/var/named";
  recursion yes;
  recursive-clients 100;
  allow-query { 10.0.0.0/16; localhost; };
  allow-recursion { 10.0.0.0/16; localhost; };
  max-cache-size unlimited;
  max-cache-ttl 86400;
  max-ncache-ttl 7200;
  version "blah";
};

zone "." IN {
  type hint;
  file "named.root";
};

zone "local.net" IN {
  type master;
  file "local.net.zone";
};

rndcコマンドでnamedを制御

namedはrndcコマンドで制御できます。

書式:rndc [サブコマンド]

refresh ゾーンデータベースをリフレッシュ
status 統計情報を/var/named/named.statsに書き出す
status ステータスを表示
dumpdb キャッシュ内容をファイルに出力
reload ゾーン ゾーンファイルを再読込する
stop 終了する
halt 直ちに停止

ゾーンファイルの作成、管理

ゾーンに関する情報はそれぞれのゾーンファイルに記述します。ゾーンファイルは/etc/named.confoptionsセクションでディレクトリを指定し、zoneセクションでファイル名を指定することで読み込みます。

ゾーンファイルの基本的な書式: 名前 [TTL] IN リソースレコードタイプ 値

ゾーンファイルには$ORIGIN,$TTL,リソースレコードが含まれます。

$ORIGINディレクティブ
ドメイン名が明示されていないレコードで保管するドメイン名
$TTLディレクティブ
ほかのDNSサーバのキャッシュ時間を指定

リソースレコードではゾーン情報を記述します。リソースレコードの中では@は自身のドメインを指します。ドメイン名はFQDNで指定します。ルートを意味する.を忘れないように注意が必要です。.がない場合は$ORIGINで指定されたドメイン名が末尾に追加されます。

リソースレコードタイプ
SOA管理情報を記述
NSDNSサーバ
MXメールサーバ
Aホストに対応するIPアドレス
AAAAホストに対応するIPv6アドレス
CNAME別名のホスト名に対する正規名
PTRIPアドレスに対応するホスト名

SOAレコード

SOAはゾーンの基本情報を記述するレコードです。

書式:ゾーン名 IN SOA DNSサーバ メールアドレス ( Serial; Refresh; Retry; Expire; Negative TTL )

@ IN SOA ns.example.com. master.example.net. (
  2015033101  ; Serial
  10800         ; Refresh
  600           ; Retry
  86400        ; Expire
  3600 )        ; Negative TTL
@ IN SOA ns.example.com. master.example.net. (
DNSサーバのホスト名と管理者のメールアドレスが記述されています。メールアドレスは@ではなく.に置き換えて記述します。master@example.net
Serial
マスターサーバとスレーブサーバでゾーンファイルの整合性を取るためのシリアル番号です。数字が大きい方が新しいものと判断されるため更新日のYYYYMMDD連番のフォーマットで記述される場合がほとんどです。
Refresh
スレーブがマスターのゾーン情報変更をチェックする間隔を指定
Retry
スレーブがマスターにアクセスできなかった場合に再試行するまでの秒数
Expire
スレーブがマスターにアクセスできなかった場合にゾーン情報を破棄するまでの秒数
Negative TTL
ネガティブキャッシュ(そのドメインは存在しないという返答のキャッシュ)の有効期限

NSレコード

DNSサーバをFQDNで指定します。

書式:ゾーン名 IN NS DNSサーバ名

example.com. IN NS ns.example.com.
example.net. IN NS ns2.example.com.

MXレコード

メールサーバ名を指定します。

書式:ゾーン名 IN MX プリファレンス値 メールサーバ名

プリファレンス値は優先値を意味し、値が小さいほど高い優先度を持ちます。10刻みで指定するのが一般的ですが、特に決まりはありません。

example.com. IN MX 10 mx.example.com.
example.com. IN MX 20 mail.example.com.

A,AAAAレコード

ホスト名に対応するIPアドレスを記述するレコードです。

書式:ホスト名 IN A IPアドレス

ns.example.com. IN A 10.0.0.1
ns.example.com. IN AA 2001:c90:88c3:42f:1436:696f:941a:72ed

CNAMEレコード

ホスト名の別名を指定するレコードです。

書式:別名 IN CNAME ホスト名

ftp.example.com. IN CNAME www.example.com.

PTRレコード

IPアドレスに対応するホスト名を記述します。IPアドレスのオクテットを逆に並べ、in-addr.arpa.を加えて記述します。

1.0.0.10.in-addr.arpa. IN PTR www.example.com.

BIND9のセキュリティ対策

BIND9の基本的なセキュリティ対策。編集ファイルはnamed.confです。

ゾーン転送の制限

当たり前ですがゾーン転送は必要なホストのみに許可しましょう。外部から転送できてしまったら内部のネットワーク構成がバレてしまいます。

zone "example.com" {
  allow-transfer { 10.0.1.2; };
};

問い合わせホストを制限

問い合わせを許可する範囲をゾーンに限定することで、不要な利用や攻撃を阻止できます。

options {
  allow-query { 10.0.0.0/16; };
  allow-recursion { 10.0.0.0/16; };
};

zone "example.com" {
  allow-query { any; };
};

バージョンの隠蔽

直接的な効果は薄いですが、バージョンを隠すことで脆弱性が見つかった際にターゲットにされることを回避できるかもしれません。

options {
  version "blah";
:
};

BINDのバージョンを調べるコマンド
$ dig @対象サーバ version.bind chaos txt

関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可