Melakukan tugas administrasi menggunakan sudo

Harsh Jain, Peter Boy Versi unknown Last review: 2023-08-08
Cara menjalankan tugas yang memerlukan hak akses root tanpa perlu masuk sebagai pengguna root.

Apa itu sudo?

Perintah sudo memungkinkan pengguna untuk mendapatkan akses administratif atau root. Ketika pengguna tepercaya mendahului perintah administratif dengan sudo, mereka akan diminta untuk memasukkan kata sandi mereka sendiri. Setelah mereka terautentikasi dan asalkan perintah tersebut diizinkan, perintah administratif akan dieksekusi seolah-olah mereka adalah pengguna root.

Hanya pengguna yang terdaftar dalam berkas konfigurasi /etc/sudoers yang diizinkan menggunakan perintah sudo. Perintah tersebut dieksekusi di shell pengguna, bukan di shell root.

Sintaks perintah sudo adalah sebagai berikut:

sudo COMMAND

Ganti COMMAND dengan perintah yang akan dijalankan sebagai pengguna root.

Cara menggunakan sudo

Menggunakan sudo untuk memberikan hak administrator

Tambahkan pengguna ke berkas konfigurasi /etc/sudoers agar mereka dapat menggunakan perintah sudo. Untuk pengguna-pengguna ini, perintah sudo dijalankan di shell pengguna alih-alih di shell root. Akibatnya, shell root dapat dinonaktifkan untuk meningkatkan keamanan.

Administrator juga dapat memberikan akses kepada pengguna yang berbeda untuk menggunakan perintah tertentu melalui konfigurasi sudo. Administrator harus menggunakan perintah visudo untuk mengedit berkas konfigurasi /etc/sudoers.

Untuk memberikan hak administratif penuh kepada seorang pengguna, ketik visudo dan tambahkan baris berikut ke bagian hak pengguna setelah mengganti USERNAME dengan nama pengguna yang dituju:

USERNAME ALL=(ALL) ALL

Baris ini memungkinkan pengguna yang ditentukan untuk menggunakan sudo dari host mana pun dan menjalankan perintah apa pun.

Untuk memberikan akses pengguna ke perintah tertentu, gunakan contoh berikut setelah mengganti USERS dengan grup sistem target:

%USERS localhost=/usr/sbin/shutdown -h now

Perintah ini memungkinkan semua anggota grup sistem USERS untuk menjalankan perintah /sbin/shutdown -h selama perintah tersebut dijalankan dari konsol.

Halaman manual untuk sudoers berisi daftar lengkap opsi untuk berkas ini.

Menggunakan kata sandi yang sama untuk akun root dan akun pengguna

Jika Anda menggunakan desktop pengguna tunggal, Anda mungkin menemukan bahwa mengonfigurasi sudo akan memudahkan Anda, sehingga Anda dapat menggunakan kata sandi yang sama untuk mengakses root seperti yang Anda gunakan untuk akun reguler Anda. Untuk melakukannya, pilih untuk ditambahkan ke grup Administrasi selama proses instalasi. Untuk melakukannya pada tahap selanjutnya, atau untuk menambahkan pengguna lain, ikuti prosedur berikut:

  1. Jadilah pengguna root:

    $ su -
  2. Masukkan kata sandi untuk akun root saat diminta.

  3. Untuk menggunakan kata sandi reguler Anda untuk akses root, jalankan:

    # usermod USERNAME -a -G groupname

    Ganti USERNAME dengan nama akun Anda

  4. Keluar dan masuk kembali agar dapat mengakses grup.

Ketika sudo meminta Anda untuk memasukkan kata sandi, perintah tersebut mengharapkan kata sandi pengguna Anda, bukan kata sandi root.

Mencatat perintah sudo

Setiap otentikasi yang berhasil menggunakan perintah sudo dicatat dalam berkas /var/log/messages. Untuk setiap otentikasi, berkas /var/log/secure mencantumkan nama pengguna dan perintah yang dieksekusi.

Untuk pencatatan tambahan, gunakan modul pam_tty_audit untuk mengaktifkan pencatatan TTY untuk pengguna tertentu. Pencatatan TTY menampilkan nama berkas terminal yang terhubung ke I/O standar. Untuk mengaktifkan pencatatan TTY, tambahkan baris berikut ke berkas /etc/pam.d/system-auth Anda:

sesi memerlukan pam_tty_audit.so disable=pola enable=PATTERN

