Linux: membuat shutdown tidak dapat dieksekusi untuk keamanan

9

Hari ini saya tidak sengaja mematikan mesin produksi karena saya pikir saya menggunakan mesin lokal saya. Saya tahu, kesalahan pemula :-(

Sebagai solusi agar hal itu tidak terjadi lagi, saya berpikir untuk menghapus izin eksekusi untuk perintah shutdown karena mesin itu harus selalu menyala.

Apakah itu ide yang bagus? Bisakah Anda melihat efek samping yang tidak diinginkan dengan melakukan itu?

Cheers, Dan

Daniele
sumber
1
Sebagian besar sysadmin melakukan sesuatu seperti ini di beberapa titik (jendela mana itu lagi? Whoops ...)
Bart Silverstrim
3
Bersyukur itu hanya penutupan. Orang lain belajar pelajaran itu dengan alat dd (AKA: perusak disk);)
pehrs
1
Sebagian besar tugas & alat sysadmin bisa berakibat fatal dan mematikan. Kekuatan besar datang dengan tanggung jawab besar. Anda dapat chmod 000 perintah shutdown Anda, tetapi lain kali Anda mungkin mengacaukan dengan rm, dd, fsck, mv atau alat yang berpotensi berbahaya lainnya. Setiap dari kita AKAN membuat kesalahan cepat atau lambat. Hal terbaik yang dapat Anda lakukan adalah mempersiapkan diri untuk yang terburuk dan memastikan Anda memiliki cadangan dll :-)
Janne Pikkarainen

Jawaban:

21

Sepenuhnya pendekatan lain bagaimana diperingatkan bahwa Anda bekerja pada mesin produksi adalah untuk menandai terminal. Misalnya user@machine:~#teks bisa merah di mesin produksi, hijau saat pengembangan, dll. Berikut ini tutorial yang bagus bagaimana melakukannya: Prompt Bash Warna

mkudlacek
sumber
+1, saya mewarnai kode semua mesin saya: Teks putih pada latar belakang berwarna, Orange = Infrastruktur; Biru = Produksi; Ungu = Tes / Dev. Workstation normal menjaga latar belakang hitam standar.
Chris S
Cara lain untuk hampir setiap shell: understudy.net/custom.html
Chris S
Memberi +1 untuk tip cemerlang, saya tidak akan pernah memikirkannya sendiri.
Kenny Rasschaert
7

Saran terbaik yang bisa saya berikan kepada Anda adalah jangan login sebagai root kecuali Anda membutuhkan akses root, dan pastikan Anda memiliki kata sandi root / sudo yang berbeda di setiap mesin.

Membuat shutdown tidak dapat diakses adalah salah satu opsi tetapi itu tidak bagus. Entah alias shutdownke shutdown -adan touch /etc/shutdown.allowatauchmod a-x /sbin/shutdown

Juga, di mana itu berakhir? Apakah Anda juga akan melarang berhenti, reboot dan init?

James L.
sumber
4
Tidak pernah berakhir. Selalu ada sesuatu yang lebih, lagi dan lagi, lebih dan lebih lagi, itu tidak pernah berhenti <poni kepala di dinding berulang kali ...>
Bart Silverstrim
Jangan lupa "bunuh". Lagi pula, "kill -9 1" adalah cara yang cukup efektif (atau, dulu, dulu, di masa lalu) mematikan kotak unix.
Vatine
Beberapa shutdown tidak ada -a. Plus mengandalkan alias seperti itu sama dengan mengandalkan alias rm='rm -i'- suatu hari nanti itu tidak akan ada ketika Anda benar-benar membutuhkannya. Selain itu, shutdown -akegunaannya terbatas saja.
Dijeda sampai pemberitahuan lebih lanjut.
3

Beberapa hal yang perlu dipertimbangkan:

  1. Apa yang Anda lakukan sebagai root pada sistem produksi selama waktu produksi? Konfigurasikan sistem Anda sehingga Anda tidak perlu me-root-nya untuk pekerjaan sehari-hari. Anda tidak boleh menjadi root pada sistem produksi tanpa alasan yang sangat bagus.
  2. Pelajari pelajaran penting. Ketika Anda root, Anda harus memeriksa dua kali sebelum Anda menekan enter. SUDO tidak ada perlindungan jika Anda hanya menulis kata sandi untuk melanjutkan, tanpa berpikir. Pewarnaan cepat, seperti yang disebutkan oleh mkudlacek adalah alat yang sangat berguna untuk membantu memastikan Anda tidak berada di sistem yang salah.
  3. Jangan main-main dengan alat bawaan. Kemungkinan akan memutus pembaruan dan akan membuat karyawan baru gila. Jika Anda ingin mengubah sesuatu gunakan file alias Anda sendiri.
pehrs
sumber
2
Saya tidak harus setuju dengan posting ini. Saat bekerja sebagai sysadmin, sangat umum bagi mesin produksi saya untuk mengakses root. Anda mengunci pengguna, bukan admin. Catatan, jangan memilih, karena ini adalah sudut pandang yang sah meskipun berbeda dengan saya.
PP.
1
Dalam hal ini Anda tidak memiliki persyaratan tingkat layanan yang sangat sulit pada alat berat. Instal perangkat lunak, menambal, melewati ACL darurat dan perubahan ke konfigurasi jaringan adalah satu-satunya hal yang Anda butuhkan untuk root. Tak satu pun dari kegiatan ini yang harus sering dilakukan pada mesin dalam produksi ... Dan segala sesuatu yang lain harus dilakukan dari akun pengguna super. Jika Anda menggunakan root alih-alih pengguna super pada sistem produksi Anda, Anda biasanya memiliki masalah ...
pehrs
3

