10 Konfigurasi Sudoers yang Berguna untuk Mengatur 'sudo' di Linux


Di Linux dan sistem operasi mirip Unix lainnya, hanya pengguna root yang dapat menjalankan semua perintah dan melakukan operasi penting tertentu pada sistem seperti menginstal dan memperbarui, menghapus paket, membuat pengguna dan grup, memodifikasi sistem penting file konfigurasi dan sebagainya.

Namun, administrator sistem yang berperan sebagai pengguna root dapat mengizinkan pengguna sistem normal lainnya dengan bantuan perintah sudo dan beberapa konfigurasi untuk menjalankan beberapa perintah serta menjalankan sejumlah operasi sistem penting termasuk yang disebutkan di atas.

Alternatifnya, administrator sistem dapat membagikan kata sandi pengguna root (yang bukan merupakan metode yang disarankan) sehingga pengguna sistem normal memiliki akses ke akun pengguna root melalui perintah su.

sudo mengizinkan pengguna yang diizinkan untuk menjalankan perintah sebagai root (atau pengguna lain), sebagaimana ditentukan oleh kebijakan keamanan:

  1. Ia membaca dan mem-parsing /etc/sudoers, mencari pengguna yang memanggil dan izinnya,
  2. kemudian meminta kata sandi kepada pengguna yang meminta (biasanya kata sandi pengguna, tetapi bisa juga kata sandi pengguna target. Atau dapat dilewati dengan tag NOPASSWD),
  3. setelah itu, sudo membuat proses anak yang memanggil setuid() untuk beralih ke pengguna target
  4. selanjutnya, ia mengeksekusi shell atau perintah yang diberikan sebagai argumen dalam proses anak di atas.

Di bawah ini sepuluh konfigurasi file /etc/sudoers untuk mengubah perilaku perintah sudo menggunakan entri Default.

sudo cat /etc/sudoers
#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Jenis Entri Default

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Untuk cakupan panduan ini, kami akan memusatkan perhatian pada jenis Default pertama pada formulir di bawah. Parameter dapat berupa flag, nilai integer, string, atau daftar.

Anda harus mencatat bahwa flag secara implisit bersifat boolean dan dapat dimatikan menggunakan operator '!', dan daftar memiliki dua operator penugasan tambahan, += (tambahkan ke daftar) dan -= (hapus dari daftar).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Tetapkan PATH Aman

Ini adalah jalur yang digunakan untuk setiap perintah yang dijalankan dengan sudo, ini memiliki dua kepentingan:

  1. Digunakan ketika administrator sistem tidak mempercayai pengguna sudo memiliki variabel lingkungan PATH yang aman
  2. Untuk memisahkan “jalur akar” dan “jalur pengguna”, hanya pengguna yang ditentukan oleh grup_pengecualian yang tidak terpengaruh oleh setelan ini.

Untuk mengaturnya, tambahkan baris:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Aktifkan sudo pada Sesi Login Pengguna TTY

Untuk memungkinkan sudo dipanggil dari tty sebenarnya tetapi tidak melalui metode seperti skrip cron atau cgi-bin, tambahkan baris:

Defaults  requiretty   

3. Jalankan Perintah Sudo Menggunakan pty

Beberapa kali, penyerang dapat menjalankan program jahat (seperti virus atau malware) menggunakan sudo, yang lagi-lagi akan memotong proses latar belakang yang tetap ada di perangkat terminal pengguna bahkan ketika program utama telah selesai dijalankan.

Untuk menghindari skenario seperti itu, Anda dapat mengonfigurasi sudo untuk menjalankan perintah lain hanya dari psuedo-pty menggunakan parameter use_pty, baik pencatatan I/O diaktifkan atau tidak. berikut:

Defaults  use_pty

4. Buat File Log Sudo

Secara default, sudo mencatat melalui syslog(3). Namun, untuk menentukan file log khusus, gunakan parameter file log seperti:

Defaults  logfile="/var/log/sudo.log"

Untuk mencatat nama host dan empat digit tahun dalam file log khusus, gunakan masing-masing parameter log_host dan log_year sebagai berikut:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Di bawah ini adalah contoh file log sudo khusus:

5. Catat Input/Output Perintah Sudo

Parameter log_input dan log_output memungkinkan sudo menjalankan perintah dalam pseudo-tty dan mencatat semua input pengguna dan semua output yang dikirim ke layar secara reseptif.

Direktori log I/O default adalah /var/log/sudo-io, dan jika ada nomor urut sesi, maka disimpan di direktori ini. Anda dapat menentukan direktori khusus melalui parameter iolog_dir.

Defaults   log_input, log_output

Ada beberapa urutan escape yang didukung seperti %{seq} yang diperluas ke nomor urut base-36 yang meningkat secara monoton, seperti 000001, di mana setiap dua digit digunakan untuk membentuk direktori baru, misalnya. 00/00/01 seperti pada contoh di bawah ini:

cd /var/log/sudo-io/
ls
cd  00/00/01
ls
cat log

Anda dapat melihat sisa file di direktori tersebut menggunakan perintah cat.

6. Kuliah Pengguna Sudo

Untuk mengajari pengguna sudo tentang penggunaan kata sandi pada sistem, gunakan parameter lecture seperti di bawah ini.

Ini memiliki 3 kemungkinan nilai:

  1. selalu – selalu menguliahi pengguna.
  2. sekali – hanya memberi kuliah kepada pengguna saat pertama kali mereka menjalankan perintah sudo (ini digunakan ketika tidak ada nilai yang ditentukan)
  3. tidak pernah – jangan pernah menguliahi pengguna.
 
Defaults  lecture="always"

Selain itu, Anda dapat mengatur file kuliah khusus dengan parameter lecture_file, ketik pesan yang sesuai dalam file:

Defaults  lecture_file="/path/to/file"

7. Tampilkan Pesan Khusus Saat Anda Memasukkan Kata Sandi sudo yang Salah

Ketika pengguna memasukkan kata sandi yang salah, pesan tertentu ditampilkan pada baris perintah. Pesan defaultnya adalah “maaf, coba lagi ”, Anda dapat mengubah pesan menggunakan parameter badpass_message sebagai berikut:

Defaults  badpass_message="Password is wrong, please try again"

8. Tingkatkan Batas Percobaan Kata Sandi sudo

Parameter passwd_tries digunakan untuk menentukan berapa kali pengguna dapat mencoba memasukkan kata sandi.

Nilai defaultnya adalah 3:

Defaults   passwd_tries=5 

Untuk menyetel batas waktu sandi (defaultnya adalah 5 menit) menggunakan parameter passwd_timeout, tambahkan baris di bawah ini:

Defaults   passwd_timeout=2

9. Biarkan Sudo Menghina Anda Saat Anda Memasukkan Kata Sandi yang Salah

Jika pengguna mengetik kata sandi yang salah, sudo akan menampilkan penghinaan di terminal dengan parameter penghinaan. Ini secara otomatis akan menonaktifkan parameter badpass_message.

Defaults  insults 

Baca Lebih Lanjut: Biarkan Sudo Menghina Anda Saat Anda Memasukkan Kata Sandi yang Salah

10. Pelajari Lebih Lanjut Konfigurasi Sudo

Selain itu, Anda dapat mempelajari lebih lanjut konfigurasi perintah sudo dengan membaca: Perbedaan Antara su dan sudo dan Cara Mengonfigurasi sudo di Linux.

Itu dia! Anda dapat berbagi konfigurasi perintah sudo berguna lainnya atau trik dan tip dengan pengguna Linux di luar sana melalui bagian komentar di bawah.