Prakteknya bukan untuk membuat satu pengguna dan grup per aplikasi, tetapi per layanan. Yaitu, program yang dijalankan oleh pengguna lokal tidak perlu diinstal sebagai pengguna selain root. Ini adalah daemon , program yang berjalan di latar belakang dan yang mengeksekusi permintaan yang datang melalui jaringan atau sarana komunikasi lainnya, yang harus dijalankan sebagai pengguna khusus.
Daemon berjalan sebagai pengguna yang berdedikasi sehingga jika ia melakukan kesalahan (karena bug, mungkin dipicu oleh penyerang) kerusakan yang dapat ia lakukan terbatas: hanya file data daemon yang terpengaruh (kecuali penyerang berhasil menemukan lubang root lokal , yang bisa terjadi). Sebagai contoh, daemon basis data mysqld
berjalan sebagai pengguna dan grup khusus mysql:mysql
dan file data dari basis data ( /var/lib/mysql/*
) menjadi milik mysql:mysql
.
Perhatikan bahwa daemon dapat dieksekusi dan data statis lainnya serta file konfigurasi yang digunakan tetapi tidak boleh dimodifikasi oleh daemon tidak boleh menjadi milik pengguna khusus; mereka harus dimiliki oleh root:root
, seperti kebanyakan file program dan konfigurasi. The mysqld
Proses tidak memiliki Timpa bisnis /usr/sbin/mysqld
atau /etc/mysql/my.cnf
, sehingga file-file ini tidak harus milik para mysql
pengguna atau dapat ditulis oleh mysql
pengguna atau mysql
kelompok. Jika beberapa file hanya dapat dibaca oleh daemon dan administrator, mereka harus dimiliki oleh root pengguna dan oleh grup khusus, dan memiliki mode 0640 ( rw-r-----
).
Kategori khusus yang dapat dieksekusi yang tidak dapat dimiliki root:root
adalah program yang dijalankan oleh pengguna tetapi perlu dijalankan dengan hak istimewa ekstra. Executable ini harus setuid root jika harus dijalankan (setidaknya sebagian) sebagai root; maka yang dapat dieksekusi harus memiliki mode 4755 ( rwsr-xr-x
). Jika program membutuhkan dengan hak istimewa ekstra tetapi tidak sebagai root, maka program tersebut harus dibuat setgid, sehingga hak istimewa tambahan datang melalui grup dan bukan melalui pengguna. Yang dapat dieksekusi kemudian memiliki mode 2755 ( rwxr-sr-x
). Alasannya ada dua:
- Yang dapat dieksekusi tidak boleh diizinkan untuk memodifikasi sendiri, sehingga jika pengguna berhasil mengeksploitasi kerentanan, mereka mungkin dapat memodifikasi file data yang digunakan oleh program tetapi tidak menyuntikkan trojan horse ke dalam executable untuk menyerang pengguna lain yang menjalankan program. .
- File data yang dapat dieksekusi milik grup. Program setuid harus beralih antara pengguna nyata (pengguna yang memanggil program) untuk berinteraksi dengan pengguna dan dengan pengguna efektif (pengguna yang menjalankan program) untuk mengakses file data pribadinya (alasan untuk itu untuk memiliki hak istimewa ekstra). Program setgid selanjutnya dapat memisahkan data per-pengguna yang hanya dapat diakses oleh grup (mis. Dengan menyimpan file yang dimiliki oleh pengguna dalam direktori yang hanya dapat diakses oleh root dan grup program).
Gilles 'SANGAT berhenti menjadi jahat'
sumber
/usr/bin/at
dimiliki olehdaemon/daemon
di Ubuntuat
bukan daemon. Ini setuiddaemon
sehingga dapat berkomunikasi denganatd
daemon melalui file pribadi.Membuat grup / pengguna baru untuk daemon yang diinstal baru meningkatkan keamanan. Ketika proses server dijalankan di bawah pengguna seperti itu dibatasi untuk hak akses pengguna itu. Sebagai perbandingan: ketika dijalankan sebagai root, ia dapat melakukan segalanya.
Perbedaan ini penting jika daemon Anda tidak terkonfigurasi dan / atau mengandung bug terkait keamanan.
Saya tidak yakin apa yang Anda maksud dengan bagian kedua dari pertanyaan Anda, yaitu bagian tentang
/usr/local
kepemilikan. Secara umum tidak masuk akal bahwa pengguna yang samaX
di mana daemon berjalan untuk alasan keamanan juga memiliki direktori dengan binari (karena dalam kasus itu bisa mengubahnya jika terjadi eksploitasi). Tetapi direktori dengan file data yang bekerja pada daemon harus dapat diakses olehX
- cara termudah untuk mengkonfigurasi ini adalah dengan membuatX
pemilik direktori data / file.Menjalankan daemon di bawah penggunanya sendiri hanyalah satu teknik keamanan, yang lain mencakup semacam 'chroot' atau menggunakan sistem kontrol akses wajib (MAC) (mis. SELinux).
sumber
Ini adalah pertimbangan keamanan. Ini membatasi kerusakan yang dapat dilakukan oleh seseorang yang membobol aplikasi daemon. Aplikasi pengguna biasanya dimiliki oleh userid standar seperti
root
.Jika server web, server email, dan basis data Anda semuanya berjalan sebagai pengguna yang sama, membuatnya lebih mudah untuk dikompromikan. Jika salah satu dari mereka memiliki bug atau kesalahan konfigurasi yang memungkinkan akses sistem, akses itu dapat digunakan untuk mengakses ketiga aplikasi.
Jika mereka semua memiliki akun terpisah, seperti yang disarankan, hanya aplikasi yang disusupi yang kemungkinan dapat diakses. Sementara detail konfigurasi publik dari yang lain dapat dibaca, kecil kemungkinan bahwa perubahan dapat dilakukan.
Banyak daemon memungkinkan pengguna untuk mengunggah dan mengunduh file dan jika tidak melakukan hal-hal yang Anda tidak ingin mereka lakukan terhadap konfigurasi untuk daemon lain. Jika setiap aplikasi memiliki userid dan grupnya sendiri, maka lebih mudah untuk mengamankan daemon.
Memiliki grup khusus daemon membuatnya lebih mudah untuk secara aman memberikan daemon akses aman hanya-baca ke file dan direktori. Jika file atau direktori dimiliki oleh pengguna yang berbeda, tetapi milik grup daemon biasanya akan dapat diakses hanya baca. Izin akses dapat dengan mudah diverifikasi dan diperbaiki dengan alat seperti find.
sumber