Manajemen Hak Akses User dengan Sudo


Keuntungan menggunakan sistem operasi berbasis Unix dan Linux adalah konfigurasi sistem operasi yang lebih bebas, memungkinkan seorang user dapat melakukan konfigurasi pada system nya sesuai keinginan dan kebutuhannya tanpa terpaku pada standar yang dibuat oleh developer sistem operasi tersebut. Kebebasan yang diberikan itu bisa dalam manajemen aplikasi yang berjalan di atas system, manajemen keamanan, manajemen user beserta hak aksesnya terhadap system yang ada, hingga dapat melakukan editing terhadap code sistem operasi yang digunakan.
Kali ini, kita akan membahas salah  satu cara yang biasa dilakukan oleh administrator system dalam mengatur hak akses bagi user lain dalam sebuah sistem operasi berbasis Linux dan Unix dengan menggunakan SUDO.
Sebagai sebuah sistem operasi yang multiuser (memungkinkan pengguna yang banyak), Unix dan Linux haruslah memiliki pengaturan terhadap hak akses bagi masing-masing user yang ada untuk menimalisir gangguan keamanan yang mungkin dapat terjadi. Implementasinya adalah pembatasan hak akses antara user biasa, dan root sebagai administrator system. User biasa tentulah tidak akan memiliki level akses yang sama terhadap root. Root sebagai pemegang hak akses tertinggi dalam sebuah sistem operasi yang dapat melakukan pengaturan sepenuhnya terhadap system.  Untuk menjalankan perintah, service, ataupun aplikasi tertentu haruslah dilakukan oleh root. User haruslah meminta bantuan dan ijin autentikasi oleh root jika ingin menjalankan perintah, service, atau aplikasi yang ada. Hal ini akan membuat pekerjaan sebagai system administrator (root) semakin rumit dan banyak. Apalagi jika pekerjaan tersebut dilakukan berulang-ulang, pekerjaan root menjadi tidak efisien. Semua harus dilakukan oleh root.
Untunglah sudo memberikan solusi manajemen hak akses tersebut. Dengan adanya sudo, seorang sysadmin dapat mendelegasikan sebagian fungsi administrasi sistem kepada user yang terpercaya. Jadi seandainya dalam sebuah system, ada 10 user, administrator system dapat mempercayakan administrasi tugas tertentu kepada user yang dipercaya atau kepada group tertentu. Sudo ini akan memberikan hak akses root ke user.
Apa itu sudo? dan apa fitur yang ditawarkannya?
Sebenarnya sudo merupakan singkatan dari superuser do dan merupakan sebuah program yang memungkinkan system administrator untuk memberikan hak akses tertentu pada seorang atau lebih user atau pada group untuk menjalankan sebagian atau seluruhnya perintah yang seharusnya dilakukan oleh root atau user lain. Tentunya, untuk tetap menjaga keamanan, semua aktifitas yang dilakukan oleh user menjadi root ini akan di log, sudo bekerja pada perintah yang diberikan.
Fitur-fitur yang ditawarkan oleh sudo diantaranya :
  • Kemampuan membatasi perintah yang dapat dilakukan per host.
  • Sudo akan menyimpan seluruh aktifitas yang dilakukan oleh user dalam file log, hal ini akan berguna dalam proses audit yang dilakukan jika dikemudian hari terjadi hal-hal yang tidak diinginkan.
  • Sudo memanfaatkan sesi waktu yang dapat digunakan selama menjalankan perintah sebagai root, memiliki time expired (timeout), sehingga seorang user hanya dapat menjadi root dalam interval waktu yang dikonfigurasi. Jika waktu sesi habis maka user harus login lagi untuk dapat menjadi root lagi.
  • Sudo memberikan file konfigurasi /etc/sudoers yang dapat digunakan untuk mengontrol semua hak akses yang diberikan kepada user atau grup tertentu. Dalam konfigurasi tersebut juga dapat diatur perintah yang dapat diberikan bagi user tertentu.
