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.confのoptionsセクションでディレクトリを指定し、zoneセクションでファイル名を指定することで読み込みます。
ゾーンファイルの基本的な書式: 名前 [TTL] IN リソースレコードタイプ 値
ゾーンファイルには$ORIGIN,$TTL,リソースレコードが含まれます。
- $ORIGINディレクティブ
- ドメイン名が明示されていないレコードで保管するドメイン名
- $TTLディレクティブ
- ほかのDNSサーバのキャッシュ時間を指定
リソースレコードではゾーン情報を記述します。リソースレコードの中では@は自身のドメインを指します。ドメイン名はFQDNで指定します。ルートを意味する.を忘れないように注意が必要です。.がない場合は$ORIGINで指定されたドメイン名が末尾に追加されます。
SOA | 管理情報を記述 |
---|---|
NS | DNSサーバ |
MX | メールサーバ |
A | ホストに対応するIPアドレス |
AAAA | ホストに対応するIPv6アドレス |
CNAME | 別名のホスト名に対する正規名 |
PTR | IPアドレスに対応するホスト名 |
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
- 関連記事
-
-
PAM Pluggable Authentication Modules 2015/05/02
-
Nginx 2015/04/09
-
BIND9について 2015/03/30
-
DNSのお話 2015/03/30
-
LPI201合格しました 2014/09/20
-