DNSリゾルバのニューフェイス「Unbound」

 DNSキャッシュ汚染に対する防御力強化も

株式会社 サードウェア
岩崎 登f
2008/10/17


Unboundの基本的な設定

 Unboundは高機能ではあるものの、基本的な設定は至ってシンプルに設計されている。通常のDNSキャッシュサーバとして動かすだけであれば、デフォルトの設定値で動作させることができ、動作設定からレコードの設定までをunbound.confという1つのファイルのみで行うことができる。

 デフォルト設定であっても、DNSキャッシュ汚染の攻撃を受けにくい動作になっているのがUnboundの利点である。

1. アクセス制限の設定

 unbound.confのデフォルト設定値では、ローカルエリアネットワーク内からのアクセスを許可する設定となっている。ローカルエリアネットワーク内でさらにセグメントを制限したい場合や特定のクライアントのみで動作させたい場合などは、143行目付近にある[access-control]を設定する。

 以下の設定は「ローカルエリアネットワーク内、192.168.11.0/24のセグメントのみ」のアクセスを許可する設定である。

/etc/unbound/unbound.conf 136行目から

136     # control which clients are allowed to make (recursive) queries
137     # to this server. Specify classless netblocks with /size and action.
138     # By default everything is refused, except for localhost.
139     # Choose deny (drop message), refuse (polite error reply), allow.
140     # access-control: 0.0.0.0/0 refuse
141     # access-control: 127.0.0.0/8 allow
142     # access-control: ::0/0 refuse
143     # access-control: ::1 allow
144     # access-control: ::ffff:127.0.0.1 allow
145
146 access-control: 192.168.11.0/24 allow

 Unboundはこれだけの設定で、DNSキャッシュサーバとして動作してしまう。簡易なDNSコンテンツサーバとしての機能を利用する場合は、さらに以下のレコード設定を追加する。

2. レコードの設定

 レコードの設定は、334行目付近に以下のように追加する。レコードの追加は、/etc/hostsと同様に、[local-data]の設定を列挙すればいい。

/etc/unbound/unbound.conf 334行目から

334     # You can redirect a domain to a fixed address with
335     # (this makes example.com, www.example.com, etc, all go to 192.0.2.3
336     # local-zone: "example.com" redirect
337     # local-data: "example.com A 192.0.2.3"
338
339 local-data: "host-a.localnet.jp A 192.168.11.10"
340 local-data: "host-b.localnet.jp A 192.168.11.18"
341 local-data: "host-c.localnet.jp A 192.168.11.15"

起動と動作確認

 ソースコンパイルされたUnboundには起動スクリプトが含まれていない。Unbound本体は、[/sbin/unbound]としてインストールされているので、直接コマンドを指定して起動する。起動の際、設定ファイルを読み込むオプションを指定する。

# /sbin/unbound -c /etc/unbound/unbound.conf

 Unboundの起動を確認する手段として、プロセスの確認、リッスンポートの確認をする。

# ps ax | grep unbound
4499     ?    Ss 0:01 /usr/sbin/unbound -c /etc/unbound/unbound.conf

# netstat -nap | grep 53
tcp        0      0 0.0.0.0:53        0.0.0.0:*        LISTEN        4499/unbound
udp        0      0 0.0.0.0:53        0.0.0.0:*                   4499/unbound

※注意:BINDが起動している場合、53ポートをBINDが使用しているため、Unboundが正常に動作しない。Unboundを起動する前にBINDを終了する必要がある。

■リゾルバの設定

 Unboundが起動したら、名前の解決をUnboundで行うため、クライアントのリゾルバを設定する。リゾルバの設定は、/etc/resolv.confの[nameserver]の項目を編集する。以下の例は、Unboundが起動しているサーバのIPアドレスが192.168.11.10の場合のresolv.confの設定例である。

nameserver 192.168.11.10

■名前解決の確認

 正常に名前の解決が行われているかを確認するために、digコマンドを使用する。digコマンドはBINDとともに提供されているユーティリティであるため、BIND関連のパッケージをインストールしていない場合は使用できない。この場合は、Unbound開発元のNLnet LabsからNSDとともに提供されているツール「drill」を使用する。

# dig host-a.localnet.jp

; <<>> DiG 9.4.2-P1 <<>> host-a.localnet.jp
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54759
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;host-a.localnet.jp.                IN        A

;; ANSWER SECTION:
host-a.localnet.jp.            3600 IN        A 192.168.11.10

;; Query time: 7 msec
;; SERVER: 192.168.11.10#53(192.168.11.10)
;; WHEN: Tue Sep 23 00:45:01 2008
;; MSG SIZE rcvd: 38

そのほかにも豊富な機能が

 Unboundで名前解決を行うための基本的な導入は、以上のように簡単な設定で実現できる。Unboundにはさらに、IPv6DNSSECといった機能も搭載されている。こうした細かい機能については、Unboundとともにインストールされているマニュアル(英語)に記載されているので、興味がある方は参照してほしい。

 このようにUnboundは、BINDに比べて非常に簡単な設定で外部からのアクセスを制限し、DNSキャッシュポイズニングの攻撃を受けにくい状態で動作する。これは、高性能であるがゆえに複雑になったBINDの設定項目が原因となり、ユーザーが自らセキュリティホールを発生させてしまう現象を解決してくれる。特に、外部に公開せず、ローカルエリア内でのみ名前の解決をする環境であれば、無理にBINDを使うよりも、シンプルなUnboundの利用を検討してみてはどうだろうか。

前のページ
2/2

Index
DNSリゾルバのニューフェイス「Unbound」
 DNSキャッシュ汚染に対する防御力強化も
  Page 1
 DNSとは、そしてUnboundとは
 Unbound導入がオススメできるわけ
 どこから入手できる?
 Unboundの導入手順
 コラム 自宅にだってDNSキャッシュサーバ
  Page 2
 Unboundの基本的な設定
 起動と動作確認
 そのほかにも豊富な機能が

Linux Square全記事インデックス


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間