Kenapa harus sudo?
Kenapa harus menggunakan sudo? tentulah dasar pertama  memilih konsep sudo ini adalah efektifitas dan efisien pekerjaan seperti yang telah dipaparkan sebelumnya dan keamanan bagi system yang digunakan. Apalagi jika di lingkungan komputasi yang padat dan besar. Dengan sudo dapat diatur akses secara detal bagi user untuk administrasi pada pekerjaan tertentu. Tentunya akan sangat rawan jika harus membagikan password root kepada user lain, ditambah lagi fasilitas logging yang diberikan sudo memudahkan proses audit. Dengan sudo juga seorang administrator system dapat mengimplementasikan konsep group policy, yang memungkinkan memiliki hak administratif bagi seluruh user dalam group tertentu pada pekerjaan tertentu. Misalnya melakukan shutdown, instalasi aplikasi, pengaturan web hosting, dan lain lain.
Password yang digunakan ketika menjalankan sudo?
Ketika menjalankan perintah sudo, maka user akan diminta untuk menginputkan password untuk autentifikasi. Ada pilihan penggunaan password yang dapat diterapkan, pertama adalah dengan penggunaan password masing-masing user sendiri, sehingga saat memasukkan password maka user dapat menjalankan perintah yang diinginkan. Kedua adalah dengan cara meminta user yang berhak untuk memasukkan password yang inginkan (dalam hal ini karena ingin menjadi root maka password root lah yang harus digunakan). Cara kedua ini berpatokan pada waktu sesi user tersebut menjadi root, sehingga setelah waktu sesi berakhir maka user akan otomatis logout dan berpindah menjadi user biasa lagi. Kebanyak para administrator system menggunakan cara pertama, namun dalam keadaan yang beragam cara kedua juga dapat digunakan.
Proyek Sejenis Lainnya.
Sudo bukanlah satu-satunya program yang dapat digunakan dalam melakukan pengaturan hak akses administrasi sistem tertentu kepada user. Ada beberapa proyek aplikasi gratis lainnya yang dapat dijadikan pilihan :
Namun demikian, sudo merupakan program yang paling populer untuk menangani ini.
Instalasi, Konfigurasi, dan Cara Penggunaan Sudo
Paket aplikasi sudo dapat diperoleh di http://www.sudo.ws. Instalasi nya sama seperti instalasi paket aplikasi lain.
Pertama ekstrak paket :
# tar -xzvf namapaket.tar.gz
untuk paket berekstensi tar.bz2 :
# tar -xjvf namapaket.tar.bz2
Lalu :
# cd dirPaket
# ./configure
# make
# make install
Untuk pengguna FreeBSD, cukup lakukan instalasi menggunakan port :
# cd /usr/portssecurity/sudo
# make install clean
Selanjutnya, melakukan konfigurasi pada file /etc/sudoers dengan perinta :
# visudo
Perintah di atas akan menggunakan default text editor yang didefinisikan pada global konfigurasi system. Untuk menggunakan editor text lain misalnya pico dengan perintah :
# export VISUAL="pico -w"
Akan tampil file konfigurasi seperti berikut (ini konfigurasi pada sistem FreeBSD infoos) :
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Uncomment if needed to preserve environmental variables related to the
# FreeBSD pkg_* utilities and fetch.
#Defaults       env_keep += "PKG_PATH PKG_DBDIR PKG_TMPDIR TMPDIR PACKAGEROOT PA
CKAGESITE PKGDIR FTP_PASSIVE_MODE"
# Additionally uncomment if needed to preserve environmental variables
# related to portupgrade.
#Defaults       env_keep += "PORTSDIR PORTS_INDEX PORTS_DBDIR PACKAGES PKGTOOLS_
CONF"
# Runas alias specification
# User privilege specification
root    ALL=(ALL) ALL
khashaz ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
%wheel  ALL=(ALL) ALL
# Same thing without a password
# %wheel        ALL=(ALL) NOPASSWD: ALL
# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
Pada dokumentasi sudo, konfigurasinya sangat rumit. Tapi untuk menyederhanakannya cukuplah melakukan konfigurasi pada bagian :
# User privilege specification
root    ALL=(ALL) ALL
khashaz ALL=(ALL) ALL
ini bagian untuk mendelegasikan user yang dapat menggunakan sudo.
Jika ingin mengizinkan anggota group wheel untuk menggunakan sudo tanpa menggunakan password maka konfigurasinya :
%wheel  ALL=(ALL) ALL
Jika ingin mendefinisikan seorang user dapat menjalankan perintah apachectl maka dengan konfigurasi
khashaz ALL=(root) /sbin/apachectl
Misalnya ingin mengizinkan setiap user dalam group user untuk melakukan restart dan shutdown, atau melakukan mount :
%users localhost=/sbin/shutdown -h now
%users localhost=/sbin/shutdown -p now
%users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
Formatnya harus menyertakan path perintah yang akan didefinisikan.
Selain itu juga dapat dilakukan pendefinisian alias, untuk pengelompokkan sesuatu, misalnya pengelompokkan alias dengan nama Admins, atau nama yang lain atau untuk pengelompokkan perintah shell di linux. formatnya :
User_Alias USERGROUPNAMEALIAS = user1, user2, etc...
misalnya :
User_Alias     ADMINS = khashaz, infoos, bude
User_Alias     PARTTIME = kim, jeffry, andi
User_Alias     LINUXGROUP = jhon, jodi
untuk membuat group perintah yang dapat digunakan dengan format :
Cmnd_Alias COMMANDALIASNAME = command1,command2,etc...
Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, /usr/local/bin/tcsh, /usr/bin/rsh, /usr/local/bin/zsh
Cmnd_Alias  BROWSE = /bin/ls, /bin/cd, /bin/cat
Cmnd_Alias KILL = /bin/kill
Cmnd_Alias  USERS = /usr/sbin/adduser [A-z]*,/usr/sbin/userdel -r [A-z]*
untuk alias hostname dengan format :
User_Alias USERGROUPNAMEALIAS = user1, user2, etc...
Menggunakan sudo
Untuk menggunakan perintah sudo cukup sederhana, hanya menambahkan perintah sudo pada awal perintah yang akan dijalankan, dengan format perintah :
$ sudo [perintah_yang_membutuhkan_akses_root] [parameter]
Lalu akan diminta untuk memasukkan password user yang bersangkutan.
Untuk dokumentasi manual penggunaan sudo dapat dilihat dengan menggunakan perintah :
# man sudo
Selamat menggunakan sudo...

Comments

Popular Posts