• 検索結果がありません。

djbdns  (1) djbdns の概要

13   COMMERCIAL IP SECURITY OPTION

3.5.  セキュリティポリシーの定義

3.5.2.  DNS サーバー

3.5.2.2.  djbdns  (1) djbdns の概要

djbdns は、qmail で有名な D. J. Bernstein 氏の作品で、「安全、確実、高速、簡潔、

設定も簡単な DNS サービスとツール群」として紹介31されている。 

djbdns および関連プログラム(daemontools、ucspi‑tcp)は Red Hat Linux では標準 パッケージとして用意されておらず、また SELinux でもそれらのセキュリティポリ シーは準備されていない。また、後述するように djbdns は SELinux と相性が悪いため 多少トリッキーな方法をとらなければならないのが難点である。 

djbdns は、補助プログラムとして daemontools や ucspi‑tcp が必要であり、djbdns も含めて事前にインストールされているものとして説明を行う。プログラムのインス トールディレクトリパスはソースパッケージからビルドするときの標準的なまたは習 慣的に使用されるパスを使用する。 

表 3‑11  djbdns 関連プログラムのインストールパス一覧 

#  ファイルパス  内 容 

1 /package  daemontools のソースのインストール先ディレク トリ 

2 /package/admin/(次行に続く) daemontools‑x.xx/command 

このディレクトリに実行プログラムの実体がイン ストールされる。x.xx はバージョン番号で、現在 は 0.76 である。 

3 /command  daemontools の実行プログラムの 

4 /service  svscan プログラムの監視対象ディレクトリ  5 /usr/local/bin  djbdns 関連の実行プログラムのインストール先

ディレクトリ 

6 /var/dnscache  ローカルキャッシュサーバー用管理ディレクトリ 7 /var/dnscachex  外部キャッシュサーバー用管理ディレクトリ  8 /var/tinydns  ゾーン DNS サーバー用管理ディレクトリ  9 /var/axfrdns  ゾーン転送用管理ディレクトリ 

djbdns を起動する場合は、#6 から#9 に示すようなディレクトリを/service ディレ クトリにシンボリックリンクを張ることにより daemontools が自動的に目的のプログ ラムを起動してくれる。daemontools は管理ディレクトリ内の log ディレクトリにロ グを出力するほか、run スクリプトも生成する。また、SELinux のコンセプトとしては、

「ログファイル」と「実行ファイル」には別々のセキュリティコンテキストをラベル 付けして、読み書きのアクセス権限やプログラム実行時の domain 遷移を設定しなけれ

       

 

Ⅱ‑110  Copyright © 2003 IPA, All Rights Reserved.

ばならない。ファイルの type を自動的に遷移する file̲type̲auto̲trans マクロが用 意されているが、複数の type(ログファイル用と実行ファイル用)に遷移させることは できないので、djbdns および daemontools を SELinux 上で使用する場合は工夫が必要 である。1 つは、daemontools を修正して run スクリプトを log ディレクトリ下に作成 しないようにすることだが、これは現実的ではない。もう 1 つは、permissive モード で djbdns を実行させた後、つまり実行時に作成されるファイルがすべて作成された後 に、ファイルのセキュリティコンテキストを設定する方法である。run スクリプトは 一旦作成されると変更されないため、この方法でも問題ない。実行後作成されるファ イルとしては、 supervise もある。 

selinux/policy ディレクトリ下で make relabel を実行する方法もあるが、ファ イルひとつを変更する場合は、chcon コマンドを使用してリスト 3‑137 のように設定 する方法もある(①)。また、②のように setfiles コマンドを使用して、djbdns に関 連してファイルのセキュリティコンテキストをすべて設定しなおす方法もある。この 例は、管理ディレクトリが /var/dnscache を想定している。 

リスト 3‑137  ファイルコンテキストの設定例 

 

① chcon system̲u:object̲r:djbdns̲exec̲t /var/dnscache/log/run 

② setfiles /usr/src/selinux/policy/file̲contexts/program/djbdns.fc /var   

(2) セキュリティポリシー設定ファイル 

djbdns および daemontools のセキュリティポリシーおよびファイルのセキュリティ コンテキスト定義ファイルは標準で組み込まれていない。表 3‑12 に djbdns の、表  3‑13 に daemontools の設定ファイルの名称を例として記載する。次節に説明するセ キュリティポリシーとセキュリティコンテキストをそれぞれのファイルに記述してシ ステムに組み込む必要がある。 

表 3‑12  djbdns のポリシー設定ファイル一覧 

#  ファイルパス  内 容 

1 policy/file̲contexts/program/djbdns.fc ファイルのセキュリティコンテキスト 2 policy/domains/program/djbdns.te セキュリティポリシー   

