MCSメモ

MCSを人柱。FC5-test1 をyum updateしたものがベース。
後々まとめるためのメモ。

MCSとは

カテゴリなるものをベースにアクセス制御。MLSの簡易バージョン

  • カテゴリのネーミング
    • s0:|c0-c255| という規則(s0は,MLSのセンシティビティだが,MCSでは気にしない)
      • 追記:「s0」は無くてもOKだったりする。
      • 例: s0:c0
  • 「ユーザ」「ファイル」をカテゴリに所属させる。
  • ファイルにアクセスするためには,ユーザがファイルのカテゴリに所属してる必要がある。
    • 例:カテゴリが「s0:c0」のファイルにアクセスするには,ユーザも「s0:c0」カテゴリに所属する必要がある
  • ファイルが複数カテゴリに属する場合は?
    • ユーザがより広いカテゴリに所属している必要がある
      • 例:ファイルが「s0:c0,c1」カテゴリ(s0:c0,s0:c1に属するという意味)の場合,ユーザはc0,c1カテゴリ両方に所属する必要

ファイルのカテゴリの設定

    • 初期設定
      • chcat |カテゴリ名| |ファイル名|
    • カテゴリに追加
      • chcat +|カテゴリ名| |ファイル名|
    • カテゴリの削除
      • chcat -- -|カテゴリ名| |ファイル名|
    • カテゴリ設定自体の取り消し
      • chcat -d |ファイル名|

カテゴリの確認は今までどおりls -Z

ユーザのカテゴリの設定

/etc/selinux/targeted/seusers
に記述。
設定を反映するには
load_policy
デフォルトでは,全ユーザが全てのカテゴリに属する(いいのか?)
カテゴリの確認はid -Z

semanageコマンドでも設定できるが,現バージョンでは,うまく動かない。
(man semanageがマニュアルになってないし…)
例:
semanage login -m -r s0:c1 root
rootユーザのカテゴリをc1に変更
semanage -aはうまく動かず…(python勉強しなきゃ)

実験

(1) 初期状態
[root@localhost ~]# touch /root/foo.bar
[root@localhost ~]# ls -Z /root/foo.bar

  • rw-r--r-- root root root:object_r:default_t /root/foo.bar

カテゴリは設定されてない
(2) foo.barをc3カテゴリに所属させる
[root@localhost ~]# chcat s0:c3 foo.bar

(3) 確認
[root@localhost ~]# ls -Z

  • rw-r--r-- root root root:object_r:default_t:s0:c3 foo.bar

確かにc3カテゴリ

(4)ユーザrootのカテゴリを変更
/etc/selinux/targeted/seusers

root:root:s0:c0
としてみる。
で,
# load_policy

[root@localhost targeted]# id -Z
root:system_r:unconfined_t:s0:c0

(5) ユーザのカテゴリとファイルのカテゴリは違うのでアクセス拒否
[root@localhost targeted]# cat /root/foo.bar
cat: /root/foo.bar: 許可がありません

カテゴリを人間に読みやすい文字列に

c0,c1というのはイマイチ。
/etc/selinux/targeted/setrans.conf
を編集しよう!

その他

  • 新規作成ファイルのカテゴリはユーザと同じ

なぜ必要?普通のUNIXの「グループ」やACLとの違いは?

http://marc.theaimsgroup.com/?l=selinux&m=112130545202445&w=2
に開発者のJames Morris氏が答えているが,抽象的でよく分からん。
勝手に解釈。

    • ファイルを複数カテゴリに所属させられる
    • DACとは別に設定できる
    • TEを制限する機能である
    • auditされる
    • CAPPとの親和性がある
    • ファイル以外にも適用可能