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

13   COMMERCIAL IP SECURITY OPTION

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

3.5.3.  SMTP サーバー

3.5.3.1.  sendmail

本節では、sendmail を利用した SMTP サーバー構築の際の設定指針として、SELinux に標 準で用意されているセキュリティポリシー定義を解説し、その留意点を明らかにする。 

本ガイドラインで利用を想定している sendmail のバージョンは 8.12.5 である。これは、

Red Hat Linux 8.0 のインストール CD に含まれている sendmail のバージョンに等しい。バー ジョン 8.12 では、セキュリティ関連の見直しの結果としてその仕様が大きく変更されてい るのはご存知だろうか。sendmail は MTA としての機能と MSA としての機能の双方を有する プログラムであるが、従来は MSA として機能する場合にも root 特権を獲得して稼動してい た。これは単純に、MTA として機能する際に root 特権が必要であるからだと思われる。し かし MSA として機能する限りは root 特権ほどの権限は必要ないためセキュリティ上好まし くない。この点が考慮され、バージョン 8.12 からは MTA として機能するプロセスと MSA と して機能するプロセスとが分離されたのである。本ガイドラインで利用を想定している バージョンの SELinux に含まれている標準セキュリティポリシー定義では、この仕様変更 が考慮されていないため、ローカルからメールを発信する際に問題が発生する。この点に 関しては 3.5.3.1(6)にて解説しているので参考にしてほしい。 

(1) ディレクトリ構造 

Red Hat Linux 8.0 のインストール CD に含まれる RPM パッケージから sendmail を インストールした際のディレクトリ構造を表 3‑15 に示す。以降ではこのディレクト

 

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

リ構造に則してセキュリティポリシー定義を解説する。なお同表ではドキュメント ファイルあるいは man ページ等のインストール先は記載していないので注意してほし い。 

表 3‑15 sendmail のディレクトリ構造 

#  ファイルパス  内容 

1 /etc/  エイリアスファイルの配置先 

2 /etc/mail/  エイリアスファイル以外のコンフィギュレーション ファイルの配置先 

3 /etc/pam.d/  PAM32における SMTP 用のコンフィギュレーション ファイルの配置先 

4 /etc/rc.d/init.d/  initrc スクリプトの配置先 

5 /etc/smrsh/  smrsh シェルから起動を許可するプログラム配置先  6 /etc/sysconfig/ sendmail の initrc スクリプトより参照される各種

定数が定義されたファイルの配置先 

7 /usr/bin/  sendmail 本体へのリンクファイルと管理用コマンド へのリンクファイルの配置先 

8 /usr/lib/  sendmail 本体へのリンクファイルの配置先  9 /usr/lib/sasl/  Cyrus SASL ライブラリが SMTP サーバーから利用さ

れる際に読み込むコンフィギュレーションファイル の配置先 

10 /usr/sbin/  sendmail 本体をはじめ、幾つかの管理用コマンドの 配置先 

11 /var/log/  ログファイルの出力先 

12 /var/mail/  /var/spool/mail へのシンボリックリンク  13 /var/run/  PID ファイルの作成先 

14 /var/spool/clientmqueue/  クライアント キュー ディレクトリ  15 /var/spool/mail/  スプールディレクトリ 

16 /var/spool/mqueue/ キューディレクトリ  17 /var/tmp/  デッドレターの出力先 

 

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

sendmail に関連するセキュリティポリシー定義ファイルを表 3‑16 に示す。 

       

32 PAM(Pluggable Authentication Modules)は、汎用的なユーザ認証メカニズムを提供するモジュールで ある。Red Hat Linux では、Linux‑PAM と呼ばれる実装モジュールが利用されている。

http://www.kernel.org/pub/linux/libs/pam/ 

表 3‑16 sendmail のセキュリティポリシー定義ファイル一覧 

#  ファイルパス  説明 

1 file̲contexts/program/sendmail.fc sendmail に関連するファイルに対してア タッチするセキュリティコンテキストを定 義したファイル 