表 3‑13  daemontools のポリシー設定ファイル一覧 

#  ファイルパス  内 容 

1 policy/file̲contexts/program/daemontools.fc ファイルのセキュリティコンテ キスト 

2 policy/domains/program/daemontools.te セキュリティポリシー   

(3) ファイルのセキュリティコンテキスト 

(A) daemontools 関連のセキュリティコンテキスト 

リスト 3‑138 は、daemontools 関連のファイルのセキュリティコンテキスト一覧 である。①は daemontools のコマンドのシンボリックリンクがインストールされる ディレクトリである。②はコマンドのシンボリックリンクだがこのファイルには実 行ファイルと同じ daemontools̲exec̲t の type を付与する。③は各種デーモンの 管 理 デ ィ レ ク ト リ を シ ン ボ リ ッ ク リ ン ク す る た め の 監 視 用 デ ィ レ ク ト リ で 、

daemontools̲serv̲t という type を付与する。④は daemontools のトップディレ クトリで、この下にソースファイルやコマンドの実体が置かれる。ソースファイル 等には新規 type を付与する必要はないので src̲t とし、⑤でコマンド類には daemontools̲exec̲t という実行プログラムであることを識別できるような名称 の type を付与する。 

リスト 3‑138  daemontools のセキュリティコンテキスト 

 

① /command      system̲u:object̲r:bin̲t 

② /command/(.*)?      system̲u:object̲r:daemontools̲exec̲t

③ /service(/.*)?      system̲u:object̲r:daemontools̲serv̲t

④ /package(/.*)?      system̲u:object̲r:src̲t 

⑤ /package/admin/daemontools.*/command(/.*)?  

       system̲u:object̲r:daemontools̲exec̲t  

(B) djbdns 関連のセキュリティコンテキスト 

リスト 3‑139 は、root サーバーの IP アドレスを格納するファイルである。BIND でいうこところの named.root や named.ca ファイルに相当する。 

 

Ⅱ‑112  Copyright © 2003 IPA, All Rights Reserved.

リスト 3‑139  dnsroots.global 用セキュリティコンテキスト 

 

   /etc/dnsroots.global      system̲u:object̲r:djbdns̲etc̲t   

リスト 3‑140 は、djbdns の実行プログラムに付与するセキュリティコンテキス トである。デフォルトのインストール先は/usr/local/bin ディレクトリである。 

リスト 3‑140  djbdns の実行ファイルのセキュリティコンテキスト 

 

/usr/local/bin/axfr‑get       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/axfrdns.*      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnscache.*       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsfilter      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsip      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsipq       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsmx      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsname      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsq       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnsqr      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnstrace       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnstracesort       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/dnstxt       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/pickdns.*      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/random‑ip      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/rbldns.*       system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/tinydns.*      system̲u:object̲r:djbdns̲exec̲t  /usr/local/bin/walldns.*      system̲u:object̲r:djbdns̲exec̲t   