Ganti PATTERN dengan daftar pengguna yang dipisahkan koma (dan globs, jika diperlukan).

Misalnya, perintah berikut mengaktifkan audit TTY untuk pengguna root dan menonaktifkannya untuk semua pengguna lain:

session required pam_tty_audit.so disable=* enable=root

Menggunakan modul PAM pam_tty_audit untuk audit hanya mencatat masukan TTY. Akibatnya, saat pengguna yang diaudit masuk, pam_tty_audit mencatat ketukan tombol pengguna secara tepat dan menyimpannya di /var/log/audit/audit.log. Untuk informasi lebih lanjut, lihat halaman manual pam_tty_audit(8).

Peringatan dan catatan penting

Anda harus menggunakan akun pengguna yang Anda buat selama proses instalasi, pada booting pertama, untuk penggunaan sehari-hari, dan akun root hanya untuk administrasi sistem. Hindari menggunakan akun root untuk penggunaan non-administrasi, karena akun tersebut memudahkan terjadinya risiko keamanan atau data.

Ada beberapa risiko potensial yang perlu diperhatikan saat menggunakan perintah sudo. Anda dapat menghindarinya dengan mengedit berkas konfigurasi /etc/sudoers menggunakan perintah visudo.

sudo timeout

Secara default, sudo menyimpan kata sandi untuk periode waktu tunggu lima menit. Penggunaan perintah ini selama periode tersebut tidak akan meminta kata sandi. Hal ini dapat dimanfaatkan oleh penyerang jika Anda meninggalkan stasiun kerja Anda tanpa pengawasan dan tidak terkunci sementara masih login. Anda dapat mengubah perilaku ini dengan menambahkan baris berikut ke berkas konfigurasi /etc/sudoers:

Pengaturan Default    timestamp_timeout=NILAI

Di sini, VALUE adalah durasi timeout yang diinginkan dalam menit. Menyetel nilai menjadi 0 akan membuat sudo meminta kata sandi setiap kali.

Jika akun diretas, penyerang dapat menggunakan sudo untuk membuka shell baru dengan hak administratif.

Membuka shell baru sebagai pengguna root dengan cara ini memungkinkan penyerang mendapatkan akses administratif untuk periode waktu yang secara teoritis tidak terbatas dan melewati batas waktu yang ditentukan dalam berkas /etc/sudoers. Dengan metode ini, penyerang tidak perlu memasukkan kata sandi untuk perintah sudo lagi hingga sesi berakhir.

Menggunakan sudo untuk mengakses Docker

Docker memiliki kemampuan untuk mengubah kepemilikan grup dari soket Docker agar pengguna yang ditambahkan ke grup Docker dapat menjalankan kontainer Docker tanpa perlu menjalankan perintah sudo atau su untuk menjadi root.

Mengizinkan akses ke daemon Docker dari pengguna non-root merupakan masalah dari segi keamanan. Ini merupakan masalah keamanan bagi Fedora, karena jika seorang pengguna dapat berkomunikasi dengan soket Docker, mereka dapat menjalankan perintah yang memberikan akses root penuh ke sistem host. Docker tidak memiliki fitur audit atau logging bawaan, sementara sudo memilikinya.

Disarankan agar aturan sudo diterapkan untuk mengizinkan akses ke daemon Docker. Hal ini memungkinkan sudo untuk menyediakan fungsi pencatatan dan audit.

Jalankan Docker menggunakan sudo

  1. Atur sudo seperti yang ditunjukkan dalam Menggunakan sudo untuk memberikan hak administrator.

  2. Buat alias untuk menjalankan perintah Docker dengan menambahkan baris berikut ke berkas ~/.bashrc Anda:

    alias docker="sudo /usr/bin/docker"

    Ketika pengguna menjalankan perintah Docker sebagai pengguna non-root, sudo akan digunakan untuk mengelola akses dan menyediakan logging.

Menggunakan sudo tanpa kata sandi

Anda dapat mengaktifkan akses root tanpa kata sandi yang ditentukan, sehingga proses apa pun di sistem Anda dapat menjadi root. Tambahkan baris berikut ke berkas /etc/sudoers Anda:

user        ALL=(ALL)       NOPASSWD: /usr/bin/docker

Hal ini akan memungkinkan user untuk mengakses Docker tanpa kata sandi.

Untuk alasan keamanan, disarankan agar Anda selalu menggunakan sudo dengan kata sandi.