How to install SELinux Policy Editor(Ver1.2)
2005. 08.30
著: 中村 雄一 <ynakam@gwu.edu>

これは,SELinux Policy Editor(Version1.2)のインストールドキュメントです。
全てRPMパッケージからインストールすることができます。
ここでは,RPMパッケージからインストールする方法を紹介しています。
ソースからインストールする場合は、ソースファイル
(seedit-converter, seedit-policy)の中のREADMEを参照して下さい。

1. インストールの前に
(1) 何をインストールすればいいの?
 SELinux Policy Editorは, Simplified Policy(単純化ポリシ)とGUIから構成されています。
Simplified Policyのインストールは必須で,GUIはオプションです。
GUIはオプションですが,インストールすることでより簡単に使うことができます。
なお,GUIの利用にはwebmin(www.webmin.com)が必要です。

(2) 動作環境
Fedora Core 4, Turbo Linux10 Server, Asianux 2.0 で動作を確認しましたが,Fedora Core4が推奨です。
ただし,我々のツールは実験的なものであり,致命的バグを含む可能性があります。
本ツールを使ったことによって生じた被害に対しては無保証です。
ポリシーは工事中です。動作しないサービスもあります。
インストール後,「initrc_t」ドメインで動作しているサービスは,ポリシが用意されていないと考えてください。
/etc/selinux/seedit/src/policy/simplified_policy
ディレクトリを見れば何についてポリシが用意されているかが分かります。

- 不要なサービスは止める
不要なサービスは止めておくことをお奨めします。
Fedora Core4の場合
Fedora Core4では,不要なサービスを含め多くのサービスが動作しています。
特にデフォルトで起動する以下のサービスに対するポリシは用意されていないので、止めておきましょう。
Bluetooth cups cups-config-daemon gpm mDNSResponder messagebus netfs nifd nfslock portmap rpcgssd rpcidmapd

- Xについて
以前のバージョンでは,Xをサポートしておらず,ランレベルは3にしていましたが,
今回は,Xをサポートしていますので、ランレベル5でもOKです。
ただし,FC4,TurboLinux10Serverでは設定を厳しくしており,
sysadm_rになれるユーザ(デフォルトはroot)しかXでグラフィカルログインできません。

 
2. インストール方法
2.1 必要なファイルを入手
まずは,必要なファイルをダウンロードします。
以下のファイルをhttp://sourceforge.net/projects/seedit/から入手します。

(1) 単純化ポリシコンパイラ(必須)
- seedit-converter-1.2.0-1.i386.rpm

(2) 単純化ポリシサンプル(必須)
ディストリビューションによってダウンロードするファイルが違います
- seedit-policy-1.2.0-FC4.noarch.rpm (Fedora Core4用)
- seedit-policy-1.2.0-AX2.noarch.rpm (Asianux2.0用)
- seedit-policy-1.2.0-TL10S.noarch.rpm (TurboLinux10 Server用)

(3) GUI(オプション)
GUIを使いたい人はダウンロードします
- seedit-gui-1.2.0-1.noarch.rpm

(4)ドキュメント(オプション)
自分のマシンにドキュメントを持っておきたい人はダウンロードします。
- seedit-doc-1.2.0-1.noarch.rpm

2.2 単純化ポリシをインストールする
まず,seedit-converter, seedit-policyをインストールします。
# rpm -ivh seedit-converter*.rpm  seedit-policy*.rpm
# rpm -ivh seedit-doc*.rpm

/etc/selinux/seedit以下に,単純化ポリシーがインストールされます。
この際,/etc/selinux/configが
SELINUX=permissive
SELINUXTYPE=seedit
のように書き換えられてます。

2.3 GUIをインストールする(オプション)
GUIを使いたい人は,ここでGUIをインストールします。
GUIを使わない場合は2.4に進んでください。

(1) Webminのインストール
-  perl-Net-SSLeayのインストール(Fedora Core4の場合)
# yum install perl-Net-SSLeay
perl-Net-SSLeayがfedora-extraからインストールされます。
- WebminのRPMパッケージを入手
http://www.webmin.com/ から入手します。
Miracle Linuxの場合はDeveloper's CDに添付されています。
- Webmin,GUIのインストール
# rpm -ivh seedit-gui*.rpm webmin*.rpm
※GUIを,webminのメニューからインストールしたい場合は,seedit-gui-1.2.0.wbmファイルを使います。

2.4 インストール後の後始末
(1) リブートします。
再起動時,全ファイルのラベル付けが行われるため多少時間がかかります。
※ TurboLinux10Serverの注意:ラベル付けは行われません。ログイン後,#fixfilres restore とします。

(2) 再度リブート
この状態だと,ドメインがまともに割り当てられていません。すぐリブートします。

