Top Banner
CMS on SELinux (やってみた編) 日本セキュアOSユーザ会 石川 裕基
15

Cms on SELinux

May 28, 2015

Download

Technology

hiroki-ishikawa

2008年OSC名古屋(夏)資料
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cms on SELinux

CMS on SELinux (やってみた編)

日本セキュアOSユーザ会

石川 裕基

Page 2: Cms on SELinux

Agenda

1. SELinux の概略

2. CMS on SELinux

Page 3: Cms on SELinux

1. SELinux の概略

Page 4: Cms on SELinux

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

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

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

Subject, Object, Action の例

Subject Process

Object File / Directory

Action Read / Write / Link

Page 5: Cms on SELinux

SELinux の概略 (ラベル)

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

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

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

付与されるラベルの例

httpd httpd_t

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

/etc/shadow shadow_t

Page 6: Cms on SELinux

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

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

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

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

Page 7: Cms on SELinux

2. CMS on SELinux

Page 8: 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 を使用してインストールをする

Page 9: Cms on SELinux

CMS on SELinux (必要なAction)

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

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

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

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

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

最も簡単な方法を紹介

Page 10: Cms on SELinux

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) から

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

Page 11: Cms on SELinux

CMS on SELinux (必要なAction)

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

⇒ # setsebool -P httpd_builten_scripting 1

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

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

変更するBoolean値は

「httpd_builten_scripting」である

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

Page 12: Cms on SELinux

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 に 影響を及ぼす

Page 13: Cms on SELinux

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 に接続する場合は 対応する必要はない

Page 14: Cms on SELinux

CMS on SELinux (必要なAction)

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

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

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

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

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

Page 15: Cms on SELinux

Demo

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