Misalkan saya punya sebuah server dengan Solaris 11 sebagai sistem operasinya (hostname
-nya oraclesolaris11). Pada sistem tadi saya punya user operator
.
ttirtawi@macmini:~$ ssh operator@192.168.10.70
Password:
Last login: Wed Jan 1 18:12:26 2014 from 192.168.10.13
Oracle Corporation SunOS 5.11 11.1 September 2012
operator@oraclesolaris11:~$
Sebagai user biasa tentu operator
tidak bisa merestart sistem :
ttirtawi@macmini:~$ ssh operator@192.168.10.70
Password:
Last login: Wed Jan 1 18:12:26 2014 from 192.168.10.13
Oracle Corporation SunOS 5.11 11.1 September 2012
operator@oraclesolaris11:~$ reboot
reboot: permission denied
operator@oraclesolaris11:~$
Ok tentu ini normal karena user operator adalah normal user bukan root
user. Biasanya user bisa login sebagai root
(selama tahu password root
) untuk kemudian merestart sistem. Asumsi user operator
tahu password root
sistem ini :
operator@oraclesolaris11:~$ su - root
Password:
Roles can only be assumed by authorized users
su: Sorry
operator@oraclesolaris11:~$
Upss ternyata di Solaris 11 user biasa tidak bisa login sebagai root
. Tidak seperti Linux atau Solaris versi sebelumnya, root
user di dalam Solaris 11 didefinisikan sebagai role
, Sederhananya dalam Bahasa Indonesia kita bisa terjemahkan roles
sebagai “peran”. Untuk bisa login sebagai root
, user biasa perlu diberi “peran” sebagai root
.
operator@oraclesolaris11:~$ roles
No roles
operator@oraclesolaris11:~$
Ok mari kita beri peran root
kepada user operator. Saya punya user lain yaitu ttirtawi
yang memiliki roles sebagai root
.
ttirtawi@oraclesolaris11:~$ su - root
Password:
Oracle Corporation SunOS 5.11 11.1 September 2012
root@oraclesolaris11:~#
root@oraclesolaris11:~# usermod -R+"root" operator
UX: usermod: operator is currently logged in, some changes may not take effect until next login.
root@oraclesolaris11:~#
Setelah diberi roles, user operator
perlu melakukan login ulang.
ttirtawi@macmini:~$ ssh operator@192.168.10.70
Password:
Last login: Wed Jan 1 18:12:47 2014 from 192.168.10.13
Oracle Corporation SunOS 5.11 11.1 September 2012
operator@oraclesolaris11:~$ roles
root
operator@oraclesolaris11:~$
Perintah roles
berguna untuk melihat peran apa saja yang dimiliki oleh user. Karena sekarang user operator
bisa berperan sebagai root
, tentu mudah bagi user operator
untuk merestart sistem :
operator@oraclesolaris11:~$ su - root
Password:
Oracle Corporation SunOS 5.11 11.1 September 2012
root@oraclesolaris11:~# reboot
Connection to 192.168.10.70 closed by remote host.
Connection to 192.168.10.70 closed.
ttirtawi@macmini:~$
Oh ya tadi lupa disebutkan tidak cukup diberi role sebagai root
, user operator
perlu tahu juga password root
.
Tapi tentu ini cukup berbahaya karena sekarang user operator
bisa melakukan segala hal yang tadinya hanya root
yang bisa melakukan. operator
sekarang memiliki akses yang berlebihan dari sekadar kebutuhan awalnya untuk merestart sistem.
Lalu pertanyaan selanjutnya bagaimana caranya memberi akses pada user biasa hanya untuk merestart sistem? Caranya dengan mendefinisikan sebuah role baru.
- membuat role baru atau sederhananya membuat “peran” baru.
- membuat profil untuk role tersebut.
- mengisi profil tadi dengan perintah-perintah yang ingin diberikan
- memberi kuasa pada user tertentu untuk bisa memainkan “peran” baru tadi.
Kita perlu membuat role baru lalu mendefinisikan profilenya supaya hanya bisa mengakses perintah reboot
. Misalkan kita sebut peran baru ini sebagai restart
root@oraclesolaris11:~# roleadd -m -d /export/home/restart restart
80 blocks
root@oraclesolaris11:~#
root@oraclesolaris11:~# passwd restart
New Password:
Re-enter new Password:
passwd: password successfully changed for restart
root@oraclesolaris11:~#
Menambah role sama prinsipnya sama dengan menambah user biasa. Karena mirip seperti user
biasa, maka role yang tadi sudah kita buat juga terdaftar pada file /etc/passwd
& /etc/shadow
:
root@oraclesolaris11:~# grep restart /etc/passwd
restart:x:54325:10::/export/home/restart:/usr/bin/pfbash
root@oraclesolaris11:~#
root@oraclesolaris11:~# grep restart /etc/shadow
restart:$5$lRko9uVR$P7Z3KkcPPnKC19oNHH.TjMKI7aMiF55ZI4PNUi/scdB:16071::::::11376
root@oraclesolaris11:~#
Yang membedakan hanyalah kita tidak bisa login langsung sebagai role tersebut.
Setelah kita punya role baru, kita perlu membuat profil baru untuk role tersebut. Misalnya kita buat profil dengan nama RESTART
:
root@oraclesolaris11:~# vi /etc/security/prof_attr
root@oraclesolaris11:~#
#
# The system provided entries are stored in different files
# under "/etc/security/prof_attr.d". They should not be
# copied to this file.
#
# Only local changes should be stored in this file.
# This line should be kept in this file or it will be overwritten.
#
RESTART:::profile untuk restart sistem:help=restart.html
root@oraclesolaris11:~#
Setelah kita punya profile RESTART
tadi, lalu kita berikan profil tadi kepada role restart
dengan menggunakan perintah rolemod
seperti contoh berikut ini :
root@oraclesolaris11:~# rolemod -P+"RESTART" restart
Daftar profil yang sudah diberikan pada suatu role bisa dilihat pada file /etc/user_attr
:
root@oraclesolaris11:~# grep restart /etc/user_attr
restart::::type=role;profiles=RESTART;roleauth=role
root@oraclesolaris11:~#
Langkah selanjutnya kita harus mendefinisikan perintah apa saja yang bisa dijalankan oleh profil RESTART
. Caranya adalah dengan menambah definisi baru pada file /etc/security/exec_attr
(untuk restart sistem profil ini perlu diberi akses pada perintah reboot
) :
root@oraclesolaris11:~# vi /etc/security/exec_attr
#
# The system provided entries are stored in different files
# under "/etc/security/exec_attr.d". They should not be
# copied to this file.
#
# Only local changes should be stored in this file.
# This line should be kept in this file or it will be overwritten.
#
RESTART:suser:cmd:::/usr/sbin/reboot:euid=0
root@oraclesolaris11:~#
Sampai di sini role
baru kita tadi sudah bisa melakukan restart sistem. Tapi seperti tadi sudah dijelaskan kita tidak bisa langsung login sebagai role. Yang bisa dilakukan adalah memberi kuasa pada user tertentu untuk bisa memainkan role baru tadi.
Jadi langkah terakhir adalah memberi kuasa baru pada user operator
untuk bisa memainkan “peran” restart
:
root@oraclesolaris11:~# usermod -R+"restart" operator
UX: usermod: operator is currently logged in, some changes may not take effect until next login.
root@oraclesolaris11:~#
Setelah user operator
melakukan login ulang sekarang operator
sudah memiliki “peran” baru :
ttirtawi@macmini:~$ ssh operator@192.168.10.70
Password:
Last login: Wed Jan 1 19:31:20 2014 from 192.168.10.13
Oracle Corporation SunOS 5.11 11.1 September 2012
operator@oraclesolaris11:~$ roles
restart
operator@oraclesolaris11:~$
Mari kita coba untuk merestart sistem dengan menggunakan role
tadi :
operator@oraclesolaris11:~$ reboot
reboot: permission denied
operator@oraclesolaris11:~$ su - restart
Password:
Oracle Corporation SunOS 5.11 11.1 September 2012
restart@oraclesolaris11:~$ reboot
Connection to 192.168.10.70 closed by remote host.
Connection to 192.168.10.70 closed.
ttirtawi@macmini:~$
Berhasil, dengan adanya role restart
maka user operator
bisa mengakses perintah reboot
tanpa bisa mengakses perintah-perintah penting lainnya; seperti misalnya mematikan network interface :
restart@oraclesolaris11:~$ ipadm down-addr net0/v4
ipadm: cannot mark the address down: Insufficient user authorizations
restart@oraclesolaris11:~$
Manajemen akses pada perintah-perintah penting jadi lebih mudah dengan adanya role
. Kita tinggal menambahkan perintah-perintah yang dibutuhkan pada role yang bersangkutan. Konsep inilah yang dikenal dengan nama RBAC singkatan dari Role Based Access Control.