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

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 ファイルにアタッ チするセキュリティコンテキストの定義である。