Kenapa su to root bukannya login sebagai root?

33

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?

pisau pendakian
sumber
2
Apakah Anda memikirkan login ssh atau juga login dari mesin fisik?
Telemachus

Jawaban:

43

Kesimpulannya adalah hanya suatau sudojika 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.

Dan Carley
sumber
1
Bisakah Anda memahami mengapa login root jarak jauh adalah "kerentanan yang cukup besar."
thepocketwade
5
Karena mengingat bahwa seluruh dunia tahu nama pengguna ('root'), itu hanya masalah mencari tahu kata sandi. Dan mereka dapat melakukannya dengan kekerasan dan mengambil alih komputer Anda.
Shalom Craimer
2
Keuntungan lain dari sudo: Logging dari perintah yang dieksekusi.
Manuel Faux
Itu mengaudit;)
Dan Carley
1
Meskipun sudolebih unggul, Anda sujuga dapat menggunakan -mflag untuk menjaga variabel lingkungan tetap sama saat berada di terminal root. Tidak ada yang membuat saya lebih gila kemudian untuk sumelakukan root sebentar, hanya untuk melakukan sesuatu dengan ~dalam nama direktori dan membuatnya tidak berfungsi.
tj111
27

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. :)

egorgry
sumber
+1 pendek dan to the point
lexu
15

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.

Tim
sumber
Setelah seseorang menjalankan su - root, bagaimana Anda menentukan perintah apa yang mereka jalankan? Apakah ini dicatat di suatu tempat?
Dobes Vandermeer
10

sudo juga secara otomatis mencatat setiap perintah ke syslog dan Anda dapat menentukan perintah yang dapat digunakan setiap pengguna.

Jure1873
sumber
3
Adapun logging: Ini adalah kasus untuk setiap perintah yang didahului oleh 'sudo', tetapi dalam kasus di mana sudo digunakan untuk naik ke shell root, perintah hanya dicatat di wilayah tradisional (khususnya sejarah shell).
Zenham
2
Memang, sudo vim foo.txtkemudian drop ke shell dari dalam vim akan memberi Anda shell root tanpa sudo logging biasa.
Ophidian
Atau hanya sudo -iuntuk mendapatkan sesi interaktif ...
Kamil Kisiel
Saya tidak mengerti masalah dengan sudo vim foo.txt. Saya berlari itu, kemudian keluar vim dan masih sendiri, apakah ada sesuatu yang saya lewatkan?
thepocketwade
Anda bisa "menipu" sudo untuk memberi Anda shell dengan mengetikkan sudo su - atau sudo vim dan kemudian masuk ke subkulit baru. Tetapi jika Anda menggunakan sudo karena Anda ingin semuanya masuk log syslog (terpusat) dan Anda sadar bahwa itu juga dapat digunakan untuk mendapatkan subkulit lain maka saya tidak melihat ada yang salah dengan itu, itu hanya bonus asalkan saya tidak hanya bergantung padanya.
Jure1873
9

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.

Zenham
sumber
4

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.

mibus
sumber
Itu tentu saja dengan asumsi bahwa sudosh tersedia pada sistem. Saya baru saja memeriksa dan saya tidak memilikinya di salah satu kotak Linux saya.
John Gardeniers
Anda juga dapat menggunakan ksh93 baru dengan logging jejak audit diaktifkan. Lihat artikel ini di IBM developerWorks: ibm.com/developerworks/aix/library/au-korn93/…
Mei
Cukup mudah untuk memotong dengan hanya menjalankan skrip shell (yang kemudian Anda bersihkan setelahnya). Buat skrip dengan nama tidak berbahaya sebagai pengguna yang tidak diaudit (atau scp up dari workstation Anda), lalu sudo dan jalankan. Anda bahkan dapat menyembunyikannya dengan menamakannya 'ls' atau kira-kira dan memasukkannya ke dalam $ PATH (mengubah $ PATH jika perlu), dan membuatnya melakukan pekerjaan kotor sambil menjalankan / bin / ls sehingga terlihat normal. Bersihkan setelah itu. Log audit tidak akan tahu bahwa / home / anthony / bin digunakan untuk berisi 'ls'.
derobert
Ya, itu tidak sempurna; kita tahu ini - tapi itu situs sialan lebih baik daripada IMHO "sudo su -" biasa. Dan ya, itu tidak diinstal secara default di mana pun AFAIK. Namun itu berjalan di Solaris dan Linux cukup mudah.
mibus
1

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.

chris
sumber
0

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).

Johan
sumber
0

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!

Aiden Bell
sumber
-2

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 *)

alat
sumber
Jawaban yang diterima sudah memiliki semua informasi di dalamnya.
Theuni