Saya sering mendengar bahwa lebih baik su untuk melakukan root daripada login secara langsung sebagai pengguna root (dan tentu saja orang juga mengatakan bahwa lebih baik menggunakan sudo). Saya tidak pernah benar-benar mengerti mengapa yang satu lebih baik dari yang lain, wawasan?
33
Jawaban:
Kesimpulannya adalah hanya
su
atausudo
jika diperlukan.Sebagian besar tugas sehari-hari tidak memerlukan shell root. Jadi adalah praktik yang baik untuk menggunakan shell yang tidak terjangkau sebagai perilaku default Anda dan kemudian hanya naik ke root ketika Anda perlu melakukan tugas-tugas khusus.
Dengan melakukannya, Anda mengurangi ruang untuk kesalahan berbahaya (skrip yang buruk, wildcard salah tempat, dll) dan kerentanan dari aplikasi apa pun yang Anda gunakan. Terutama yang terhubung ke Internet - lihat pepatah lama "Jangan IRC sebagai root" .
sudo
sering direkomendasikan karena ini memungkinkan Anda memfokuskan dan mengaudit penggunaan hak istimewa tersebut.Dengan mengamati praktik-praktik ini, Anda juga dapat menonaktifkan login root jarak jauh. Ini meningkatkan bar masuk untuk setiap penyerang yang akan datang, karena mereka perlu kompromi baik akun pengguna reguler yang merupakan anggota kelompok "roda" dan idealnya hanya diotorisasi oleh kunci publik SSH, kemudian akun root itu sendiri.
sumber
sudo
lebih unggul, Andasu
juga dapat menggunakan-m
flag untuk menjaga variabel lingkungan tetap sama saat berada di terminal root. Tidak ada yang membuat saya lebih gila kemudian untuksu
melakukan root sebentar, hanya untuk melakukan sesuatu dengan~
dalam nama direktori dan membuatnya tidak berfungsi.Anda harus menonaktifkan akses root dari jarak jauh sehingga penyerang tidak dapat kompromi root tanpa terlebih dahulu membahayakan pengguna kemudian meningkat ke root. Kami mengaktifkan akses root di konsol saja.
Plus itu menciptakan akuntabilitas. :)
sumber
Alasan utamanya adalah untuk membuat jejak audit. Jika Anda perlu masuk ke sistem sebagai pengguna biasa dan kemudian su, dimungkinkan untuk melacak siapa yang bertanggung jawab atas tindakan yang diberikan.
sumber
sudo juga secara otomatis mencatat setiap perintah ke syslog dan Anda dapat menentukan perintah yang dapat digunakan setiap pengguna.
sumber
sudo vim foo.txt
kemudian drop ke shell dari dalam vim akan memberi Anda shell root tanpa sudo logging biasa.sudo -i
untuk mendapatkan sesi interaktif ...Alasan bagus lainnya: Saat menaikkan ke root melalui sudo, pengguna mengautentikasi dengan kredensial mereka sendiri, yang berarti bahwa mereka tidak harus diberi kata sandi root, membuatnya lebih mudah untuk mengunci sesuatu ketika seseorang meninggalkan organisasi Anda.
sumber
Jika Anda ingin membuat jejak audit, dan tidak ingin menjadi korban masalah "sudo su -" atau "sudo vim foo.txt" yang disebutkan di sini, Anda dapat menggunakan "sudosh". Bagikan akses root melalui sudo, tetapi buat satu-satunya perintah yang diijinkan untuk menjalankan "sudosh".
sudosh adalah shell logging, dan Anda dapat memutar ulang seluruh sesi terminal di kemudian hari, menunjukkan dengan tepat apa yang dilihat pengguna di terminal mereka.
sumber
Anda harus mempraktikkan keamanan secara mendalam.
Larang akses root jarak jauh (atau setidaknya akses root melalui kata sandi). (jika Anda mengizinkan akses root melalui kunci, kendalikan kunci tersebut dengan hati-hati, atau lebih baik lagi gunakan sesuatu seperti kerberos yang memungkinkan pencabutan kunci terpusat).
Saya akan menonaktifkan su dan menggunakan sudo. Dengan begitu, pengguna menggunakan kunci (sebaiknya dienkripsi) untuk mengakses sistem kemudian mereka menggunakan kata sandi mereka hanya untuk eskalasi hak istimewa. Anda dapat membatasi program mana yang diakses orang dengan sudo, tetapi kebanyakan Anda hanya membatasi akses ke siapa yang tahu kata sandi root.
Di dunia yang ideal, Anda harus dapat mempublikasikan kata sandi root Anda di internet dan itu tidak masalah, bahkan jika Anda memberi orang akses ke mesin Anda (tetapi tidak menempatkannya di file / etc / sudoers). Tentu saja, Anda tidak boleh mempublikasikan kata sandi root, tetapi idenya adalah Anda melindungi sistem Anda dengan lapisan perlindungan konsentris.
sumber
Idenya adalah untuk menonaktifkan login root, dan karena itu tidak memiliki akun admin default. Dengan begitu penyerang harus menebak nama pengguna dan kata sandi (dan bukan hanya kata sandi).
sumber
Jika Anda menggunakan root secara teratur maka izin Anda mungkin salah atau Anda mungkin perlu memberikan hak sudo atau hak grup baru untuk r / w / x file atau direktori.
Skema perizinan yang baik adalah sesuatu yang bahkan lama dilakukan oleh pengguna Linux, atau tidak menyadari ruang lingkup yang mereka miliki.
Bahkan jangan mulai saya dengan apa yang dilakukan Ubuntu!
sumber
Ini membuat Anda tidak menjalankan rm -r -f / Saya baru saja menjalankannya 2 hari yang lalu (sebagai pengguna yang tidak memiliki hak, saya bermaksud menjalankan rm -r -f *)
sumber