2 macros/program/sendmail̲macros.te sendmail に関連したマクロを定義したファ イル 

3 domains/program/sendmail.te sendmail のセキュリティポリシーを定義し たファイル 

な お 、 SMTP サ ー バ ー 共 通 の セ キ ュ リ テ ィ ポ リ シ ー 定 義 フ ァ イ ル に 関 し て は 3.5.3.4(1)を参照してほしい。 

(3) オブジェクトのセキュリティコンテキスト 

sendmail に関連した各種オブジェクトに対してアタッチされるセキュリティコン テキストを解説する。 

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

sendmail に関連するファイルとディレクトリにアタッチするセキュリティコン テキストはファイル file̲contexts/program/sendmail.fc にて定義されており、

3.5.3.1 のディレクトリ構造に基いて設計されている。ファイル sendmail.fc の内 容をリスト 3‑159 に示す。 

リスト 3‑159 file̲contexts/program/sendmail.fc 

    

① /etc/mail(/.*)?       system̲u:object̲r:etc̲mail̲t 

② /var/spool/mqueue(/.*)?         system̲u:object̲r:mqueue̲spool̲t 

③ /var/log/sendmail.st      system̲u:object̲r:sendmail̲var̲log̲t      

①は、ディレクトリ/etc/mail と同ディレクトリ下に配置されている、sendmail が使用するコンフィギュレーションファイルに対してアタッチするセキュリティコ ンテキストの定義である。 

②は、キューディレクトリと同ディレクトリ下のファイルに対してアタッチする セキュリティコンテキストの定義である。 

③は、sendmail の出力する統計情報ファイルに対してアタッチするセキュリティ コンテキストの定義である。ただし、RPM より sendmail をインストールした場合、

 

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

統計情報の出力先ファイルは/etc/mail/statistics となっており、ここでの定義は 意味のないものとなっている。 

sendmail のインストール先等、ディレクトリ構造に相違がある場合には、セキュ リティコンテキストが適切にアタッチされるように同ファイルを編集する必要があ る。 

(B) ポートのセキュリティコンテキスト 

ポートに対するセキュリティコンテキストはファイル net̲contexts にて定義さ れ て お り 、 こ の 際 ア タ ッ チ さ れ る type 「 smtp̲port̲t 」 は フ ァ イ ル domains/program/mta.te にて定義されている。ファイル mta.te に関しては、

3.5.3.4(4)を参照してほしい。 

(4) マクロ 

sendmail 固 有 の マ ク ロ 「 sendmail̲user̲domain 」 を 定 義 し た マ ク ロ フ ァ イ ル macros/program/sendmail̲macros.te が存在する。同マクロはユーザ domain から起動 された sendmail プロセスにアタッチするための domain を定義するものである。なお、

同マクロにて定義される domain はデーモンとして起動される sendmail プロセスにア タッチする domain とは区別されている点に注意が必要である。 

マクロ「sendmail̲user̲domain」はマクロファイル macros/user̲macros.te にて定 義 さ れ て い る マ ク ロ 「 user̲domain 」 か ら 呼 び 出 さ れ て い る 。 つ ま り 、 マ ク ロ

「user̲domain」を用いて、あるユーザ domain「"domain̲prefix"̲t」を定義すること で、同時に本マクロにて domain「"domain̲prefix"̲mail̲t」が定義される。そして、

ユーザ domain「"domain̲prefix"̲t」から起動される sendmail プロセスには、domain

「"domain̲prefix"̲mail̲t」がアタッチされるようになるのである。 

マクロファイル macros/program/sendmail̲macros.te の全容は付録のリスト A‑12 を参照してほしい。 

(A) ケイパビリティ 

リスト 3‑160 は、ユーザ domain から起動された sendmail プロセスがケイパビリ ティを獲得することを許可するセキュリティポリシー定義である。 

リスト 3‑160 ケイパビリティ 

    

   allow $1̲mail̲t self:capability net̲bind̲service; 

    

ここでは、ケイパビリティ CAP̲NET̲BIND̲SERVICE(ソケットの bind)を獲得す ることを許可している。 

