13 COMMERCIAL IP SECURITY OPTION
3.5. セキュリティポリシーの定義
3.5.3. SMTP サーバー
3.5.3.3. postfix
本節では、postfix を利用した SMTP サーバー構築の際の設定指針として、SELinux に標 準で用意されているセキュリティポリシー定義を解説し、その留意点を明らかにする。
(1) ディレクトリ構造
Red Hat Linux 8.0 のインストール CD に含まれる RPM パッケージから、postfix を インストールした際のディレクトリ構造を表 3‑19 に示す。以降ではこのディレクト リ構造に則してセキュリティポリシー定義を解説する。なお、同表ではドキュメント ファイルあるいは man ページ等のインストール先は記載していないので注意してほし い。
Ⅱ‑160 Copyright © 2003 IPA, All Rights Reserved.
表 3‑19 postfix のディレクトリ構造
# ファイルパス 内容
1 /etc/postfix/ コンフィギュレーションファイルの配置先 2 /etc/rc.d/init.d/ initrc スクリプトの配置先
3 /usr/bin/ sendmail との互換性を保つためのプログラム sendmail.postfix、mailq.postfix、および rmail.postfix プログラムの配置先
4 /usr/lib/sasl/ Cyrus SASL ライブラリが SMTP サーバーから利用 される際に読み込むコンフィギュレーション ファイルの配置先
5 /usr/libexec/postfix/ デーモンプログラムの配置先 6 /usr/sbin/ post*という名称のユーティリティプログラム
の配置先
7 /var/spool/postfix/ キューディレクトリ 8 /var/spool/postfix/usr/lib/ zoneinfo ファイルの配置先
(2) セキュリティポリシー設定ファイル
postfix に関連するセキュリティポリシー定義ファイルを表 3‑20 に示す。
表 3‑20 postfix のセキュリティポリシー定義ファイル一覧
# ファイルパス 説明
1 file̲contexts/program/postfix.fc postfix に関連するファイルに対してア タッチするセキュリティコンテキストを定 義したファイル
2 domains/program/ postfix.te postfix に関連するセキュリティポリシー を定義したファイル
な お 、 SMTP サ ー バ ー 共 通 の セ キ ュ リ テ ィ ポ リ シ ー 定 義 フ ァ イ ル に 関 し て は 3.5.3.4(1)を参照してほしい。
(3) オブジェクトのセキュリティコンテキスト
postfix に関連した各種オブジェクトに対してアタッチするセキュリティコンテキ ストを解説する。
(A) ファイルのセキュリティコンテキスト
postfix に関連するファイルとディレクトリにアタッチするセキュリティコンテ キストはファイル file̲contexts/program/postfix.fc にて定義される。SELinux に
おいて標準で用意されている postfix 用のセキュリティポリシー定義は Debian での 環境に基づいて定義されているようである。従って、Red Hat Linux 8.0 において、
インストール CD に含まれる RPM パッケージから postfix をインストールした環境と 比較すると、セキュリティコンテキストのアタッチ先であるファイルパスが異なっ ている箇所が見られる。このような部分はカスタマイズする必要があるので注意し てほしい。
ファイル file̲contexts/program/postfix.fc の全容は付録のリスト A‑17 を参照 してほしい。
コンフィギュレーションファイル
リスト 3‑216 は、postfix のコンフィギュレーションファイルにアタッチするセ キュリティコンテキストの定義である。
リスト 3‑216 コンフィギュレーションファイルのセキュリティコンテキスト
① /etc/postfix(/.*)? system̲u:object̲r:etc̲postfix̲t
②
/etc/postfix/postfix‑script.* system̲u:object̲r:postfix̲exec̲t /etc/postfix/prng̲exch system̲u:object̲r:postfix̲prng̲t
ここで注意が必要なのはエイリアスファイルの扱いである。3.5.3.4(2)(A)にて 解説するが、標準のセキュリティポリシー定義ではエイリアスファイルの配置位置 が/etc/aliases と/etc/aliases.db に想定されている。しかし、Red Hat Linux 8.0 に お け る postfix で の エ イ リ ア ス フ ァ イ ル の 配 置 位 置 の デ フ ォ ル ト は /etc/postfix/aliases と/etc/postfix/aliases.db となっているため、これらの ファイルに対して適切にセキュリティコンテキストをアタッチしてやるために、リ スト 3‑216 の②の位置にリスト 3‑217 に示す定義を追加しなければならない。
リスト 3‑217 /etc/postfix/aliases ファイルのセキュリティコンテキスト定義
/etc/postfix/aliases(.db)? system̲u:object̲r:etc̲aliases̲t
もちろん、上記を追加定義せずに、postfix のコンフィギュレーションファイル main.cf にてエイリアスファイルの配置位置を/etc/aliases に変更しても構わない だろう。
Ⅱ‑162 Copyright © 2003 IPA, All Rights Reserved.
デーモンプログラムの実行ファイル
リスト 3‑218 は postfix のデーモンプログラムの実行ファイルにアタッチするセ キュリティコンテキストの定義である。
リスト 3‑218 デーモンプログラムのセキュリティコンテキスト
/usr/lib/postfix/.* system̲u:object̲r:postfix̲exec̲t
/usr/lib/postfix/cleanup system̲u:object̲r:postfix̲cleanup̲exec̲t /usr/lib/postfix/local system̲u:object̲r:postfix̲local̲exec̲t /usr/lib/postfix/master system̲u:object̲r:postfix̲master̲exec̲t /usr/lib/postfix/pickup system̲u:object̲r:postfix̲pickup̲exec̲t /usr/lib/postfix/(n)?qmgr system̲u:object̲r:postfix̲qmgr̲exec̲t /usr/lib/postfix/showq system̲u:object̲r:postfix̲showq̲exec̲t /usr/lib/postfix/smtp system̲u:object̲r:postfix̲smtp̲exec̲t /usr/lib/postfix/smtpd system̲u:object̲r:postfix̲smtpd̲exec̲t /usr/lib/postfix/bounce system̲u:object̲r:postfix̲bounce̲exec̲t
Red Hat Linux 8.0 の環境では表 3‑19 に示したように、これらの実行ファイル のインストール先ディレクトリは/usr/libexec/postfix である。そこで上記をリス ト 3‑219 に示すように修正しなければならない。
リスト 3‑219 デーモンプログラムのセキュリティコンテキスト(修正後)
/usr/lib(exec)?/postfix/.* system̲u:object̲r:postfix̲exec̲t
/usr/lib(exec)?/postfix/cleanup system̲u:object̲r:postfix̲cleanup̲exec̲t /usr/lib(exec)?/postfix/local system̲u:object̲r:postfix̲local̲exec̲t /usr/lib(exec)?/postfix/master system̲u:object̲r:postfix̲master̲exec̲t /usr/lib(exec)?/postfix/pickup system̲u:object̲r:postfix̲pickup̲exec̲t /usr/lib(exec)?/postfix/(n)?qmgr system̲u:object̲r:postfix̲qmgr̲exec̲t /usr/lib(exec)?/postfix/showq system̲u:object̲r:postfix̲showq̲exec̲t /usr/lib(exec)?/postfix/smtp system̲u:object̲r:postfix̲smtp̲exec̲t /usr/lib(exec)?/postfix/smtpd system̲u:object̲r:postfix̲smtpd̲exec̲t /usr/lib(exec)?/postfix/bounce system̲u:object̲r:postfix̲bounce̲exec̲t
このように修正することで、ディレクトリ/usr/lib/postfix に加えてディレクト リ/usr/libexec/postfix 下に対しても適切にセキュリティコンテキストがアタッ チされる。なお、Red Hat Linux 8.0 の環境ではディレクトリ/usr/lib/postfix が 存在しない。従って、修正前のセキュリティコンテキスト アタッチ ルールが何ら かの悪影響を及ぼすことはないためそのまま残す形としている。
ユーティリティプログラム
リスト 3‑220 は postfix のユーティリティプログラムにアタッチするセキュリ ティコンテキストの定義である。
リスト 3‑220 ユーティリティプログラムのセキュリティコンテキスト
/usr/sbin/postalias system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postcat system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postconf system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postdrop system̲u:object̲r:postfix̲postdrop̲exec̲t /usr/sbin/postfix system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postkick system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postlock system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postlog system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postmap system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/postqueue system̲u:object̲r:postfix̲postqueue̲exec̲t /usr/sbin/postsuper system̲u:object̲r:postfix̲master̲exec̲t /usr/sbin/rmail system̲u:object̲r:postfix̲master̲exec̲t
Red Hat Linux 8.0 の環境では表 3‑19 に示すようにプログラム rmail のインス トールパスが/usr/bin/rmail.postfix となっている。そこで、リスト 3‑221 に示す 定義文を追加しなければならない。
リスト 3‑221 /usr/bin/rmail のセキュリティコンテキスト
/usr/bin/rmail system̲u:object̲r:postfix̲master̲exec̲t /usr/bin/rmail.postfix system̲u:object̲r:postfix̲master̲exec̲t
プログラム rmail の実行ファイルは実際には/usr/bin/rmail.postfix となってお り、/usr/bin/rmail はその/usr/bin/rmail.postfix へのシンボリックリンクとなっ ているため、これら 2 つのファイルに対してセキュリティコンテキストを適切にア タッチする必要がある。
キューディレクトリ
リスト 3‑222 は postfix のキューディレクトリにアタッチするセキュリティコン テキストの定義である。
Ⅱ‑164 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑222 キューディレクトリのセキュリティコンテキスト
/var/spool/postfix/active(/.*)? system̲u:object̲r:postfix̲spool̲t /var/spool/postfix/incoming(/.*)? system̲u:object̲r:postfix̲spool̲t
/var/spool/postfix/maildrop(/.*)? system̲u:object̲r:postfix̲spool̲maildrop̲t /var/spool/postfix/defer(red)?(/.*)? system̲u:object̲r:postfix̲spool̲t
/var/spool/postfix/bounce(/.*)? system̲u:object̲r:postfix̲spool̲bounce̲t /var/spool/postfix/flush(/.*)? system̲u:object̲r:postfix̲spool̲flush̲t
chroot 環境で利用する場合のシステムファイル
リスト 3‑223 は postfix を chroot 環境で実行する際に必要となるシステムファ イルにアタッチするセキュリティコンテキストの定義である。
リスト 3‑223 システムファイルのセキュリティコンテキスト
/var/spool/postfix/lib(/.*)? system̲u:object̲r:lib̲t /var/spool/postfix/lib/ld.*¥.so.* system̲u:object̲r:ld̲so̲t /var/spool/postfix/lib/lib.*¥.so.* system̲u:object̲r:shlib̲t /var/spool/postfix/lib/[^/]*/lib.*¥.so.* system̲u:object̲r:shlib̲t /var/spool/postfix/lib/devfsd/.*¥.so.* system̲u:object̲r:shlib̲t /var/spool/postfix/etc/services system̲u:object̲r:etc̲t
postfix を chroot 環境で実行する場合、ディレクトリ/var/spool/postfix に chroot されるため、postfix の稼動に必要となるシステムファイルをそのシステム の流儀(ファイルパス)に従って同ディレクトリ下にコピーしておく必要がある。
リスト 3‑223 はそれらのシステムファイルにアタッチするセキュリティコンテキ ストの定義である。また、Red Hat Linux 8.0 の環境では表 3‑19 に示したようにタ イムゾーン情報を配置するディレクトリ/var/spool/postfix/usr/lib/zoneinfo が 用意されている。SELinux に標準で含まれる postfix 用のセキュリティポリシー定 義ファイルではこの点を考慮されていないので、リスト 3‑223 をリスト 3‑223 に示 すように修正するのが良いだろう。
リスト 3‑224 システムファイルのセキュリティコンテキスト(修正後)
/var/spool/postfix/usr(/.*)? system̲u:object̲r:usr̲t /var/spool/postfix(/usr)?/lib(/.*)? system̲u:object̲r:lib̲t /var/spool/postfix(/usr)?/lib/ld.*¥.so.* system̲u:object̲r:ld̲so̲t /var/spool/postfix(/usr)?/lib/lib.*¥.so.* system̲u:object̲r:shlib̲t /var/spool/postfix(/usr)?/lib/[^/]*/lib.*¥.so.* system̲u:object̲r:shlib̲t /var/spool/postfix(/usr)?/lib/devfsd/.*¥.so.* system̲u:object̲r:shlib̲t /var/spool/postfix/etc/services system̲u:object̲r:etc̲t
このようにしておけば、システムのディレクトリ/usr/lib/下に含まれるシステ ムファイルをコピーすることになった場合にも対応できるだろう。
デーモンプロセスのアクセスポイント
postfix はそのメールシステムを実現するために数多くのデーモンプロセスに よって構成されている。これらのデーモンプロセスは自身の提供するサービスを別 プロセスに提供するために、ソケットや名前付きパイプといったオブジェクトを作 成する。そして、これらのオブジェクトを公開とする(postfix とは無関係な外部 プロセスからのアクセスを認める)か、非公開とする(postfix 内のデーモンプロ セスにのみアクセスを認める)か、をデーモンプロセス毎に設定できるようになっ ており、公開するオブジェクトはディレクトリ/var/spool/postfix/public の下に、
非公開のオブジェクトはディレクトリ/var/spool/postfix/private の下に作成さ れるようになっている。リスト 3‑225 はこれらのディレクトリとその中に配置され るオブジェクトにアタッチするセキュリティコンテキストの定義である。なお、本 ガイドラインでは上記オブジェクトを「アクセスポイント」と呼ぶことにする。
リスト 3‑225 アクセスポイントのセキュリティコンテキスト
/var/spool/postfix/private(/.*)? system̲u:object̲r:postfix̲private̲t /var/spool/postfix/public(/.*)? system̲u:object̲r:postfix̲public̲t
PID ファイル
リスト 3‑226 は postfix の各デーモンプロセスが作成する PID ファイルにアタッ チするセキュリティコンテキストの定義である。