第1回 トラブル対処の第一歩は「permissiveモード」サルでも分かるSELinuxトラブルシュート(1/2 ページ)

筆者はこれまで、SELinuxの効果や使うべき場所について紹介してきました。その中で、「SELinuxをとりあえず使うだけでも効果がある」と紹介しました。今回から数回に分けて、「とりあえず使う方法」について解説したいと思います。

» 2007年04月02日 08時00分 公開
[才所秀明(日立ソフト),ITmedia]

はじめに

 本連載は、これからSELinuxを本格的に使ってみようという方や、かつて使っては見たものの、その難解さに負けて挫折してしまったというような方を対象に、簡単に行えるトラブル対処方法を中心に解説していきます。専門的な話は極力避けるつもりですので、必ずしもSELinuxの効果を十分に使えるわけではありません。きちんとSELinuxを使いたい方やSELinuxを知りたい方は、ほかの書籍や記事、セミナーなども併せて参考にしてください。

 ここで使用している環境は、Fedora Core 6(FC6)をVMware上に構築したものです。先日リリースされたRed Hat Enterprise Linux 5でも今回紹介する知識や方法がそのまま利用できると思います。なお、本連載ではインストール環境に依存しないよう解説しますが、参考までに記述しておくと、インストール時には「ソフトウェア開発」と「ウェブサーバー」のソフトウェアセットを選択しています。

SELinuxの設定――SELinuxのポリシー

 SELinuxでは、基本的にすべてのアクセスを拒否します。すべてのアクセスを拒否するわけですから、そのままでは当然何も動作しません。そこで出てくるのがアクセス制御設定であるポリシーです。ここでは、ポリシーの基本的な考え方についてのみ説明しておきます。

 SELinuxのポリシーでは、すべてのプロセスはドメインと呼ばれるラベルを、すべてのファイルやポートなどのリソースにはタイプと呼ばれるラベルを付与します。例えば、FC6のデフォルトのポリシーでは、Webサーバ関連の一部に関し、以下の図のようなラベルが付与されています。

 そして、上図の赤い矢印のようにラベル間でアクセス権限を設定します。例えば、Apacheのhttpdプロセスにindex.htmlファイルへの読み込み権限を与えるためには、http_tドメインとhttp_sys_content_tタイプの間に読み込み権限を設定します。

 このように、ポリシーでは、ラベル間で1つ1つアクセスの許可を与えていきます。そして、ポリシーで設定されたアクセスのみをSELinuxは許可します。つまり、SELinuxが原因で動作しない場合は、ほとんどのケースでポリシーの設定を疑えばよいということになります。

SELinuxの動作モード

 さて、次にSELinuxの動作モードも知っておく必要があります。SELinuxには、disableモードを含め3つのモードがあります。

  • disableモード:SELinuxを完全に無効にする。
  • enforcingモード:ポリシーに違反するアクセスに対し、ログに書き出して拒否する。
  • permissiveモード:ポリシーに違反するアクセスに対し、ログに書き出して許可する。

 disableモードは、SELinuxを完全に無効にします。まれに、SELinuxを無効化するための手段として後述するpermissiveモードを利用している方もいますが、正確にはdisableモードを利用すべきです。

 enforcingモードは、運用時に利用するモードで、いわゆる、「SELinuxが有効」という状態です。実際に運用する際には、このenforcingモードでなくてはいけません。FC6のインストールでもSELinuxの設定について尋ねられたかと思いますが、デフォルトではこのモードとなっています。

 permissiveモードは、システムの動作に問題があったときに利用します。permissiveモードでは、SELinuxのアクセス制御が利いていない状態なので、ログの書き出し以外は、普通のLinuxと同じです。

コラム:SELinuxはなぜ厄介なの?

SELinuxの扱いが厄介な理由の1つは、「基本的にすべてのアクセスを拒否する」点にあります。ポリシーで設定した以外の動作を認めないというのは、セキュリティ的な観点から見れば非常に理にかなっているものです。しかし、正常な動作も妨げられる可能性があるのが問題です。


       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