Saya tidak berpikir mengacaukan izin shutdownadalah cara untuk menangani situasi. Pada dasarnya kamu baru belajar pelajaran. Dagu.

Saya telah melakukan hal-hal yang sama - mendapatkan rantai panjang sesi ssh, kemudian mengacaukan rute pada salah satu mesin yang saya ssh'd melalui, memotong diri saya. Saya telah merusak permintaan rsync, yang mengarah ke penghancuran sistem secara sistematis di sisi lain dunia. Saya sudah berjalan rm -rf / pathdi server produksi. (Waktu itu aku harus belajar bagaimana mengembalikan bekerja.)

Jadi, jauh lebih tua dan semoga sedikit lebih bijaksana, saya sekarang memiliki aturan ketat yang saya terapkan pada diri saya sendiri.

  • Semua permintaan root diakhiri dengan #, tidak peduli apa informasi lain di dalamnya.
  • Setiap kali saya berada di prompt #, saya benar-benar duduk di tangan saya sebelum menekan tombol enter.
  • Jika ada keraguan tentang apa yang akan saya lakukan atau di mana saya sebenarnya atau bagaimana saya sampai di sana, saya membatalkannya dan membangunnya kembali dari kondisi awal yang diketahui.
  • Ketika saya melakukan kesalahan (dan saya masih membuat kesalahan, meskipun mereka semakin jarang dan semakin tidak jelas seiring berjalannya waktu), segera mencari tahu apa yang telah saya lakukan, yang telah saya pengaruhi, dan mengaku dosa saya kepada mereka. . Lalu jatuhkan yang lainnya dan lepaskan damange secepat dan sebaik mungkin.

Sifat pekerjaan saya mengharuskan saya menghabiskan banyak waktu di banyak permintaan root yang bervariasi, tetapi berkat kesalahan saya di masa lalu saya mempertahankan kesadaran situasional yang jauh lebih baik daripada yang saya lakukan ketika saya mulai.

David Mackintosh
sumber
1

Tergantung, sungguh. Anda dapat mencoba hanya membungkus perintah tetapi itu berarti bahwa jika Anda melakukan pembaruan atau pemutakhiran yang mempengaruhi yang dapat dieksekusi itu, Anda mungkin melupakannya dan membuatnya mengacaukan pembaruan. Bermain dengan perintah pematian sistem bisa menjadi PITA, terutama jika Anda memiliki karyawan baru atau pengganti yang akhirnya tidak tahu Anda bermain dengan binari sistem.

Secara pribadi saya akan melihat membungkus perintah dalam skrip yang mengidentifikasi sistem dengan nama dan membuat Anda mengonfirmasi itu yang benar-benar ingin Anda lakukan sebelum menjalankan biner yang sebenarnya, atau bahwa Anda harus mengetik urutan huruf tertentu untuk mengonfirmasi penutupan sebelum menjalankan biner. Itu harus memberi jeda beberapa saat.

Bart Silverstrim
sumber
1

Anda dapat mempertimbangkan pengaturan command prompt untuk memasukkan nama mesin, setidaknya pada server. Ini mungkin membantu untuk mencegah perintah lain dijalankan di mesin yang salah di masa depan. Ini lebih efektif jika nama-nama mesin diwarnai untuk membuatnya menonjol dan Anda bahkan dapat kode warna untuk mengidentifikasi peran server.

John Gardeniers
sumber
0

Salah satu caranya adalah tidak menggunakan sudan / atau login langsung ke root. Lebih baik masuk langsung ke akun DAN memiliki kata sandi berbeda untuk rootdi mesin lokal dan kunci ssh.

Tentu saja itu selain untuk menonton prompt merah '#'.

Maciej Piechotka
sumber
0

Ya, menghapus bit eksekusi pada perintah shutdown adalah cara paling sederhana dan paling aman untuk mencegah shutdown yang tidak disengaja, terutama jika Anda memiliki lingkungan desktop seperti KDE pada mesin dan Anda ingin mencegah shutdown yang tidak disengaja ketika logout.

Sedangkan untuk orang baru yang bingung, saya pikir hal pertama yang akan mereka lakukan adalah ls -l /sbin/shutdownmencari tahu mengapa itu tidak berhasil (terutama jika mereka memiliki kebiasaan yang baik untuk melengkapi nama yang dapat dieksekusi). Tentunya Anda harus memberi tahu mereka tentang segala perubahan yang Anda lakukan.

Untuk keamanan ekstra Anda bisa menambahkan baris untuk /etc/rc.localmenghapus bit eksekusi dari perintah shutdown sehingga Anda tidak lupa untuk mengatur ulang setelah reboot.

timmy
sumber
0

Anda cukup menghapus / sbin / dari path root. dengan begitu Anda perlu mengetikkan path lengkap untuk menjalankannya, dan biasanya memperbaiki kecelakaan.

Sirex
sumber