第1回 CMSツールをよりセキュアに導入しよう


面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2007/5/23

 SELinux(Targeted)でのPlone/Zope

 CentOS 4.4では、SELinux(デフォルトのTargetedポリシー)を有効にした状態でも、Plone/Zopeをインストールして使用することができます。

 デフォルトのTargetedポリシーの上でPloneをインストールすると、図1のようにzopeのプロセスはinitrc_tドメインで動作します。

[root@centos4 ~]# ps axZ | grep zope
root:system_r:initrc_t           3414 ?        Ss     0:00 /usr/bin/python /usr/lib/zope/lib/python/zdaemon/zdrun.py -S /usr/lib/zope/lib/python/Zope2/Startup/zopeschema.xml -b 10 -d -s /var/lib/zope/var/zopectlsock -u zope -x 0,2 -z /var/lib/zope /var/lib/zope/bin/runzope
root:system_r:initrc_t           3415 ?        S      0:14 /usr/bin/python /usr/lib/zope/lib/python/Zope2/Startup/run.py -C /var/lib/zope/etc/zope.conf
図1 zopeのプロセスとドメイン

 この状態で運用しても、SELinuxが有効になっているため、SELinuxを無効にして運用するよりはセキュリティが担保されます。しかし、これではSELinuxのセキュリティ機能を十分に活用しているとはいえません。

 SELinuxでは図2のように、各サービスや機能ごとに「ドメイン」を定義して、そのドメインによりコンパートメント化を行うことができます。 

図2 別ドメインにはアクセスできない

 しかしinitrd_tドメインでは図3のように、crondやsshdなどさまざまなサービスが起動しているため、これらのサービスのどれかにセキュリティ上の問題が発生した場合には、ZopeやPloneも影響を受けてしまいますし、逆にPlone/Zopeに問題が発生した場合には、これらのすべてのサービスに影響を与えてしまう可能性があります。

[root@centos4 ~]# ps axZ | grep initrc_t
user_u:system_r:initrc_t         2483 ?        Ss     0:00 /sbin/dhclient -1 -q -lf /var/lib/dhcp/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0
user_u:system_r:initrc_t         2522 ?        Ss     0:00 klogd -x
user_u:system_r:initrc_t         2603 ?        Ss     0:00 /usr/sbin/acpid
user_u:system_r:initrc_t         2641 ?        Ss     0:00 /usr/sbin/sshd
user_u:system_r:initrc_t         2654 ?        Ss     0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
user_u:system_r:initrc_t         2678 ?        Ss     0:00 gpm -m /dev/input/mice -t imps2
user_u:system_r:initrc_t         2697 ?        Ss     0:00 crond
user_u:system_r:initrc_t         2728 ?        Ss     0:00 xfs -droppriv -daemon
user_u:system_r:initrc_t         2745 ?        Ss     0:00 /usr/sbin/atd
user_u:system_r:initrc_t         3360 ?        Ss     0:00 sshd: root@pts/0
root:system_r:initrc_t           3414 ?        Ss     0:00 /usr/bin/python /usr/lib/zope/lib/python/zdaemon/zdrun.py -S /usr/lib/zope/lib/python/Zope2/Startup/zopeschema.xml -b 10 -d -s /var/lib/zope/var/zopectlsock -u zope -x 0,2 -z /var/lib/zope /var/lib/zope/bin/runzope
root:system_r:initrc_t          3415 ?        S      0:14 /usr/bin/python /usr/lib/zope/lib/python/Zope2/Startup/run.py -C /var/lib/zope/etc/zope.conf
図3 initrc_tドメインで動作しているサービスの例

図4 initrc_tドメインのままでは他のプロセスにも悪影響を与える可能性がある

 このような問題を解決するため、サービスとして起動しているzopeプロセス用にも、専用のドメインを定義することにしましょう。

 新しいドメインを作るには、SELinuxのポリシーを修正する必要があります。これはディストリビューションのバージョン(より正確には、そのディストリビューションが採用しているSELinuxのバージョン)により大きく変わるのですが、今回はCentOS 4.4での方法を紹介します。

 なお、CentOS 5やFedora 6などの新しいディストリビューションは、いわゆる「Referenceポリシー」を用いるバージョンのSELinuxを採用していますので、そのようなディストリビューションを使用する場合には@ITの「SELinuxの最新動向」や、「Red Hat Enterprise Linux 5で始めるSELinux」を参考にするとよいでしょう(実際、Referenceポリシーを使用した場合の方が、今回説明する方法よりも簡単になっています)。

【参考記事】
SELinuxの最新動向 (@IT)
http://www.atmarkit.co.jp/fsecurity/rensai/selinux01/selinux01.html


Red Hat Enterprise Linux 5で始めるSELinux(@IT)
http://www.atmarkit.co.jp/fsecurity/special/97rhel/rhel01.html

 CentOS 4.4でのポリシーの編集方法

 CentOS 4.4でドメインを新たに追加するなど、SELinuxのポリシーを修正する必要がある場合には、ポリシーのソースをインストールする必要があります。CentOS 4.4のCD-ROMの4枚目に入っているSELinuxのポリシーのソースファイル(最新版はyumを用いて取得可能)、

selinux-policy-targeted-sources-XXX.noarch.rpm (XXXはバージョン番号)

をrpmコマンドを用いてインストールすると、/etc/selinux/targeted/src以下にポリシーのソースファイルが展開されます。

 各ディレクトリ配下にあるファイルが最終的にpolicy.confファイルという1つのテキストファイルにまとめられ、さらに/etc/selinux/targeted/policy以下にあるpolicy.XX(XXはバージョン番号)バイナリポリシーへとコンパイルされるようになっています。

 新たにXドメインを追加する場合には、

X.te(/etc/selinux/targeted/src/policy/domain/programs以下)
X.fc(/etc/selinux/targeted/src/policy/file_contexts/programs以下)

の2種類のファイルを追加してポリシーを再作成します。X.teファイルにはXドメインに関連するドメインの定義文やallow文などの構文を、X.fcファイルにはXドメインに関連したファイルのコンテキスト情報をそれぞれ記載します。

2/3

Index
CMSツールをよりセキュアに導入しよう
  Page1
SELinuxは運用のステージへ
PloneをSELinuxで保護する
Ploneのインストール
SELinux外でのセキュリティの担保
Page2
SELinux(Targeted)でのPlone/Zope
CentOS 4.4でのポリシーの編集方法
  Page3
Zopeドメインの構成情報を考える
Zopeドメインを作成する
このポリシーの注意点


スイッチ・オン! SELinux 連載インデックス


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間