リスト 3‑141(ローカルキャッシュサーバー)、リスト 3‑142(外部キャッシュ サーバー、リスト 3‑143(ゾーン DNS サーバー)、リスト 3‑144(ゾーン転送用サー バー)は、DNS サーバーを構築する際の目的別の管理ディレクトリである。それぞれ の管理ディレクトリは、dnscache‑conf、tinydns‑conf、axfrdns‑conf コマンドで 作成される。管理ディレクトリの構造を簡単に表 3‑14 に説明する。 

表 3‑14  管理ディレクトリの構造 

#  ディレクトリ・ファイル  内 容 

1 env ディレクトリ  プログラムの動作パラメタで、ファイル名が環境変 数名、ファイル内容がその値となる 

2 log ディレクトリ  ログ格納ディレクトリ。run スクリプトも含まれる  3 root ディレクトリ  クライアントの IP アドレス、root サーバー、DNS サー

バーを登録するディレクトリ、tinydns の data ファ イル等が置かれる。 

4 supervise ディレクトリ  supervise コマンドがデーモンを監視する作業ディ レクトリ 

5 run スクリプト  デーモンを起動するスクリプト 

管理ディレクトリを作成する権限の設定は行っていないため、必ず permissive モードで作成しなければならない。また、log ディレクトリ下の run スクリプトや supervise ディレクトリはプログラムが起動された後に作成されるので、セキュリ ティコンテキストの再設定が必要である。 

また、それぞれの管理ディレクトリの構成は使用目的により多少異なるが、ほぼ 同じ構成をとっている。ファイルのセキュリティコンテキストを定義する場合に注 意しなければならないのは、リスト 3‑141 のリストの例で説明すると、①の log お よびそのディレクトリ下のファイルに対するセキュリティコンテキストの定義と、

②の log/run ファイルに対するセキュリティコンテキストの定義の順序である。こ の順序を逆にすると、log/run ファイルにログファイルの type djbdns̲ver̲log̲t が付与されてしまい、run スクリプトを実行できなくなる。 

リスト 3‑141 は、ローカルキャッシュサーバー用のファイル構成とそのファイル 群に付与するセキュリティコンテキストである。ローカルキャッシュサーバーとは、

単独で稼動しているマシンで、外部 DNS を参照するキャッシュサーバーである。自 システム内からのみの名前解決要求が出されるサーバーである。 

リスト 3‑141  ローカルキャッシュサーバー用管理ディレクトリ 

 

   /var/dnscache       system̲u:object̲r:djbdns̲var̲t     /var/dnscache/env(/.*)?         system̲u:object̲r:djbdns̲var̲env̲t 

① /var/dnscache/log(/.*)?         system̲u:object̲r:djbdns̲var̲log̲t     /var/dnscache/root(/.*)?        system̲u:object̲r:djbdns̲var̲root̲t     /var/dnscache/seed      system̲u:object̲r:djbdns̲var̲seed̲t     /var/dnscache/supervise(/.*)?   system̲u:object̲r:djbdns̲var̲supervise̲t    /var/dnscache/run       system̲u:object̲r:djbdns̲exec̲t 

② /var/dnscache/log/run       system̲u:object̲r:djbdns̲exec̲t   

リスト 3‑142 は、外部キャッシュサーバー用のファイル構成とそのファイル群に

 

Ⅱ‑114  Copyright © 2003 IPA, All Rights Reserved.

付 与 す る セ キ ュ リ テ ィ コ ン テ キ ス ト で あ る 。 外 部 キ ャ ッ シ ュ サ ー バ ー と は localhost 以外のマシンから利用可能なサーバーで、構造的にはローカルキャッ シュサーバーとほぼ同じである。 

リスト 3‑142  外部キャッシュサーバー用管理ディレクトリ 

 

   /var/dnscachex       system̲u:object̲r:djbdns̲var̲t     /var/dnscachex/env(/.*)?       system̲u:object̲r:djbdns̲var̲env̲t     /var/dnscachex/log(/.*)?       system̲u:object̲r:djbdns̲var̲log̲t     /var/dnscachex/root(/.*)?      system̲u:object̲r:djbdns̲var̲root̲t     /var/dnscachex/seed      system̲u:object̲r:djbdns̲var̲seed̲t     /var/dnscachex/supervise(/.*)? system̲u:object̲r:djbdns̲var̲supervise̲t     /var/dnscachex/run       system̲u:object̲r:djbdns̲exec̲t 

   /var/dnscachex/log/run         system̲u:object̲r:djbdns̲exec̲t   

リスト 3‑143 は、ゾーン DNS サーバー用のファイル構成とそのファイル群に付与 するセキュリティコンテキストである。ゾーン DNS サーバーとは特定ホストのホス ト名情報を受け持つ DNS サーバーである。 

リスト 3‑143  ゾーン DNS サーバー用管理ディレクトリ 

 

   /var/tinydns       system̲u:object̲r:djbdns̲var̲t     /var/tinydns/env(/.*)?         system̲u:object̲r:djbdns̲var̲env̲t     /var/tinydns/log(/.*)?         system̲u:object̲r:djbdns̲var̲log̲t     /var/tinydns/root(/.*)?        system̲u:object̲r:djbdns̲var̲root̲t     /var/tinydns/root/add‑alias    system̲u:object̲r:djbdns̲exec̲t     /var/tinydns/root/add‑childns  system̲u:object̲r:djbdns̲exec̲t     /var/tinydns/root/add‑host     system̲u:object̲r:djbdns̲exec̲t     /var/tinydns/root/add‑mx       system̲u:object̲r:djbdns̲exec̲t     /var/tinydns/root/add‑ns       system̲u:object̲r:djbdns̲exec̲t     /var/tinydns/seed      system̲u:object̲r:djbdns̲var̲seed̲t     /var/tinydns/supervise(/.*)?   system̲u:object̲r:djbdns̲var̲supervise̲t     /var/tinydns/run       system̲u:object̲r:djbdns̲exec̲t 

   /var/tinydns/log/run       system̲u:object̲r:djbdns̲exec̲t   

リスト 3‑144 は、djbdns からセカンダリサーバーとして運用している BIND に ゾーンを転送する場合の、管理ディレクトリのファイル構成とそのファイル群に付 与するセキュリティコンテキストである。