目覚めよ! SELinux

SELinux Policy EditorでSELinuxを簡単に


中村 雄一
日立ソフトウェアエンジニアリング株式会社
技術開発本部 研究部 技師
2006/12/8

 SELinuxを簡単に操れるSEEditの威力

 SELinuxを使っていて最も困るのは、設定が不足していてアプリケーションが動作しなくなることです。SEEditを使えば、設定の追加および修正が簡単にできます。SEEditで足りない設定を追加する例を見てみましょう。

 Wikiの実装として有名なPukiwikiをインストールし(/var/www/html/pukiwikiにインストールしたという前提で以下の話を進めます)、ブラウザからPukiwikiにアクセスすると、Enforcingモードでは、図4左のようなエラーになってしまいます。一方で、Permissiveモードに切り替え(ステータスツールから切り替えます)、もう一度ブラウザからアクセスすると、図4右のように正常にアクセスできます。これから、SELinuxのせいで問題が生じていることが分かります。

図4 (左)設定が不足しているため、Enforcingモードではエラーが発生している
   (右)SELinuxをPermissiveモードに戻すとアクセスができる

 SEEditが入っていない状態でこれを解決するには、ログを解析し表2にあるような設定を手作業で行う必要があります。

■Cent OS 4での設定方法 ■Fedora Core 5、6での設定方法
●設定ファイルへの記述
type wiki_write_t,file_type,sysadmfile;
create_dir_file(httpd_t, wiki_write_t)
/var/www/html/pukiwiki/wiki(/.*)? wiki_write_t
/var/www/html/pukiwiki/cache(/.*)? wiki_write_t
/var/www/html/pukiwiki/backup(/.*)? wiki_write_t
/var/www/html/pukiwiki/diff/.*)? wiki_write_t


●コマンド実行
# make reload
# restorecon -R /var/www/html/pukiwiki
●設定ファイルへの記述
policy_module(local, 1.0)
type wiki_write_t;
files_type(wiki_write_t)
require {
type httpd_t;
type wiki_write_t;
};
allow httpd_t wiki_write_t:dir create_dir_perms;
allow httpd_t wiki_write_t:notdevfile_class_set create_file_perms;
/var/www/html/pukiwiki/wiki(/.*)? wiki_write_t
/var/www/html/pukiwiki/cache(/.*)? wiki_write_t
/var/www/html/pukiwiki/backup(/.*)? wiki_write_t
/var/www/html/pukiwiki/diff/.*)? wiki_write_t


●コマンド実行
# make
# semodule -i local
# restorecon -R /var/www/html/pukiwiki
表2 SEEditを使わずにPukiwikiを使うための設定
手作業で設定を行う必要があり、バージョンによって設定方式が違ううえ、必要な知識も多い。

 SELinuxのバージョンによって設定の書式が異なっているうえ、マクロ、リファレンスポリシー、ポリシー・モジュール、semanageなど、さまざまな前提知識が必要です。設定方法を習得するまでに時間がかかり、この時点でSELinuxをあきらめてしまうユーザーも多いと思われます。

 一方、SEEditを使うと簡単に設定を行うことができます。先ほどのコントロールパネルから、「ポリシーを生成」を選択します。

図5 SEEditのポリシー生成画面

 図5のような画面が現れます。「ポリシーを生成」ボタンを押せば、足りない設定が提示されます。

図6 SEEditが足りないポリシーを提示している

 図6が実行結果の画面です。必要な設定が提示されています。例えば、一番上は、「httpd_tドメインにallow /var/www/html/pukiwiki/diff/* r,w,sという設定をする必要がある」といっています。

 「allow /var/www/html/pukiwiki/diff/* r,w,s」というのが、SEEditの特徴であるSPDLの設定書式です。従来のSELinuxの設定書式は、表2のようなぱっと見て分かりにくいものになっていました。「wiki_write_t」のようなSELinuxのラベルを意識する必要もあります。

 一方、SPDLでは直感的です。「allow /var/www/html/pukiwiki/wiki/* r,w,s」の意味は、「httpd_tドメインに対し、/var/www/html/pukiwiki/wiki以下へ、読み(r)、書き(w)、ディレクトリ閲覧(s)を許可する」となります。また、SELinuxのラベルも表に出てきません。

 さて、ここで提示された設定を本当に追加したい場合は、チェックボックスにチェックを入れます。図7のように、追加される設定が表示されます。これでよければ「セーブし、設定を適用」ボタンを押します。

図7 足りないポリシーを適用する

 もう一度Pukiwikiにアクセスしてみると、今度は正しく動作します。

2/3

Index
SELinux Policy EditorでSELinuxを簡単に
  Page1
あなたのLinuxの中にもSELinuxは眠っている
SEEditとは
まずはSEEditのインストール
SEEditはGUIで直感的に理解可能
Page2
SELinuxを簡単に操れるSEEditの威力
  Page3
裏方に徹するSEEditの働き
ドメインの新規作成も簡単
あなたのフィードバックが明日のSEEditを作ります

関連記事
  連載:SELinuxの最新動向
  連載:セキュアOS「LIDS」入門
  ITmedia エンタープライズ:SELinuxの現状:使いやすさの改善が進むSELinux

Security&Trust記事一覧


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

注目のテーマ

Security & Trust 記事ランキング

本日 月間