RBACと最小特権機能を組み合わせて一部のコマンドに限定して特権を与える
今回はRBAC(Role-Based Access Control)に最小特権機能(Least
Privilege機能)を絡めて、より精度の高いアクセスコントロールを設定する方法を紹介する。
RBACとはSolaris 8
からの機能で、役割(Role)を実ユーザにアサインすることでroot権限でしか実行することのできないコマンド群を一般ユーザにも実行できるようにす
るものだ。RBACに関しては常識なのでここでは具体的な説明はせず、Solaris10から実装された最小特権機能との絡みを中心に紹介していく。
一般ユーザに file_dac_read 特権のついた cat コマンドを実行できるようにすることを例にして説明する。
ログイン時に file_dac_read 特権を与える方法はこちらで紹介しているが、ここではさらにコマンドを限定して、しかも以前のRBAC機能のように
root権限を全面的に与えない設定方法を紹介する。この方法を応用すれば、セキュリティレベルを保ちながら特定のユーザやアプリケーションに本来の権限
以上のことを実行させることが容易になる。
まず、以下のように/etc/security/prof_attrファイルにPrivTestという権利プロファイルを定義するエントリを追加する。
#
tail -1 /etc/security/prof_attr
PrivTest:::Priv Test profile:
さらに/etc/security/exec_attrファイルに/usr/bin/catコマンドにfile_dac_read特権を割り当てる。
ポイントは今までのRBACのようにuid=0やeuid=0などを指定していないところだ。
Solaris10では、root権限全般ではなく、特定の特権に絞って割り当てることができるようになっている。
#
tail -1 /etc/security/exec_attr
PrivTest:suser:cmd:::/usr/bin/cat:privs=file_dac_read
あとは通常のRBAC設定同様にPrivTest権利プロファイルを持つ、役割を作成して、一般ユーザに割り当てる。
#
roleadd -d /export/home/rootcat -m
-P PrivTest,All rootcat
64 ブロック
#
passwd rootcat
新しいパスワード:
新しいパスワードを再入力してください:
passwd: rootcat のパスワードが変更されました
#
usermod -R rootcat user1
上記設定でPrivTest権利をrootcat役割に持たせ、実ユーザuser1にrootcat役割をアサインしている。
/etc/user_attrファイルは以下の2行が追加される。
#
tail -2 /etc/user_attr
rootcat::::type=role;profiles=PrivTest,All
user1::::type=normal;roles=rootcat
あとは動作確認だ。
#
su - user1
Sun Microsystems Inc. SunOS
5.10 Generic January 2005
$
more /etc/shadow
/etc/shadow: アクセス権がありません。
$
cat /etc/shadow
cat: /etc/shadow をオープンできません。
当然、rootcat役割をまだ担っていないのでmoreコマンドだろうがcatコマンドだろうがアクセス権のないファイルは読み込めない。
$
su - rootcat
Password: xxxxxx
$
id -p
uid=2001(rootcat) gid=1(other) projid=3(default)
$
more /etc/shadow
/etc/shadow: アクセス権がありません。
$
cat /etc/shadow
...
...
listen:*LK*:::::::
gdm:*LK*:::::::
webservd:*LK*:::::::
nobody:*LK*:6445::::::
noaccess:*LK*:6445::::::
nobody4:*LK*:6445::::::
user1:AxEfnuHATDQB2:12930::::::
上記のようにrootcat役割に変更後はcatコマンドでのみアクセス権のないファイルを読み取ることが可能になる。
また、以下のpprivコマンドの結果から プロファイルシェルpfshに特別な特権がついていないこともわかる。
$
ppriv $$
1085: -pfsh
flags = <none>
E: basic
I: basic
P: basic
L: all
========================================
※詳しい情報は以下のトレーニングコース参照
Solaris10新機能(システム管理編)
Solaris10 OSセキュリティ
========================================
Solaris系技術トレーニング一覧