Seberapa amankah menyimpan skrip yang dimiliki non-root di /etc/init.d?

15

Saya memiliki aplikasi yang berjalan sebagai daemon dan dikendalikan oleh skrip di /etc/init.d
Terkadang kita perlu mengubah beberapa parameter startup / kontrol skrip ini dan kemudian restart daemon. Skrip ini hanya memiliki izin menulis untuk pengguna root, jadi ketika mengedit skrip ini saya perlu hak akses root.

Apa yang saya pikirkan adalah bahwa saya harus menjadikan pengguna non-root pemilik skrip tersebut. Dengan cara ini, hanya rooting dan pengguna khusus yang dapat mengedit skrip ini.

Apakah dapat diterima untuk menyimpan beberapa file yang tidak di-root di direktori /etc/init.d?
Atau tidak masuk akal, mengganggu tatanan alami sistem?

Akaks
sumber
1
ide yang buruk, jangan.
ChuckCottrill

Jawaban:

17

Apa yang langsung terlintas dalam pikiran adalah pengguna yang kurang mampu dapat menjalankan hal-hal di boot sebagai root , yang diinginkan oleh cracker bahwa:

  • Ingin meningkatkan hak istimewa akun lain
  • Ingin menggunakan server Anda untuk meng-host layanan jahat
  • Ingin memulai bot IRC / Spam jika server reboot
  • Ingin mem-ping kapal induk untuk mengatakan "Saya lagi" dan mungkin mengunduh muatan baru
  • Ingin membersihkan jejak mereka
  • ... kejahatan lainnya.

Ini dimungkinkan jika pengguna Anda yang kurang mampu entah bagaimana terganggu, mungkin melalui layanan lain (http / etc). Kebanyakan penyerang akan dengan cepat menjalankan suatu lsatau findpada / dari segala sesuatu /etchanya untuk melihat apakah ada kemungkinan seperti itu, ada cangkang yang ditulis dalam berbagai bahasa yang mereka gunakan yang membuat ini sederhana.

Jika Anda mengelola server dari jarak jauh, kebanyakan melalui SSH, ada peluang yang sangat baik bahwa Anda bahkan tidak akan melihat ini kecuali Anda memeriksa skrip init, karena Anda tidak akan melihat output saat boot (meskipun, Anda harus menggunakan sesuatu yang memeriksa hash dari skrip tersebut terhadap hash yang diketahui untuk melihat apakah ada yang berubah, atau perangkat lunak kontrol versi, dll)

Anda pasti tidak ingin itu terjadi, root benar-benar perlu memiliki skrip init itu. Anda bisa menambahkan pengguna pengembangan ke daftar sudoers sehingga cukup nyaman untuk memperbarui skrip, tapi saya sarankan tidak mengizinkan akses tulis yang kurang mampu untuk apa pun di init.d

Pos Tim
sumber
5
tl; dr : Jika Anda melakukan ini, pengguna non-root sama baiknya dengan root pada boot berikutnya. Anda memohon untuk dikalahkan.
Warren Young
9

Selain poin yang sangat baik yang dibuat oleh Tim Post, saya akan menambahkan bahwa untuk pengaturan di mana banyak orang harus dapat mendorong perubahan ke server, Anda harus mempertimbangkan menggunakan beberapa jenis sistem manajemen konfigurasi.

Jika misalnya Anda menggunakan boneka, atau koki, atau cfengine, Anda dapat meminta pengguna yang relevan mengedit file secara lokal dan kemudian mendorong perubahan keluar dengan manajemen konfigurasi. Cara tepatnya mengatur ini tentu saja akan bervariasi tergantung pada sistem mana yang Anda gunakan, tetapi pengaturan yang benar itu akan termasuk perangkat lunak versi membuatnya mudah untuk kembali ke versi yang lebih lama dari file konfigurasi kapan (catatan: kapan , tidak jika !) seseorang membuat kesalahan. Ini juga akan memudahkan Anda untuk menyalin konfigurasi ke sistem pengujian terpisah dll.

Jenny D
sumber
Menyimpan skrip dan bahkan file data konfigurasi Anda yang diversi dalam sistem manajemen konfigurasi / versi adalah ide yang bagus, bahkan tanpa mempertimbangkan apakah suatu sistem dapat dikompromikan.
ChuckCottrill
Memang - saya telah menggunakannya untuk memperbaiki kesalahan tentang beberapa besaran lebih sering bahwa saya telah menggunakannya untuk memperbaiki sistem yang dikompromikan.
Jenny D
Terima kasih banyak . Karena di sini sebagian besar pengguna yang berdedikasi menggunakan aplikasi ini sehingga sudo cukup berfungsi dan ini yang saya lakukan sejak lama. TETAPI SAYA BENAR-BENAR sangat tertarik dengan sistem manajemen versi untuk konfigurasi. Jenny yang terhormat, bisakah Anda memberi saya referensi untuk melakukannya ATAU SETIAP CONTOH !! :)
Akaks
1
Jika Anda tidak ingin pergi dengan rute penuh boneka / koki / cfengine dll, saya pribadi akan menggunakan www.perforce.com. Kami menggunakannya untuk ~ 100 server pada saat sebelum boneka ada dan lisensi eval mereka cukup untuk satu server. Keuntungan utama adalah bahwa Anda dapat checkout file VC ke tempat mana pun di sistem file bukannya terbatas pada satu subpath. Opsi lainnya adalah joeyh.name/code/etckeeper , atau menggunakan VC apa pun yang dikombinasikan dengan skrip untuk memindahkan file ke direktori yang tepat.
Jenny D