SELinuxに関する世界観です。
SELinuxでは、ファイルやディレクトリごとのパーミッションの仕組みだけではなく、HTTP/FTPなどのプロセスごとにアクセス制限をかけられる。また、rootユーザーにも制限がかけられる。
rootの絶大な権限を制限することができ、プロセスにドメインを、リソースにタイプを付加し、これらにアクセスベクタ(許可された操作)をセキュリティポリシーとすることで、細かく権限を制限できる。たとえば、Web管理プロセスにはWeb管理に必要なファイルのみアクセスできる。
後日注記:メインフレームでは、セキュアOS環境で運用や管理を行うのが基本。これに対してオープン系では基本的にセキュアOSではない。このような時にSELinuxのようなセキュアOSモジュールを利用できる。
以下は理由がわかれば怖くない!SELinux とのつきあい方 (フェンリル | デベロッパーズブログ)を参考に執筆しました。
基本的に、動作モードが3つ(有効のEnforcing, ログに記録のPermissive, 無効のDisable)あり、getenforceとsetenforceでその時のモードを、/etc/selinux/configでシステムのモードを変更できる。
ファイルはパーミッションだけではなくSELinuxコンテキストを持つ。lsやpsに-Zオプションを付けることでコンテキストを表示できる。コンテキストは4つの項目に区切られており、それぞれ「ユーザ:ロール:タイプ:機密ラベル」となる。中でも基本となるのがタイプ。
動作拒否時のログは、/var/log/audit/audit.logに出力される。
以下はSELinux を使おう.使ってくれ. - Qiitaを参考に執筆しました。
タイプを変更するには、chconで個別的にタイプを変更する以外に、システムの既定のディレクトリ(/var/wwwなど)のために用意されている基本テンプレートを使うことで、restoreconコマンドを使ってタイプを楽に変更できる。
# restorecon -RF /var/www/html/
SELinuxと上手く付き合うためには、以下のようなページが参考になるかもしれない。
AppArmorを参照のこと。
Linux用のセキュアOSモジュール。セキュリティポリシーを自動的に学習する機能を備える。
TOMOYO Linuxは名前がネタすぎるせいで実用のことを考えられていませんが、使おうと思えば真面目に使えます。以下を参照のこと。
UNIXシステム管理(ユーザーとパーミッション)も参照のこと。
セキュリティも参照のこと。
HTTPなどのプロセス単位で実行・アクセス許可ができる。
rootユーザに全ての特権を認めず、rootユーザにおいても権限を制限できる。