(3)  ファイルのタイプラベルを修復します
# restorecon -R /etc /tmp /dev  
(※turbolinux 10 serverの場合
# cd /etc/selinux/seedit/src/policy
# ./restorecon -R /etc /tmp /dev
)
# cd /etc/selinux/seedit/src/policy
# make diffrelabel
とします。
初回起動時は,SELinuxのタイプラベルがうまくつかないことがあるためです。
エラーメッセージが出ますが,無害なので無視します。

(4) 再度リブートします
これでインストール完了です。
ちなみに,この段階ではpermissiveモードです。

3.動作確認
(1) /etc/selinux/config に以下の2行が出ていることを確かめます
SELINUX=permissive
SELINUXTYPE=seedit

(2) sestatusコマンドの出力が以下のようになっていることを確認します
# sestatus
SELinux status: enabled
...
Policy from config file: seedit
...

(3) GUIの動作確認(GUIをインストールしている場合のみ)
# /etc/init.d/webmin stop
# /etc/init.d/webmin start
とし,
https://<ホスト名>:10000/
で,アクセスし,
ユーザ名:「root」,パスワード「<rootのパスワード>」
でログインします。

言語を日本語に切り替えるには
Webmin Configuration→Languageと進み,「Display in Lanugage」を「Japanese(Ja.euc)」
に切り替え「Apply」を押します。

SELinuxの管理画面は,「システム」メニューの中にあります。
SELinuxの管理画面が表示されることを確認しましょう。

なお,実運用時には,Webminの利用には細心の注意を払います。
なぜなら,パスワードを破られたら終わりですし,
Webminは大きな権限を持つので,
webminにセキュリティホールがあった場合の被害が大きくなるからです。
パケットフィルタリングを適切に行ったり,
場合によっては,管理専用のNICを設けるなどの工夫も必要かもしれません。

(4) enforcingモードに切り替え動作確認
enforcingモードに切り替えて動作確認します。
# setenforce 1
enforcingモードでアプリケーションが動作せず,permissiveモードで動作したなら,
ポリシーが足りません。その際はポリシーの編集が必要になります。

(5) ポリシーを編集
ポリシーが用意されていないアプリケーションを動作させる場合や
(ドメインが「initrc_t」となっているアプリケーションは,ポリシが用意されてません)
うまく動作しない場合は単純化ポリシーを編集します。
単純化ポリシーを直接手で編集する場合は,"Configuring SELinux by Simplified Policy(日本語)"を参照して下さい。
GUIを使う場合はGUIのマニュアル,チュートリアルを参照して下さい。

もう十分だと思ったら,ブート時からenforcingモードにします
/etc/selinux/configを以下のようにします。
SELINUX=enforcing
SELINUXTYPE=seedit
なお,enforcingモードでのブートに失敗することがあれば,
GRUBのブートパラメータに「seilnux=0」と入れればpermissiveモードで起動できます。

補足:ログイン時のロールについて
FC4, Turbo Linux10 Server用には,RBACの設定がされており,ログインユーザ毎にロールを割り当てるようになっています。
以下の3つのロールがあります。
(注:Asianux2用のポリシでは,グラフィカルログインの都合上,RBACが省いてあります。ログインユーザのユーザシェルのドメインは「unconfined_t」というSELinuxのアクセス制御が利かないドメインになってます。)
1) sysadm_r: システム管理用のロール。何でもできる。ユーザ名rootでログインした場合に利用可。デフォルトでは,sshログインから直接sysadm_rにはなれないようになっている。
2) staff_r: suコマンドを利用出来るロール。su <sysadm_rを使えるユーザ>とすると,sysadm_rロールになれる。デフォルトではrootユーザのみが使える。
3) user_r: 一般ユーザ向けロール。suコマンドの利用ができない。一般ユーザのデフォルトロール。
これでは設定が厳しすぎる,というのであれば,
sysadm_r.aファイルの
user root
という行を削除し
user user_u
とすれば,全てのユーザからsysadm_rでログインできるようになります。
一般ユーザがsuコマンドを使えるようにするには,
staff_r.aファイルの
user root;
という行を
user user_u;
とし,
user_r.aファイルの
user user_u;
という行を
user dummyuser;
とダミーのユーザ名に置き換えます。
なおこれらのファイルを編集した後は
/etc/selinux/seedit/src/policy ディレクトリにて
#make diffrelabel
とし設定を反映します。
※Turbo Linux10 Serverについての注意
TurboLinux10Serverのデフォルトでは,suでロールの切り替えを行うようになってません。
ロールの切り替えをするようにするには,/etc/pam.d/suの
#session optional pam_selinux.so
という行の先頭の「#」を外します。

4. アンインストール
# rpm -e seedit-converter seedit-policy seedit-gui seedit-doc
とし再起動するだけで,次回はpermissiveモード,targetedポリシで起動します。
つまり、/etc/selinux/configが
SELINUX=permissive
SELINUXTYPE=seedit
のようになります。
targetedポリシで起動したらもう一度リブートすることをお奨めします。