cms on selinux
DESCRIPTION
2008年OSC名古屋(夏)資料TRANSCRIPT
![Page 1: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/1.jpg)
CMS on SELinux (やってみた編)
日本セキュアOSユーザ会
石川 裕基
![Page 2: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/2.jpg)
Agenda
1. SELinux の概略
2. CMS on SELinux
![Page 3: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/3.jpg)
1. SELinux の概略
![Page 4: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/6.jpg)
SELinux の概略 (アクセス制御とラベル)
Subject, Object 付与されたラベルを もとにアクセス制御を行う
(httpdプロセス) の (A.html) に対する (読み込み)を許可
(httpd_t) の (httpd_sys_content_t) に 対する (read) を許可
![Page 7: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/7.jpg)
2. CMS on SELinux
![Page 8: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/9.jpg)
CMS on SELinux (必要なAction)
XOOPS が動作するために必要なAction
1. httpd から XOOPS を読み込みができる
2. httpd から XOOPS に書き込みができる
3. httpd から XOOPS DBに接続ができる
4. 適切なラベルを付与する
最も簡単な方法を紹介
![Page 10: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/14.jpg)
CMS on SELinux (必要なAction)
4. 適切なラベルを付与/再構築する
ラベルが適切に設定されていない場合、 不正なアクセスとして処理される
適切なラベルを付与/再構築する
SELinux はラベルを用いてアクセス制御を行う
⇒ # touch /.autorelabel && shutdown -r now (または、) # restorecon -RF -v /var/www
![Page 15: Cms on SELinux](https://reader034.vdocuments.site/reader034/viewer/2022052619/5566133fd8b42a06318b4dab/html5/thumbnails/15.jpg)
Demo
時間があれば Demo をします。