Solaris 10利用RBAC加強root帳號安全性

Solaris有支援Rose-Based Access Control(RBAC),
以增加權限控管的彈性,新增了角色(Role)的機制。

因為系統的管理可能有多人,因此root的密碼可能被分享,
但是root是系統的超級管理員,擁有系統所有的權限,
而且登入時只以root登入,發生問題時根本無法得知身分。

所以我們可以將root由使用者身分轉變為角色,其特點如下:
1、角色不能直接登入系統,只能用su切換角色,換句話說,
   使用者只能用自己的帳號登入,不能用root登入。
2、因為只能用自已的帳號登入後再切換為root角色,
   所以可以由/var/adm/sulog得知是誰切換的。
3、就算使用者知道root角色的密碼(角色必須設定密碼),
   但是系統並未授予帳號root角色時,該帳號無法切換root。

-----------------------------------------------------------------
設定root轉換為角色方法如下:

1、新增一個使用者帳號(如已有使用者帳號可省略)
   # useradd -m -d /export/home/admin1 admin1
   # passwd admin1
2、將root由使用者身分轉變為角色
   # usermod -K type=role root
3、將root角色指派給新建立的使用者:
   # usermod -R root admin1
-----------------------------------------------------------------
 
完成之後,可以查看/etc/user_attr內的設定改變:

# grep root /etc/user_attr
root::::type=role;auths=solaris.* ...略

# grep admin1 /etc/user_attr
admin1::::type=normal;roles=root

接著我們以putty軟體,驗證root無法登入:
login as: root
Using keyboard-interactive authentication.
Password:
Access denied

只能以admin1登入後,再以su - root切換角色
login as: admin1
Using keyboard-interactive authentication.
Password:
Last login: Thu Apr  9 14:27:55 2015 from 192.168.1.39
Oracle Corporation SunOS 5.10 Generic Patch January 2005
$ su - root
Password:
# id
uid=0(root) gid=0(root)


查看/var/adm/sulog,可以發現帳號的切換情況:
SU 04/09 14:27 + pts/3 admin1-root

在設定上有一點需要特別注意,當root轉變為角色後,
最少要把一個使用者帳號加入root角色,否則一但root登出後,
因為沒有任何帳號擁有root角色,加上root角色又無法登入,
會導致無法使用root權限,只能重開到單機模式(Singel-User),
再以root身份直接登入,重新指派後再正常開機了。

---------------------------------------------------------------
還原root角色為帳號的方法如下:

1、將所有擁有root角色的使用者退出root角色:
   # usermod -R "" admin1

2、將root由角色轉換為帳號:
   # rolemod -K type=normal root
-----------------------------------------------------------------

查看/etc/user_attr內的設定改變:
# grep root /etc/user_attr
root::::type=normal;auths=solaris.*,solaris.grant ...略

從Solaris 11開始,root帳號在圖形安裝介面下預設就一定是角色了,