follow me

SmackでとりあえずMAC

Linuxの標準Kernelで搭載されてるSmackです。
MAC系の比較にはよく出てくる訳ですが、SELinuxや、RSBACに比べ情報は少なめです。

とりあえず、catコマンドに制限をつけて動作確認してみました。
catコマンドとpasswdファイルに別のラベルを付けてみる。
# attr -S -s SMACK64 -V CAT_EXEC /bin/cat
# attr -S -s SMACK64 -V PASS_T /etc/passwd
/etc/smack/accessesに対しこんな設定を入れてみる。
CAT_EXEC _ r
_ CAT_EXEC rwax
smackloadコマンドでポリシーをロード。
# smackload < /etc/smack/accesses
すると、CAT_EXECは、PASS_Tに対して権限がないのでミスる。
# ls -al /etc/passwd
-rw-r--r-- 1 root root 962 12月14日 21:38 /etc/passwd
# su - tivoli
id: cannot find name for user ID 500
[I have no name!@ ~]$ cat /etc/passwd
cat: /etc/passwd: 許可がありません
各ファイルに対し、attrでラベルを埋め込む為、複雑な事は難しいでしょう。
SELinuxや、TOMOYOの方がポリシーの記述はやりやすいので、あえてSmackを選ぶメリットは少ないかも。
シンプルなMAC実装ではあるが、この扱いにくさはなんとかならないものか。。。

で設定方法もろもろのメモを以下にちまちまと記載。

アクセス制御(/etc/smack/accesses)の書き方は、以下形式で記載する。
<subject-label> <object-label> <access>

■accessの指定は以下となり、UNIXのパーミッションと同様となる。

・read (R or r) access
・write (W or w) access
・execute (X or x) access
・append (A or a) access
・A dash (-) can be used as a place holder or to express that no access be permitted if use by itself.


■ラベルには、既に意味を持つもの(_, ^, *, ?)が存在する。
アクセス制御は、以下ルールに基づき実施される。
ラベルの文字数は、23文字以内と制限があることには注意が必要である。

(1) "*"ラベルが付けられているタスクからの要求に対しては、全てDENY となる。
(2) "^"のラベルが付けられているタスクからの読み込み/実行要求は、許可される。
(3) "_"のラベルが付けられているオブジェクトにたいする読み込み/実行要求は、許可される。
(4) "*"のラベルが付けられているオブジェクトに対しては、全ての操作が許可される。
(5) タスクとオブジェクトのラベルが一致する場合には、全ての操作が許可される。
(6) ロードされたポリシにより明示的に定義されている操作は、全て許可される。
(7) その他のアクセスは全て拒否される。

関連情報

SmackでとりあえずMAC | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。