(B) テンポラリファイルの保護 

ユーザ domain から起動された sendmail プロセスによって、その稼動中にテンポ ラリ領域下に作成されるテンポラリファイルを保護するべきである。 

リスト 3‑161 テンポラリファイルの保護 

    

   type $1̲mail̲tmp̲t, file̲type, sysadmfile, tmpfile; 

   file̲type̲auto̲trans($1̲mail̲t, tmp̲t, $1̲mail̲tmp̲t)      

テンポラリファイルを保護するには、sendmail プロセスがテンポラリ領域下に ファイルを作成した際に、同ファイルに対して作成者である sendmail プロセス固有 の type をアタッチすれば良い。sendmail プロセスにはその起動元であるユーザ domain 固有の domain がアタッチされているため、テンポラリファイルにアタッチ する type もまたユーザ domain 固有の type をアタッチするのが望ましい。リスト  3‑161 では、ユーザ domain「"domain̲prefix"̲t」固有の、つまり、sendmail プロ セスにアタッチされている domain「"domain̲prefix"̲mail̲t」に固有の type とし て 、「 "domain̲prefix"̲mail̲tmp̲t 」 を 宣 言 し て い る 。 そ し て 、 こ の domain

「"domain̲prefix"̲mail̲t」が、type「tmp̲t」のアタッチされたディレクトリ(テ ン ポ ラ リ 領 域 ) 下 に フ ァ イ ル を 作 成 し た 際 に 、 同 フ ァ イ ル に 対 し て domain

「"domain̲prefix"̲mail̲tmp̲t」をアタッチするべくファイル type 遷移ルールを定 義している。 

(C) 統計情報ファイルに対するアクセス制御 

sendmail は MDA プログラムによって発信あるいは送信されたメールの総数とその 総容量を統計情報として追跡する機能を有している。これらの情報は統計情報ファ

 

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

イ ル /etc/mail/statistics 33 に 出 力 さ れ る 。 従 っ て 、 domain

「"domain̲prefix"̲mail̲t」には、統計情報ファイルに対する書き込み権限を与え る必要がある。 

リスト 3‑162 統計情報ファイルに対するアクセス制御 

    

   allow $1̲mail̲t etc̲mail̲t:file rw̲file̲perms; 

    

統計情報ファイルには、セキュリティコンテキストとして type「etc̲mail̲t」が アタッチされている。リスト 3‑162 では、type「etc̲mail̲t」のアタッチされたファ イルに対する書き込み権限を与えている。 

(D) スプールディレクトリに対するアクセス制御 

sendmail におけるローカルメール配送形式は mbox 形式34である。mbox 形式のロー カルメール配送では、全ユーザ共通のスプールディレクトリ/var/spool/mail 下に 各ユーザのメールボックスファイルを作成するため、同ディレクトリに対するファ イル作成権限が必要である。 

リスト 3‑163 スプールディレクトリに対するアクセス制御 

    

   allow $1̲mail̲t mail̲spool̲t:dir rw̲dir̲perms; 

   allow $1̲mail̲t mail̲spool̲t:file create̲file̲perms; 

    

実 際 の ロ ー カ ル メ ー ル 配 送 は 、 sendmail か ら 起 動 さ れ る プ ロ グ ラ ム /usr/sbin/procmail が行う。従ってリスト 3‑163 では、スプールディレクトリに対 す る フ ァ イ ル 作 成 権 限 を 、 procmail プ ロ セ ス に ア タ ッ チ さ れ る domain

「"domain̲prefix"̲mail̲t」(3.5.3.4(3)(B)を参照)に対して与えている。 

       

33 バージョン 5.1 よりも前のバージョンの sendmail では、統計情報ファイルは/var/tmp/sendmail.st で あった。 

34 全ユーザの受信メールを共通ディレクトリ(一般的には/var/spool/mail)下にユーザ毎に別ファイルと して保存する形式のこと。mbox 形式の場合、同一ユーザ宛のメールメッセージはすべて 1 つの mbox ファ イルに追記・管理される。