Get Creative in the Corel Asia-Pacific Digital Art Competition 2010!

Win Big Prizes. From now until August 31, 2010, strut your creative stuff with Corel software in one of Asia’s richest digital art competitions. Submit video, graphics and more to WIN. Grand Prize worth US$10,000. Lucky Draw prizes for voting and sharing the news. Find out at www.corel.com/apac-contest

Friday, September 7, 2007

Menggunakan Perintah Sudo : Untuk Menjaga Keamanan di Ubuntu (2)

Sejauh ini (dalam buku ini; "Hacking Ubuntu" oleh Neal Krawetz, John Wiley & Sons 2007), kita sudah sering menggunakan perintah Sudo untuk menjalankan perintah sebagai root. Perintah Sudo mengijinkan anda untuk menjalankan sebuah perintah sebagai root. Instalasi default dari Ubuntu menyertakan perintah Sudo dan memberikan hak akses kepada user default. Jika anda ingin menjalankan sebuah perintah dengan hak sebagai root, maka anda dapat menggunkan Sudo. Perintah lainnya yang sejenis adalah sudoedit, perintah ini mengijinkan anda untuk mengedit sebuah file sebagai root. Sebagai contoh, untuk mengedit file /var/spool/anacron/ cron.daily, anda dapat menggunkan salah satu perintah ini :
sudo vi /var/spool/anacron/cron.daily
sudoedit /var/spool/anacron/cron.daily

Tip
Perintah sudoedit akan menggunakan editor yang di definisikan sebagai variabel pada $EDITOR. Jika tidak ada editor yang di definisikan disini, maka akan digunakan nano sebagai editor.


Sedikit tentang Sudo
Pada awal perkembangan Unix (sekitar tahun 1970-an), para administrator membutuhkan sebuah cara untuk ber-ganti2x hak aksesnya sebagai user. Ini dapat dilakukan dengan perintah su. Walaupun dibuat untuk merubah hak akses dari user, kegunaan sesungguhnya adalah untuk merubah hak akses dari user biasa menjadi root. (Karena alsan tersebut, perintah su, kadang2x disebut sebagai perintah super-user.)

Ada beberapa resiko yang sangat besar jika menggunakan su untuk menjalankan sebuah peritah sebagai root. Karena semua perintah akan dieksekusi dengan hak akses root. Padahal, seringkali hanya ada sebuah perintah saja diantara serangkaian perintah2x yang kita ketikkan yang memerlukan hak akses root. Selain itu, pada saat melakukan login sebagai root di terminal, kita seringkali lupa terhadap hak akses dari user yang kita gunakan. Sehingga menghapus sebuah file secara tidak sengaja dengan hak akses tersebut, dapat merupakan sebuah bencana bagi kita dibandingkan dengan menghapus file-nya sebagai user biasa.

Sudo diciptakan untuk membatasi perintah2x yang dapat dijalankan dengan hak akses sebagai root. Jadi hanya hak akses dari perintah2x tertentu saja yang diganti. Sehingga Sudo dapat digunakan untuk membatasi perintah2x apa saja yang dapat dijalankan dengan hak akses sebagai root. Setalah perintah tersebut dijalankan, maka anda akan kembali menjadi user biasa. Dengan cara ini, maka hanya perintah yang benar2x memerlukan hak akses sabagai root saja yang akan dijalankan dengan hak akses ebagai root.

Walaupun sistem2x Unix lama tetap mempertahankan perintah su, untuk merubah tingkatan hak akses, tetapi perintah sudo semakin populer. Hampir sebagaian besar distro BSD dan Linux (termasuk Ubuntu), perintah Sudo sudah menjadi standar jika ingin menggunakan hak akses sebagai root. Walaupun perintah su, juga diikut sertakan pada saat proses instalasi Ubuntu, anda tidak dapat menggunakannya sebelum anda merubah password-nya melalui perintah sudo passwd root.


