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.