Cms on SELinux

Post on 28-May-2015

991 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

2008年OSC名古屋(夏)資料

Transcript

CMS on SELinux (やってみた編)

日本セキュアOSユーザ会

石川 裕基

Agenda

1. SELinux の概略

2. CMS on SELinux

1. SELinux の概略

SELinux の概略 (アクセス制御(TE))

「誰(Subject)が何(Object)に対して何をするか(Action)」の巨大なルール集

事前に許可をした動作のみを可能にする httpd プロセス が A.html に対して読み込みをする

Subject, Object, Action の例

Subject Process

Object File / Directory

Action Read / Write / Link

SELinux の概略 (ラベル)

Subject, Object に付与された特殊な文字列

全てのSubject, Object にはラベルが付与される Subject に付与されるラベル = ドメイン

Object に付与されるラベル = タイプ

付与されるラベルの例

httpd httpd_t

/var/www/html(/.*)? http_sys_content_t

/etc/shadow shadow_t

SELinux の概略 (アクセス制御とラベル)

Subject, Object 付与されたラベルを もとにアクセス制御を行う

(httpdプロセス) の (A.html) に対する (読み込み)を許可

(httpd_t) の (httpd_sys_content_t) に 対する (read) を許可

2. CMS on SELinux

CMS on SELinux (前提条件)

以下の環境下で動作検証を行う

OS(Linux) CentOS 5.2

SELinux Targeted Policy 2.4.6-137

Web Apache 2.2.3

PHP - 5.1.6

DB MySQL 5.0.45-7

CMS XOOPS (ホダ塾ディストリビューション)

1.0.1b

※ アプリケーションは全て yum を使用してインストールをする

CMS on SELinux (必要なAction)

XOOPS が動作するために必要なAction

1. httpd から XOOPS を読み込みができる

2. httpd から XOOPS に書き込みができる

3. httpd から XOOPS DBに接続ができる

4. 適切なラベルを付与する

最も簡単な方法を紹介

CMS on SELinux (必要なAction)

1. httpd から XOOPS を読み込みができる

⇒ /var/www/html 以下に XOOPS を配置する

Webコンテンツに付与されるラベルは

一般的には httpd_sys_content_t である

/var/www/html 以下に配置されたファイルには

httpd_content_t が付与される

XOOPS を Apache (httpd_t) から

読ませて良いファイルとして設定する

CMS on SELinux (必要なAction)

2. httpd から XOOPS に書き込みができる

⇒ # setsebool -P httpd_builten_scripting 1

Boolean値と呼ばれるものを変更することで

書き込みを可能にすることができる

変更するBoolean値は

「httpd_builten_scripting」である

httpd_sys_content_t は httpd_t からの 読み込みのみを許可する

CMS on SELinux (必要なAction)

2. httpd から XOOPS に書き込みができる(※)

⇒ # setsebool -P httpd_builten_scripting 0

⇒ # semanage fcontext -a -t httpd_sys_script_rw_t ‘/var/www/html/hd(/.*)?’

書き込みを行いたい対象のみを httpd_t から

書き込ませて良いものとしてラベリングする

httpd_t の 書き込みを許可するラベルは

httpd_sys_script_rw_t である

前述の場合、全ての httpd_sys_content_t に 影響を及ぼす

CMS on SELinux (必要なAction)

3. httpd から XOOPSのDB(mysql) に接続できる

⇒ # setsebool -P httpd_can_network_connect_db 1

外部の DB を使用する場合は Boolean値を変更する必要がある

変更するBoolean値は 「httpd_can_network_connect_db」である

local に存在するの DB に接続する場合は 対応する必要はない

CMS on SELinux (必要なAction)

4. 適切なラベルを付与/再構築する

ラベルが適切に設定されていない場合、 不正なアクセスとして処理される

適切なラベルを付与/再構築する

SELinux はラベルを用いてアクセス制御を行う

⇒ # touch /.autorelabel && shutdown -r now (または、) # restorecon -RF -v /var/www

Demo

時間があれば Demo をします。

top related