Menambahkan user baru kedalam perintah Sudo
File konfigurasi dari sudo adalah /etc/suders. File konfiguari ini berisi daftar dari, siapa saja yang dapat menjalankan sebuah perintah sebagai root, perintah2x apa saja yang dapat dijalankannya, dan pilihan2x konfigurasi lainnya. Listing 10-1 memperlihatkan nilai default dari file /etc/sudoers. Walaupun file ini dapat di edit dengan menggunakan perintah sudo vi /etc/sudoers atau sudoedit /etc/sudoers, hal ini tidak disarankan untuk anda lakukan. Sebagai gantinya anda dapat menggunakan perintah sudo visudo. Perintah visudo, memastikan bahwa hanya ada seorang saja yang sedang mengedit dalam suatu waktu. Perintah ini juga memeriksa kesalahan2x dari syntax. Jika terjadi kesalahan2x syntax pada file /etc/sudoers, maka anda tidak akan dapat mejalankan perintah sudo lagi untuk memperbaiki kesalahna yang anda buat.

File /etc/sudoers yang default akan memberikan hak akses kepada siapa saja yang tergabung dalam group admin. User yang bukan admin, tidak akan dapat menjalankan perintah dengan hak akses sebagai root. Jika anda ingin menambahkan seseorang kedalam group admin, lakukan hal sebagai berikut :

Gunakan perintah vigr untuk mengedit file /etc/groups.
sudo vigr




===============================================
File /etc/groups berisi daftar dari setiap nama groups, nomor ID group, dan daftar pemakai pada group tersebut yang dipisahkan oleh sebuah tanda koma. Carilah sebuah baris yang dimulai dengan kata admin. Baris tersebut berisi sebuah nama (yang merupakan nama pemakai Ubuntu yang default). Sebagai contoh, nama pemakai default penulis adalah neal dan pada baris tersebut akan tertulis sbb:

admin:x:112:neal

Tambahkan sebuah nama pemakai yang baru pada baris ini. Gunakan tanda koma untuk memisahkan antara nama pemakai. Sebagai contoh, jika penulis ingin menanmbahkan nama pemakai marc, maka penulis akan mengetikkan sbb:

admin:x:112:neal,marc

Simpanlah perubahan tersebut dan keluar dari editor.

Note Perubahan pada /etc/groups tidak langsung dapat digunakan untuk menjalankan aplikasi. Jika pemakai pada saat ini sedang login, dia harus melakukan logout terlebih dahulu untuk dapat melihat perubahan pada groupnya.


Jika anda inging memberikan akses Sudo kepada pemakai lainnya, tetapi anda tidak mau menambahkannya ke dalam group, maka anda dapat menambahkannya sebagai privileged user.

Edit file /etc/suderers dengan menggunakan sudo visudo.

Carilah baris yang berisi root ALL=(ALL) ALL.

Buat baris baru dengan nama pemakai. Sebagai contoh, jika penulis inging memberikan akses kepada "marc", maka penulis akan menambhakan sbb:

root ALL=(ALL) ALL
marc ALL=(ALL) ALL

Penambahan ini, menjelaskan bahwa pemakai dengan nama "root" dan "marc" dapat menggunakan Sudo dan dapat menjalankan perintah apa saja sebagai root.

Simpan perubahan anda dan keluarlah dari perintah visudo.


Listing 10-1: The Default /etc/sudoers File



# /etc/sudoers
#
# This file MUST be edited with the 'visudo'
#
# See the man page for details on how to write a sudoers file.
# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults

Defaults !lecture,tty_tickets,!fqdn

# User privilege specification
root ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL




Merubah Pilihan-pilihan pada perintah Sudo
Perintah Sudo yang default memiliki 3 pilihan yang aktif (enable), yaitu !lecture, tty_ticket, dan !fqdn. Ketiga pilihan ini merupakan sebuah flag - tanda seru (!) akan menon-aktifkan (disable) pilihan tersebut. Pilihan-pilihan lain dapat ditambahkan, termasuk juga nilai-nilai. Pilihan-pilihan tersebut berada pada baris default pada file /etc/suders (gunakan perintah sudo visudo untuk merubah file ini). Beberapa pilihan perintah yang mungkin anda inginkan untuk dirubah adalah:

lecture - Pada saat flag ini aktif (enable), perintah sudo akan memberikan peringatan mengenai menjalankan perintah sebagai root. Ini akan sangat berguna jika dalam suatu sistem memiliki banyak Administrator. Walaupun, orang biasanyanya akan mengabaikan peringatan tersebut. Proses instalasi default pesan dari lecture akan dinon-aktifkan (disable): !lecture.

