SELinuxとは、米国国家安全保障局(NSA:National Security Agency)で開発され、カーネル2.6系のLSM(Linux Security Module)にアドオンされる形で実装されたセキュリティ強化モジュールである。
カーネル2.6にはあらゆる操作にLSM操作関数が導入されており、その延長でSELinuxポリシが評価される。
Source : プロセスのドメイン Object : ファイルやソケット等のシステムコールの操作対象 Action : ファイルのread(2)やソケットのlisten(2)等の操作対象
audit2allow SELinuxの出力ログを読み、適切なallow文を出力してくれる。(objdump)
setfilecon ファイルに対してセキュリティコンテキストを直接付与する。
sestatus SElinuxの実効状態を把握する。(ls -Z, ps -Z)
・特権ユーザ(root)であっても、SELinuxのアクセス制御を無視できない。
・各ユーザは、自分の所有するリソースのアクセス権限は変更できない。
・全アクセス制御はセキュリティポリシーによって一元管理される。
・カーネルの扱う各種のリソース(プロセス/ファイル/ソケット/共有メモリ)等に、タイプと呼ばれるSELinux独自のラベルを付与する。
・アクセス制御はタイプ間の関係を定義することによって行われ、アクセス許可は「誰が(Subject)」、「誰に(Target)」、「何をする(Action)」を列挙する。
・リソースは親のタイプ/ドメインを継承する。但し、特定のイベント時に別のタイプ/ドメインに変化することがある。(タイプドメイン遷移)
・アクセスの許可/不許可はタイプ間の関係として記述される。
・一時的に別の権限が必要な場合ドメイン遷移を行う。
・明示的に許可されない操作はすべて拒否
#ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename)
・プロセスの移動できるドメインを一定範囲に制限することができる。これによって、TEではプログラムの挙動に着目したアクセス制御を行い、RBACではユーザの役割に応じてアクセスできる範囲を制限することが可能。
・ロールは遷移可能なドメインの範囲を制限する。
・TEによってプロセスの振る舞いに着目したアクセス制御、RBACによってユーザの役割に着目したアクセス制御が可能になる。
・ユーザ名、ロール、タイプ/ドメインの組み合わせをセキュリティコンテキストと呼ぶ
セキュリティコンテキスト例; プロセス: hogehogeuser:user_r:user_t ファイル: system_u:object_r:user_home_t
SELinux Policy Editor
http://selpe.sourceforge.jp/
日立が作った、SELinuxのポリシーを編集するためのGUIツールです。