Saya telah mengembangkan aplikasi yang menggunakan NTP untuk mengubah waktu jaringan, untuk menyinkronkan dua komputer saya. Ini berjalan sebagai root
, karena hanya yang terakhir diizinkan untuk mengubah waktu dan tanggal di Linux (saya kira).
Sekarang, saya ingin menjalankannya sebagai pengguna. Tapi, saya perlu mengakses waktu.
- Apakah ini praktik yang baik untuk menjalankan daemon di bawah akun pengguna non-root?
- Haruskah saya memberi aplikasi saya kemampuan seperti
CAP_SYS_TIME
? - Apakah itu tidak menimbulkan kerentanan keamanan?
- Apakah ada cara yang lebih baik?
security
daemon
access-control
Anonim12223
sumber
sumber
ntp
akun pengguna (setidaknya pada sistem Linux) sehingga Anda tidak perlu melakukan perubahan ini. Paket NTP apa yang sudah Anda instal?Jawaban:
Ya, dan ini biasa. Sebagai contoh, Apache memulai sebagai root dan kemudian melakukan proses baru sebagai data-www (secara default).
Seperti yang dikatakan sebelumnya, jika program Anda diretas (mis: injeksi kode), penyerang tidak akan mendapatkan akses root, tetapi akan terbatas pada hak istimewa yang Anda berikan kepada pengguna khusus ini.
Ini adalah ide yang bagus karena Anda menghindari penggunaan setuid , dan membatasi izin untuk kemampuan yang sangat spesifik ini.
Anda dapat meningkatkan keamanan, misalnya:
sumber
USER
ke dalam direktori, Anda menggunakanchroot
(jalankan sebagai pengguna root). Namun, Anda harus membuat dan menginisialisasi jail (direktori) sebelumnya. Singkatnya, Anda harus menempatkan perpustakaan dan binari yang dibutuhkan proses Anda ke penjara ini, lalu panggilchroot <path/to/jail> <command>
. Tutorial yang bagus dengan beberapa contoh yang Anda butuhkan tersedia di siniJika Anda tidak memiliki alasan kuat dan tidak dapat dibantah, Anda harus menggunakan paket NTP yang disertakan dengan distribusi GNU / Linux Anda. Daemon NTP standar telah memakan waktu bertahun-tahun untuk menjadi dewasa dan dilengkapi dengan fitur-fitur canggih seperti memperlambat atau mempercepat jam sistem Anda agar sinkronisasi dengan jaringan atau jam GPS. Itu telah dirancang untuk sinkronisasi jam sehingga kemungkinan besar adalah alat terbaik untuk tujuan itu.
ntpd
masih dipertahankan, dilihat dari pembaruan terbaru (saat menulis posting ini). Jika Anda memerlukan lebih banyak fitur, saya sarankan Anda menghubungi pengembang secara langsung, percaya apa yang mereka katakan tentang itu.sumber
Jika Anda memiliki program yang perlu dapat melakukan fungsi X (misalnya, memanipulasi jam), dan Anda dapat memberikannya hak istimewa / kekuatan untuk melakukan fungsi X dan tidak ada yang lain, itu lebih baik daripada memberikannya seluruh kaleng alfabet. Sup. Ini dikenal sebagai prinsip privilege paling tidak . Pertimbangkan, bagaimana jika program Anda memiliki bug - baik kesalahan pemrograman biasa atau kerentanan keamanan yang dapat dieksploitasi. Jika berjalan sebagai "root", itu dapat menghapus file semua orang - atau mengirimnya ke penyerang. Jika satu-satunya hal yang dapat dilakukan oleh program adalah memanipulasi jam (dan fungsi yang tidak diistimewakan, seperti memanipulasi file dalam direktori yang dikunci), maka itulah yang terburuk yang dapat terjadi jika program tersebut menjadi nakal.
sumber