3. 構築
3.5. セキュリティポリシーの定義
3.5.2. DNS サーバー
Ⅰ‑120 Copyright © 2003 IPA, All Rights Reserved.
Ⅰ‑121 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑49 ユーザとグループの追加(primaryadmin 役割)
# groupadd ‑g 24 bind
# useradd ‑u 24 ‑g 24 ‑d / ‑s /bin/false bind 次の作用も引き続き特権シェル環境にて行う。
ここでは、BIND 9.2.2rc2 のコンパイルに必要となるライブラリのランタイム・リ ンキング環境を設定する(リスト 3‑50)。
リスト 3‑50 ランタイム・リンキング環境設定(primaryadmin 役割)
# crle ‑u ‑l /usr/local/ssl/lib
# crle
Configuration file [2]: /var/ld/ld.config
Default Library Path (ELF): /usr/lib:/usr/local/lib:/usr/local/ssl/lib Trusted Directories (ELF): /usr/lib/secure
Command line:
crle ‑c /var/ld/ld.config ‑l /usr/lib:/usr/local/lib:/usr/local/ssl/lib ‑s /usr/lib/secure
次の作業も引き続き特権シェル環境にて行う。
ここでは、BIND 9.2.24c2 のコンパイルとインストールを行う(リスト 3‑51)。
なお、SSL を有効にするにするためのオプションを指定する。
リスト 3‑51 bind の Build(primaryadmin 役割)
# PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/local/bin
# export PATH
# cd /usr/local/bind‑9.2.2rc1
# ./configure ‑‑with‑openssl=/usr/local/ssl
# make
# make install
次に BIND の基本設定を行う。この作業も引き続き特権シェル環境にて行う。
なお、ここでは簡易に構築するため作業を特権シェル環境により行うが、運用時に はこれらの作業が mailadmin 役割により可能となるようにする。
ここでは、named.conf ファイルと zone ファイルなどを置くディレクトリを作成す る(リスト 3‑52)。
Ⅰ‑122 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑52 設定ファイル用ディレクトリの作成(primaryadmin 役割)
# mkdir /etc/named
# chown mailadmin /etc/named
ここでは、named.conf ファイルおよび zone ファイルを作成し編集を行う。また、
mailadmin 役割による編集が可能となるように、ファイルの所有者を mailadmin に変 更する(リスト 3‑53)。なお、zone ファイルの具体例については省略する。
リスト 3‑53 named.conf の作成と編集(primaryadmin 役割)
# cd /etc/named
# touch named.conf
# chown mailadmin named.conf
# chmod 644 named.conf
リスト 3‑54 named.conf
options {
directory "/etc/named";
forwarders {
200.200.0.1;
200.200.0.2;
};
};
zone "." {
type hint;
file "tscorp.cache";
};
zone "tscorp.com" {
type master;
file "tscorp.zone";
};
zone "0.0.127.in‑addr.arpa" {
type master;
file "localhost.zone";
};
zone "0.168.192.in‑addr.arpa" {
type master;
file "192.168.0.rev";
};
最後に BIND の起動スクリプトの編集を行う。この作業は admin 役割により行う。
標準でインストールされている sendmail の起動スクリプトに BIND の起動スクリプ
Ⅰ‑123 Copyright © 2003 IPA, All Rights Reserved.
トを追加することとし、これを編集する。admin 役割による編集が可能となるように、
所有者を admin 役割に変更する(リスト 3‑55)。
インタープリターがシステムシェル(sysh)となっていることを確認し、以降のセ キュリティ属性定義において設定する mailservice プロファイルがサービス起動時に 有効となるように、setprof コマンドによる定義を追加する。また BIND の起動用のス クリプトを編集する。なお、BIND は sendmail よりも前に起動しなければならない。
リスト 3‑55 sendmail スクリプトの編集(admin 役割)
$ cd /etc/init.d
$ cp ‑p sendmail sendmail.org
$ chown admin sendmail
リスト 3‑56 sendmail スクリプト:インタープリター
#!/bin/sysh
setprof mailserice
リスト 3‑57 sendmail スクリプト:named 起動スクリプト
if [ ‑f /usr/local/sbin/named ‑a ‑f /etc/named/named.conf ]; then echo 'starting internet domain name server.'
/usr/local/sbin/named ‑c /etc/named/named.conf &
fi
(2) ファイル
通常の Solaris 8 において適用されるセキュリティ属性、つまりファイルパーミッ ション、所有者、所属グループについては、特別な理由がない限り変更する必要はな い。
Ⅰ‑124 Copyright © 2003 IPA, All Rights Reserved.
表 3‑59 ファイル
# ファイル名 パーミッション owner group
1 /etc/named/*
2 /usr/local/doc/*
3 /usr/local/include/*
4 /usr/local/lib/*
5 /usr/local/man/*
6 /usr/local/bin/dig ‑rwxr‑xr‑x bin bin 7 /usr/local/bin/host ‑rwxr‑xr‑x bin bin 8 /usr/local/bin/isc‑config.sh ‑rwxr‑xr‑x bin bin 9 /usr/local/bin/nslookup ‑rwxr‑xr‑x bin bin 10 /usr/local/bin/nsupdate ‑rwxr‑xr‑x bin bin 11 /usr/local/sbin/dnssec‑keygen ‑rwxr‑xr‑x bin bin 12 /usr/local/sbin/dnssec‑makekeyset ‑rwxr‑xr‑x bin bin 13 /usr/local/sbin/dnssec‑signkey ‑rwxr‑xr‑x bin bin 14 /usr/local/sbin/dnssec‑signzone ‑rwxr‑xr‑x bin bin 15 /usr/local/sbin/lwresd ‑rwxr‑xr‑x bin bin 16 /usr/local/sbin/named ‑rwxr‑xr‑x bin bin 17 /usr/local/sbin/named‑checkconf ‑rwxr‑xr‑x bin bin 18 /usr/local/sbin/named‑checkzone ‑rwxr‑xr‑x bin bin 19 /usr/local/sbin/rndc ‑rwxr‑xr‑x bin bin 20 /usr/local/sbin/rndc‑confgen ‑rwxr‑xr‑x bin bin
(3) セキュリティポリシーの定義と設定(基本的ラベル構成のネットワーク)
最初に、基本的ラベル構成のネットワークを想定した、基本的なセキュリティポリ シーの定義と設定を行う。
この構成では、外部および内部のネットワークともに単一のラベルでのサービスに 対するアクセスが許可される。この場合、サービスに与える特権を少なくする最良の 方法は、サービスを形成する全てのプロセスが同一のラベルで動作するようにするこ とである。
この作業は secadmin 役割に移行し役割のワークスペースにて行うことが可能であ る。このときデフォルトのラベルは[ADMIN̲LOW]となる。
Ⅰ‑125 Copyright © 2003 IPA, All Rights Reserved.
ADMIN_LOW PUBLIC ADMIN_HIGH
services
named.conf etc.
syslog etc.
named 全ての
ネットワークアクセス に対する許可範囲
リスト 3‑58 基本的ラベル構成によるサービスのイメージ named プロセスの SL は[PUBLIC SERVICES]とする。
ネットワークからのアクセスは全てが[PUBLIC SERVICE]とラベル付けされる。
named.conf および zone ファイルの SL は[ADMIN̲LOW]とし、ネットワークアク セスに関連するプロセス(named および派生するプロセス)から読み込みのみ が許可される。
(A) ファイル属性定義
次のサービス提供に関わるファイル属性をそれぞれのファイルに適用する。なお、
設定の手順については 3.4.4.1(1)(A)に記載している。
表 3‑60 サービス用ファイル属性
# ファイル名 ラベル 強制特権 許容特権
1 /usr/local/sbin/named ADMIN̲LOW none all 2 /usr/local/sbin/lwresd ADMIN̲LOW none all
次の管理に関わるファイルの属性をそれぞれのファイルに適用する。なお、実際 には初期設定から変更の必要はない。ただし、DNSSEC の設定および検証は行ってい ない。
Ⅰ‑126 Copyright © 2003 IPA, All Rights Reserved.
表 3‑61 管理用ファイル属性
# ファイル名 ラベル 強制特権 許容特権
1 /usr/local/bin/dig ADMIN̲LOW none none 2 /usr/local/bin/host ADMIN̲LOW none none 3 /usr/local/bin/isc‑config.sh ADMIN̲LOW none none 4 /usr/local/bin/nslookup ADMIN̲LOW none none 5 /usr/local/bin/nsupdate ADMIN̲LOW none none 6 /usr/local/sbin/dnssec‑keygen ADMIN̲LOW none none 7 /usr/local/sbin/dnssec‑makekeyset ADMIN̲LOW none none 8 /usr/local/sbin/dnssec‑signkey ADMIN̲LOW none none 9 /usr/local/sbin/dnssec‑signzone ADMIN̲LOW none none 10 /usr/local/sbin/named‑checkconf ADMIN̲LOW none none 11 /usr/local/sbin/named‑checkzone ADMIN̲LOW none none 12 /usr/local/sbin/rndc ADMIN̲LOW none none 13 /usr/local/sbin/rndc‑confgen ADMIN̲LOW none none
(B) プロセス属性定義
次のサービス提供に関わる実行属性をサービス用の mailservice プロファイルに 追加する。なお、設定の手順については 3.4.3.4(2)(A)に記載している。
表 3‑62 サービス用プロセス属性
# ファイル名 User Group Label Clearance 特権
1 /etc/init.d/
sendmail
root (euid)
sys (egid)
N/A N/A all 2 /usr/local/sbin/
named
root (uid)
N/A PUBLIC services
PUBLIC services
file̲mac̲read net̲privaddr sys̲net̲config sys̲suser̲compat 3 /usr/local/sbin/
lwresd
root (uid)
N/A PUBLIC services
PUBLIC services
file̲mac̲read net̲privaddr sys̲net̲config sys̲suser̲compat
(C) ネットワーク属性定義
次のネットワークに関わるセキュリティ属性を適用する。なお、設定手順につい てはそれぞれに、3.4.7.1(2)(A)、3.4.7.2(2)(A)、3.4.7.3(2)(A)に記載している。
Ⅰ‑127 Copyright © 2003 IPA, All Rights Reserved.
表 3‑63 インターフェース属性
# Interface Mini Label Max Label Label Clearance 1 hme0 PUBLIC PRIVATE
services
PUBLIC services
PUBLIC services 表 3‑64 テンプレート属性
# Template Mini Label Max Label Label Clearance 1 public̲services PUBLIC
services
PUBLIC services
PUBLIC services
PUBLIC services 表 3‑65 ネットワーク属性
# Host/Wildcard Hostname IP Address Prefix Length Template 1 Wildcard N/A 0.0.0.0 N/A public̲services
3.5.2.2. djbdns
djbdns については、2002 年 12 月において、http://cr.yp.to/djbdns.html から入手が可 能な djbdns‑1.05 について実装と検証を行った。
djbdns を イ ン ス ト ー ル す る に あ た っ て デ ー モ ン の 監 視 お よ び ロ グ の 管 理 を 行 う daemontools も併せてインストールするため、http://cr.yp.to/daemontools.html から入 手が可能な daemontools‑0.76 について実装と検証を行った。
なお、以下のサービス関するセキュリティ属性の設定が必要になる。これらについては、
基本的なサービスのセキュリティ定義の設定後に行う。
tinydns ‑ 管理する zone の名前解決を行う。
dnscache ‑ 外部の zone の名前解決を行う。
axfrdns ‑ スレーブサーバーへ対してゾーン転送を行う。
ここで、インストールした djbdns および daemontools のディレクトリ構成を表 3‑66 に 示す。
Ⅰ‑128 Copyright © 2003 IPA, All Rights Reserved.
表 3‑66 ディレクトリの構成
# ファイルパス 内容
1 /usr/local/admin/daemontools‑0.76/command daemontolls のプログラムファイル 2 /command daemontools へのシンボリックリンク 3 /service svscan プログラムの監視対象ディレクト
リ
4 /usr/local/djbdns/bin djbdns 関連の実行プログラムのインス トール先ディレクトリ
5 /var/dnscache ローカルキャッシュサーバー用管理ディ レクトリ
6 /var/dnscachex 外部キャッシュサーバー用管理ディレク トリ
7 /var/tinydns ゾーン DNS サーバー用管理ディレクトリ 8 /var/axfrdns ゾーン転送用管理ディレクトリ
(1) インストール
ここでは、通常の Solaris におけるインストレーションと同様の手順によるインス トールを行う。
最初に必要なパッケージの追加やソースの展開を行う、この作業は admin 役割に移 行し役割のワークスペースにて行うことが可能である。このときデフォルトのラベル は[ADMIN̲LOW]となる。
リスト 3‑59 ソースの展開(admin 役割)
$ cd /usr/local
$ gzcat daemontools‑0.76.tar.gz │ tar xvf ‑
$ gzcat djbdns‑1.05.tar.gz │ tar xvf ‑
(A) ユーザおよびグループの追加
次に djbdns のそれぞれのデーモン、dnscache、tinydns および axfrdns を実行す るユーザ dnscache、tinydns、axfrdns とログを管理するユーザ djblog を作成する。
なお、簡易に構築するため作業を特権シェル環境により行うが、ユーザとグルー プの追加は admin 役割にて SMC を利用することでも可能である。
Ⅰ‑129 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑60 ユーザとグループの追加(primaryadmin 役割)
# groupadd djbdns
# useradd ‑s /bin/false ‑d /usr/local/djbdns ‐g djbdns dnscache
# useradd ‑s /bin/false ‑d /usr/local/djbdns ‐g djbdns tinydns
# useradd ‑s /bin/false ‑d /usr/local/djbdns ‐g djbdns axfrdns
# useradd ‑s /bin/false ‑d /usr/local/djbdns ‐g djbdns djblog
(B) daemontools のインストール
daemontools のインストール作業については、特権シェル環境において実行する。
リスト 3‑61 daemontools のインストール(primaryadmin 役割)
# PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/local/bin
# export PATH
# cd /usr/local/admin/daemontools‑0.76
# package/install
deamontools をインストールすると、デフォルトでは inittab に以下の行が追加 され init 経由で起動する。しかし、ここでは rc スクリプトとして起動し djbdns を監視することとする。よって/etc/inittab に追加された以下の行を削除する必要 がある。
リスト 3‑62 /etc/inittab の削除項目 SV:123456:respawn:/command/svscanboot
(C) djbdns のインストール
djbdns のインストール作業については、特権シェル環境において実行する。
なお、デフォルトでは djbdns のバイナリは/usr/local 以下にインストールされる が、ここではインストール先を/usr/local/djbdns に変更するため conf‑home ファイ ルを変更する