SELinux


FrontPage


SELinux

SELinuxとは、米国国家安全保障局(NSA:National Security Agency)で開発され、カーネル2.6系のLSM(Linux Security Module)にアドオンされる形で実装されたセキュリティ強化モジュールである。

  1. SElinuxはカーネル2.6で標準に含まれており、ファイルアクセス操作等のシステムコールはすべてSELinuxによる介入が行われる。
  2. UID/GIDとread/write/executableに基づいた既存のUNIX形式アクセス制御に加えて、独自のアクセス制御を提供する。特権ユーザ(root)であっても無視できない。
  3. SELinuxの提供するアクセス制御ルールは、セキュリティポリシーと呼ばれるファイルに記述され、明示的に許可されたもの意外はすべて拒否される。
  4. RHEL4は、targetedポリシという制約の緩いセキュリティポリシを適用することで、各種アプリケーションの動作に問題が出ないように配慮されている。

SELinuxの動作

カーネル2.6にはあらゆる操作にLSM操作関数が導入されており、その延長でSELinuxポリシが評価される。

Source : プロセスのドメイン
Object : ファイルやソケット等のシステムコールの操作対象
Action : ファイルのread(2)やソケットのlisten(2)等の操作対象
SELinux.jpg

SELinuxの動作モード

  1. Enforcingモード
    要求がポリシーに合致するかどうか検査し、アクセス制御を行う。
  2. Permissiveモード
    要求がポリシーに合致するかどうか検査し、違反が合った場合ログを出力し、アクセス制御は行わない。
  3. Disableモード
    SELinuxを無効にするモード

SELinuxのセキュリティポリシの種類

  1. Targetedポリシ
    ・Apache,bind等の特定プロセス以外はLegacyなUnixと同じように振る舞うことができるように設定されたポリシ
    ・対象を絞っている文導入は容易だが、対象外のアプリケーションの脆弱性には無力
  2. Strictポリシ
    ・SELinux-MLでメンテナされているポリシ
    ・広範囲なアプリケーション用のポリシがメンテナンスされており、基本的に必要最小限度の権限を割り当てる。
    ・設定は非常に複雑。ただ、ガチガチにしても安全かどうかはわかりません。

メモ

audit2allow SELinuxの出力ログを読み、適切なallow文を出力してくれる。(objdump)
setfilecon ファイルに対してセキュリティコンテキストを直接付与する。 sestatus SElinuxの実効状態を把握する。(ls -Z, ps -Z)


SELinuxの特徴

MAC(Mandatory Access Control)強制アクセス制御

・特権ユーザ(root)であっても、SELinuxのアクセス制御を無視できない。
・各ユーザは、自分の所有するリソースのアクセス権限は変更できない。
・全アクセス制御はセキュリティポリシーによって一元管理される。

TE(Type Endorcement)

・カーネルの扱う各種のリソース(プロセス/ファイル/ソケット/共有メモリ)等に、タイプと呼ばれるSELinux独自のラベルを付与する。
・アクセス制御はタイプ間の関係を定義することによって行われ、アクセス許可は「誰が(Subject)」、「誰に(Target)」、「何をする(Action)」を列挙する。
・リソースは親のタイプ/ドメインを継承する。但し、特定のイベント時に別のタイプ/ドメインに変化することがある。(タイプドメイン遷移)
・アクセスの許可/不許可はタイプ間の関係として記述される。
・一時的に別の権限が必要な場合ドメイン遷移を行う。
・明示的に許可されない操作はすべて拒否

#ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename)

TEで付加できるタイプ/ドメイン

  1. ファイルシステム
  2. レギュラーファイル
  3. ディレクトリ
  4. シンボリックリンクファイル
  5. ソケットファイル
  6. スペシャルファイル(デバイスファイル、PIPE)
  7. ファイルディスクリプタ
  8. 通信ソケット
  9. IPアドレス
  10. NetworkI/F
  11. UNIXドメインソケット(Stream/Dgram)
  12. セマフォ
  13. メッセージキュー
  14. 共有メモリ
  15. プロセス

RBAC(Role Based Access Control)~

・プロセスの移動できるドメインを一定範囲に制限することができる。これによって、TEではプログラムの挙動に着目したアクセス制御を行い、RBACではユーザの役割に応じてアクセスできる範囲を制限することが可能。
・ロールは遷移可能なドメインの範囲を制限する。
・TEによってプロセスの振る舞いに着目したアクセス制御、RBACによってユーザの役割に着目したアクセス制御が可能になる。
・ユーザ名、ロール、タイプ/ドメインの組み合わせをセキュリティコンテキストと呼ぶ

セキュリティコンテキスト例;
プロセス: hogehogeuser:user_r:user_t
ファイル: system_u:object_r:user_home_t

SELinuxの簡単設定

SELinux Policy Editor
http://selpe.sourceforge.jp/

日立が作った、SELinuxのポリシーを編集するためのGUIツールです。

最新の20件

2006-12-20 2005-11-17 2005-11-09 2005-10-28 2005-10-24 2005-10-13

  • counter: 3777
  • today: 1
  • yesterday: 0
  • online: 1