3. 構築
3.5. セキュリティポリシーの定義
3.5.3. SMTP サーバー
ここでは、SMTP サーバーとして以下のパッケージに関する定義と設定の例を示す。
sendmail qmail postfix
3.5.3.1. sendmail
sendmail については、2002 年 12 月において、http://www.sendmail.org から入手が可能 な sendmail 8.12.6 について実装と検証を行った。
sendmail に付随して、BarklayDB が必要となるため、Sun Site からの入手が可能である、
BarklayDB 3.3.11 を利用した。
(1) インストール
ここでは、通常の Solaris 8 におけるインストレーションと同様の手順によるイン ストールを行う。
最初に必要なパッケージの追加やソースの展開を行う(リスト 3‑81)。この作業は admin 役割に移行し役割のワークスペースにて行うことが可能である。このときデフォ ルトのラベルは[ADMIN̲LOW]となる。
リスト 3‑81 パッケージの追加(admin 役割)
$ cd /usr/local
$ pkgadd ‑d db‑3.3.11‑sol8‑sparc‑local
$ gzcat sendmail.8.12.6.tar.gz │ tar xvf ‑
次の作業は primaryadmin 役割に移行し、特権シェル環境において実行する。
Ⅰ‑140 Copyright © 2003 IPA, All Rights Reserved.
ここでは、sendmail の実行ユーザ smmsp およびグループ smmsp を作成する(リスト 3‑82)。なお、簡易に構築するため特権シェル環境により行うが、ユーザとグループの 追加は admin 役割にて SMC を利用することでも可能である。
リスト 3‑82 ユーザとグループの追加(primaryadmin 役割)
# groupadd ‑g 25 smmsp
# useradd ‑u 25 ‑g 25 ‑d / smmsp
次の作業も引き続き特権シェル環境にて行う。
ここでは、sendmail 8.12.6 のコンパイルに必要となるライブラリのランタイム・
リンキング環境を設定する(リスト 3‑83)。
リスト 3‑83 ランタイム・リンキング環境設定(primaryadmin 役割)
# crle ‑u ‑l /usr/local/BerkeleyDB.3.3/lib
# crle
Configuration file [2]: /var/ld/ld.config Default Library Path (ELF):
/usr/lib:/usr/local/lib:/usr/local/ssl/lib:/usr/local/BerkeleyDB.3.3/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:/usr/local/BerkeleyDB.3.3/lib ‑s /usr/lib/secure
次の作業も引き続き特権シェル環境にて行う。
ここでは、sendmail 8.12.6 のコンパイルとインストールを行う(リスト 3‑85)。
なお、サイトに固有の構成ファイルを編集する。構成ファイルの例を以下に示す。
Ⅰ‑141 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑84 devtools/Site/site.config.m4 define(̀confINCDIRS', ̀‑I/usr/local/BerkeleyDB.3.3/include') define(̀confLIBDIRS', ̀‑L/usr/local/BerkeleyDB.3.3/lib') define(̀confMANROOT', ̀/usr/local/man/man')
リスト 3‑85 sendmail の Build(primaryadmin 役割)
# PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/local/bin
# export PATH
# cd /usr/local/sendmail‑8.12.6
# ./Build
# ./Build install
実際のインスとレーションで NOTE が出力されたため指示に従い以下を実施した
# cd /usr/local/sendmail‑8.12.6/obj.SunOS.5.8.sun4/mail.local
# make force‑install
実際のインスとレーションで NOTE が出力されたため指示に従い以下を実施した
# cd /usr/local/sendmail‑8.12.6/obj.SunOS.5.8.sun4/rmail
# make force‑install
次の作業も引き続き特権シェル環境にて行う。
ここでは、sendmail.cf ファイルの生成とインストールを行う(リスト 3‑87)。
なお、サイトに固有の定義ファイルの編集する。定義ファイルの例を以下に示す。
Ⅰ‑142 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑86 mc 定義ファイル divert(‑1)
divert(0)dnl
VERSIONID(̀$Id: generic‑solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $') OSTYPE(solaris2)dnl
DOMAIN(generic)dnl
FEATURE(̀always̲add̲domain')dnl MASQUERADE̲AS(̀tscorp.com')dnl MASQUERADE̲DOMAIN(̀tscorp.com')dnl FEATURE(̀masquerade̲entire̲domain')dnl FEATURE(̀masquerade̲envelope')dnl
FEATURE(̀access̲db',̀hash /etc/mail/access')dnl FEATURE(̀blacklist̲recipients')dnl
FEATURE(̀nouucp',̀reject')dnl undefine(̀UUCP̲RELAY')dnl undefine(̀BITNET̲RELAY')dnl
define(̀confCF̲VERSION',̀ts‑single.mc‑20030108')dnl define(̀confMAX̲MESSAGE̲SIZE',̀5242880')dnl
define(̀confPRIVACY̲FLAGS',̀goaway')dnl MAILER(local)dnl
MAILER(smtp)dnl
リスト 3‑87 sendmail.cf の Build(primaryadmin 役割)
# ./Build ts‑single.cf Using M4=/usr/ccs/bin/m4 rm ‑f ts‑single.cf
/usr/ccs/bin/m4 ../m4/cf.m4 ts‑single.mc > ts‑single.cf ││ ( rm ‑f ts‑single.cf
&& exit 1 )
*** WARNING: missing ‑T in argument of FEATURE(̀access̲db', hash /etc/mail/access)
chmod 444 ts‑single.cf
# cp ‑p ts‑single.cf /etc/mail/sendmail.cf
次に sendmail の基本設定を行う。この作業も引き続き特権シェル環境にて行う。
なお、ここでは簡易に構築するため作業を特権シェル環境により行うが、運用時に はこれらの作業が mailadmin 役割により可能となるようにする。
ここでは、定義ファイルの編集を行う。また、mailadmin 役割による編集が可能と なるように、定義ファイルの所有者を mailadmin に変更する(リスト 3‑88)。
Ⅰ‑143 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑88 定義ファイルの編集(primaryadmin 役割)
# cd /etc/mail
# chown mailadmin local‑host‑names access aliases
# chmod 644 local‑host‑names access aliases
リスト 3‑89 local‑host‑names tscorp.com
リスト 3‑90 access Connect:localhost RELAY
Connect:tscorp.com RELAY
リスト 3‑91 access.db の生成(primaryadmin 役割)
# makemap ‑v hash access.db < access key=̀connect:localhost', val=̀RELAY' key=̀connect:tscorp.com', val=̀RELAY'
リスト 3‑92 aliases Postmaster: admin
MAILER‑DAEMON: postmaster nobody: /dev/null
リスト 3‑93 aliases.db の生成(primaryadmin 役割)
# newaliases
/etc/mail/aliases: 3 aliases, longest 10 bytes, 52 bytes total
最後に sendmail 起動スクリプトの編集を行う。この作業は admin 役割により行う。
標準でインストールされている sendmail の起動スクリプトを利用することとし、こ れを編集する。admin 役割による編集が可能となるように、所有者を admin 役割に変 更する(リスト 3‑94)。
インタープリターがシステムシェル(sysh)になっていることを確認し、以降のセ キュリティ属性定義において設定する mailservice プロファイルがサービス起動時に 有効となるように、setprof コマンドによる定義を追加する。sendmail の起動スクリ プトを確認する。なお、sendmail は BIND の後に起動しなければならない。
Ⅰ‑144 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑94 sendmail スクリプトの編集(admin 役割)
$ cd /etc/init.d
$ cp ‑p sendmail sendmail.org
$ chown admin sendmail
リスト 3‑95 sendmail スクリプト:インタープリター
#!/bin/sysh
setprof mailservice
(2) ファイル
通常の Solaris 8 において適用されるセキュリティ属性、つまりファイルパーミッ ション、所有者、所属グループについては、特別な理由がない限り変更する必要はな い。
表 3‑72 ファイル
# ファイル名 パーミッション owner group
1 /etc/mail/* N/A N/A N/A
2 /usr/local/man/* N/A N/A N/A 3 /usr/bin/newaliases ‑> /usr/lib/sendmail 4 /usr/bin/mailq ‑> /usr/lib/sendmail 5 /usr/bin/hoststat ‑> /usr/lib/sendmail 6 /usr/bin/purgestat ‑> /usr/lib/sendmail 7 /usr/bin/rmail ‑> ./mail 8 /usr/bin/mail ‑r‑xr‑xr‑x bin bin 9 /usr/bin/vacation ‑r‑xr‑xr‑x bin bin 10 /usr/sbin/editmap ‑r‑xr‑xr‑x bin bin 11 /usr/sbin/mailstats ‑r‑xr‑xr‑x bin bin 12 /usr/sbin/makemap ‑r‑xr‑xr‑x bin bin 13 /usr/sbin/praliases ‑r‑xr‑xr‑x bin bin 14 /usr/lib/smrsh ‑r‑xr‑xr‑x bin bin 15 /usr/lib/mail.local ‑r‑xr‑xr‑x bin bin 16 /usr/lib/sendmail ‑r‑xr‑sr‑x root smmsp 17 /var/spool/clientmqueue drwxrwx‑‑‑ smmsp smmsp 18 /var/spool/mqueue drwx‑‑‑‑‑‑ root bin 19 /var/mail drwxdrwxrwt root mail
(3) セキュリティポリシーの定義と設定(基本的ラベル構成のネットワーク)
最初に、基本的ラベル構成のネットワークを想定した、基本的なセキュリティポリ
Ⅰ‑145 Copyright © 2003 IPA, All Rights Reserved.
シーの定義と設定を行う。
この構成では、外部および内部のネットワークともに単一のラベルでのサービスに 対するアクセスを許可される。この場合、サービスに与える特権を少なくする最良の 方法は、サービスを形成するすべてのプロセスが同一のラベルで動作するようにする ことである。つまり MTA の機能を果たす sendmail および MDA の機能を果たす mail.local が共に、ネットワークからのアクセスを許可された同一のラベルで動作し ている必要がある。
この作業は secadmin 役割に移行し役割のワークスペースにて行うことが可能であ る。このときデフォルトのラベルは[ADMIN̲LOW]となる。
ADMIN_LOW PUBLIC ADMIN_HIGH
services
/var/spool
aliases etc.
syslog etc.
/var/mail mail.local sendmail
全ての ネットワークアクセス
に対する許可範囲
図 3‑29 基本的ラベル構成によるサービスのイメージ
sendmail および mail.local のプロセスの SL は[PUBLIC SERVICES]とする。
ネットワークからのアクセスは全てが[PUBLIC SERVICE]とラベル付けされる。
sendmail.cf および定義ファイルの SL は[ADMIN̲LOW]とし、ネットワークアク セスに関連するプロセス(sendmail、mail.local および派生するプロセス)
から読み込みのみが許可される。
ただし、最小特権を考慮し、キューディレクトリおよびスープールディレク トリは[PUBLIC SERVICES]に変更する。
(A) ファイル属性定義
次のサービス提供に関わるファイル属性をそれぞれのファイルに適用する。なお、
設定の手順については 3.4.4.1(1)(A)に記載している。
ところで、/var/spool/mqueue と/var/mail のディレクトリについて、標準のディ
Ⅰ‑146 Copyright © 2003 IPA, All Rights Reserved.
レクトリを変更する必要はがないが、標準では MLD になっているので、これを SLD に変更する場合には、/var/spool/clientmqueue と同じ属性を適用する必要がある。
表 3‑73 サービス用ファイル属性
# ファイル名 ラベル 強制特権 許容特権
1 /usr/lib/mail.local ADMIN̲LOW none all 2 /usr/lib/sendmail ADMIN̲LOW none all 3 /var/spool/clientmqueue PUBLIC services N/A N/A 4 /var/spool/mqueue MLD(標準) N/A N/A 5 /var/mail MLD(標準) N/A N/A
次の管理に関わるファイルの属性をそれぞれのファイルに適用する。なお、実際 には初期設定から変更の必要はない。
表 3‑74 管理用ファイル属性
# ファイル名 ラベル 強制特権 許容特権
1 /usr/bin/mail ADMIN̲LOW none none 2 /usr/bin/vacation ADMIN̲LOW none none 3 /usr/sbin/editmap ADMIN̲LOW none none 4 /usr/sbin/mailstats ADMIN̲LOW none none 5 /usr/sbin/makemap ADMIN̲LOW none none 6 /usr/sbin/praliases ADMIN̲LOW none none 7 /usr/lib/smrsh ADMIN̲LOW none none 8 /etc/mail/* ADMIN̲LOW N/A N/A
(B) プロセス属性定義
次のサービス提供に関わる実行属性をサービス用の mailservice プロファイルに 追加する。なお、設定の手順については 3.4.3.4(2)(A)に記載している。
ところで、ここでは sendmail のみの定義を行い mail.local の定義を行わないが、
その理由は mail.local が sendmail から起動されるため sendmail のセキュリティ属 性を継承することが可能であるためである。
Ⅰ‑147 Copyright © 2003 IPA, All Rights Reserved.
表 3‑75 サービス用プロセス属性
# ファイル名 User Group Label Clearance 特権
1 /etc/init.d/sendmail root (euid)
sys (egid)
N/A N/A all 2 /usr/lib/sendmail root
(uid)
smmsp (gid)
PUBLIC services
PUBLIC services
file̲chown file̲mac̲read net̲privaddr proc̲setid sys̲net̲config sys̲suser̲compat 次の管理に関わる実行属性を管理用の mailcontrol プロファイルに追加する。
ところで、ここでは sendmail の定義を行っているが、これは、sendmail にシン ボリックリンクをしている、newaliases、mailq、hoststats、purgestat を有効に するためのものである。
表 3‑76 管理用プロセス属性
# ファイル名 User Group Label Clearance 特権
1 /usr/lib/sendmail root (uid)
N/A N/A N/A proc̲setid sys̲suser̲compat 2 /usr/sbin/mailstats root
(uid)
N/A N/A N/A N/A 3 /usr/sbin/makemap root
(uid)
N/A N/A N/A N/A 4 /usr/sbin/praliases root
(uid)
N/A N/A N/A N/A
(C) ネットワーク属性定義
次のネットワークに関わるセキュリティ属性を適用する。なお、設定手順につい てはそれぞれに、3.4.7.1(2)(A)、3.4.7.2(2)(A)、3.4.7.3(2)(A)に記載している。
Ⅰ‑148 Copyright © 2003 IPA, All Rights Reserved.
表 3‑77 インターフェース属性
# Interface Mini Label Max Label Label Clearance 1 hme0 PUBLIC PRIVATE
services
PUBLIC services
PUBLIC services 表 3‑78 テンプレート属性
# Template Mini Label Max Label Label Clearance 1 public̲services PUBLIC
services
PUBLIC services
PUBLIC services
PUBLIC services 表 3‑79 ネットワーク属性
# Host/Wildcard Hostname IP Address Prefix Length Template 1 Wildcard N/A 0.0.0.0 N/A public̲services
3.5.3.2. qmail
qmail については、2002 年 12 月において、http://www.qmail.org から入手が可能な qmail‑1.03 について実装と検証を行った。
(1) インストール
ここでは、通常の Solaris 8 におけるインストレーションと同様の手順によるイン ストールを行う。
最初に必要なパッケージの追加やソースの展開を行う。この作業は admin 役割に移 行し役割のワークスペースにて行うことが可能である。このときデフォルトのラベル は[ADMIN̲LOW]となる。
リスト 3‑96 パッケージの追加(admin 役割)
$ cd /usr/local
$ gzcat qmail‑1.03.tar.gz │ tar xvf ‑
(A) ユーザとグループの追加
qmail では、root の権限で動作するプロセスを最小限に抑えるため、タスク毎に ユーザが異なるプロセスが動作する。そのために必要なユーザおよびグループを作