Saya telah mengembangkan aplikasi yang menggunakan NTP untuk mengubah waktu jaringan, untuk menyinkronkan dua komputer saya.
Ini berjalan sebagai root
, karena hanya yang terakhir yang diizinkan untuk mengubah waktu dan tanggal di Linux (saya kira).
Sekarang, saya ingin menjalankannya sebagai pengguna. Tapi, saya perlu mengakses waktu.
- Apakah menjalankan daemon di bawah akun pengguna non-root merupakan praktik yang baik?
- Haruskah saya memberikan aplikasi saya kemampuan seperti
CAP_SYS_TIME
? - Apakah ini tidak menimbulkan kerentanan keamanan?
- Apakah ada cara yang lebih baik?
Jawaban yang Diterima:
Apakah menjalankan daemon di bawah akun pengguna non-root merupakan praktik yang baik?
Ya, dan ini umum. Misalnya, Apache mulai sebagai root dan kemudian memotong proses baru sebagai www-data (secara default).
Seperti yang dikatakan sebelumnya, jika program Anda diretas (misalnya:injeksi kode), penyerang tidak akan mendapatkan akses root, tetapi akan terbatas pada hak istimewa yang Anda berikan kepada pengguna tertentu.
Haruskah saya memberikan "Kemampuan" seperti "CAP_SYS_TIME"?
Ini adalah ide yang bagus karena Anda menghindari penggunaan setuid , dan batasi izin untuk kemampuan yang sangat spesifik ini.
Haruskah saya menggunakan cara lain untuk melakukannya yang akan dianggap sebagai “Praktek yang Baik”?
Anda dapat meningkatkan keamanan, misalnya:
- Jalankan layanan sebagai pengguna yang tidak memiliki hak istimewa, tanpa shell.
- Gunakan chroot untuk mengunci pengguna di direktori home-nya.