timestamp_timeout - Pilihan ini memberikan delay waktu dalam menit sebelum perintah sudo meminta anda untuk mengisikan passwordnya kembali. Jika anda menjalankan banyak perintah sudo dalam suatu rangakaian proses, maka akan menjadi sangat menyusahkan jika harus mamasukkan password setelah setiap perintah sudo tersebut. Konfigurasi default dari timestamp_timeout adalah 15 menit (timestamp_timeout=15) - jika perintah sudo anda yang terakhir di proses lebih dari 15 menit yang lalu, maka nada harus mengisikan password anda untuk menjalankan perintah sudo berikutnya. Memberikan nilai 0 pada timestamp_timeout, maka anda akan selalu harus mengisikan password anda; jika anda memberikan nilai negatif maka timeout akan dinon-aktifkan (disable). Jika anda ingin meningkatkan keamanan dari sistem anda, maka anda harus memberikan nilai yang serendah mungkin (atau memberikan nilai 0).

tty_tickets - Jika anda memiliki banyak jendela yang terbuka pada desktop anda, maka anda diharuskan untuk mengisikan password anda pada saat pertama ali anda menjalankan perintah sudo di jendela yang manapun. Ini disebabkan kerana flag tty_tickets - setiap terminal (tty) memiliki lingkungan sudo-nya sendiri-sendiri. Jika anda menon-aktifkan (disable) flag ini (!tty_tickets), maka mengisikan password dari perintah sudo di sebuah jendela, akan menghentikan permintaan password dari sudo di jendela-jendela lainnya.

fqdn - Jika nana dari host digunakan pada file sudoers, flag ini menunjukan penggunaan dari
fully qualified domain names
(fqdns).

passwd_tries - Pilihan ini digunakan untuk menentukan berapa kali pemakai dapat mencoba memasukkan passwordnya sebelum perintah sudo akan dibatalkan (tidak dapat dijalankan, karena passwordnya salah). Nilai defaultnya adalah passwd_tries=3.

insults - Dengan flag ini, jika pemakai memasukkan password yang salah, maka perintah sudo akan memberikan pesan-pesan random. Nilai defaultnya adalah !insults. Sebagai contoh :

$ sudo id
Password: [wrong]
Just what do you think you're doing Dave?
Password: [wrong]
It can only be attributed to human error.
Password: [wrong]
My pet ferret can type better than you!
sudo: 3 incorrect password attempts

Tip Selain itu, masih banyak pilihan-pilihan konfigurasi termasuk untuk proses pencatatan log dan batasan-batasan yang diberikan oleh pemakai (user-based restrictions). Jika anda memiliki keperluan khusus, lihatlah petunjuk manual dari sudoers (man sudoers).


Menjadi Root
Walaupun model keamanan dari Ubuntu mengijinkan semua perintah administratif melalui sudo, tetapi ada suatu saat anda menginginkan menggunakan perintah sebagai root. Untunglah, ada beberapa cara untuk melakukan ini dengan perintah sudo. Beberapa contoh mislanya:

sudo -s # jalankan sebuah shell sebagai root
sudo bash -o vi # jalankan sebuah shell tertentu sebagai root
sudo -i # setting lingkungan login sebagai root
sudo su - root # menjadi root dan jalankan lingkungan login sebagai root

Pada dua contoh pertama, shell berjalan sebagai root, tetapi variabel lingkungan (seperti $HOME) hanya di turunkan. Pada dua contoh berikutnya, variabel-variabel lingkungan bebnar-benar digantikan dengan setting lingkungan sesungguhnya.

Jika anda benar-benar ingin melakukan login sebagai root, maka anda dapat menggunakan sudo passwd root untuk memberikan password kepada root. Setelah anda memberikan password, maka root akan dapat log in. Anda dapat mebatalkan perubahan ini dengan sudo passwd -l root untuk mengunci pemakai.

Peringatan Mengaktifkan login dari root adalah sesuatu yang harus di hindari. Sebuah proses login dapat memberikan catatan dari akuntabilitas. Jika seseorang melakukan login tanpa personalisasi pemakai, maka tidak ada cara untuk mengidentifikasikan seseorang yang sedang login itu. Sudo memberikan catatan audit di /var/log/auth.log (walaupun pemakai dengan akses Sudo dapat menghilangkan catatan log ini).

2 comments:

Muhidin Saimin said...

pak kalau mau login sebagai root dilingkungan X bagaimana ? tidak hanya di shell. soalnya kalau usename kita masukan root otomatis tertolak.

Dessy Eka Pratiwi said...

Terimakasi untuk info Ubuntu