Diperbarui secara dramatis setelah 69 suara positif, lihat riwayat jawaban untuk jawaban asli. Terima kasih kepada @JimmyJames untuk diskusinya.
Pertama, mari kita bicara tentang model ancaman:apa yang Anda coba hentikan agar tidak dilakukan penyerang potensial?
Model ancaman:pencurian identitas / ransomeware pada sistem pengguna tunggal
Umumnya untuk sistem pengguna akhir, de facto model ancaman adalah pencurian identitas / ransomware. Jika penyerang memiliki akses ke dokumen Anda dan/atau dapat menjalankan perintah shell seperti Anda, permainan selesai. Dari perspektif itu, akses root tidak memberikan apa pun kepada penyerang; mereka bisa mendapatkan apa yang mereka inginkan tanpa itu.
Jika pencurian identitas/malware adalah satu-satunya hal yang Anda khawatirkan, tampaknya tidak terlalu penting apakah pengguna Anda memiliki sudo
kekuatan, atau apakah browser berjalan sebagai root.
(Saya juga harus menunjukkan bahwa malware/menghubungkan Anda ke botnet dapat terjadi tanpa akses root karena skrip login/menjadwalkan tugas cron tidak memerlukan root).
Randall Munroe di XKCD tampaknya setuju dengan pandangan ini:
Terakhir, saya akan menambahkan penafian ini:Ya, saya sadar bahwa ini bertentangan dengan opini publik bahwa "lebih banyak keamanan selalu lebih baik". Itu tidak benar. Terkadang lebih banyak keamanan lebih buruk, seperti kebijakan kata sandi yang terlalu rumit yang akhirnya memaksa orang untuk menuliskan kata sandi mereka. Anda harus selalu melihat risikonya dan memutuskan berapa banyak keamanan yang benar-benar sesuai. Dalam hal ini tidak ada salahnya mengunci akses root, tetapi Anda membuat hidup Anda lebih rumit dan tidak jelas apakah Anda mendapatkan sesuatu darinya.
Model ancaman:akses root atau sistem multi-pengguna
Jika Anda memiliki model ancaman di mana penyerang menginginkan sesuatu yang hanya dapat diakses oleh root, atau ada lebih dari satu akun pengguna di mesin, maka jawabannya sebenarnya tergantung pada * nix yang Anda bicarakan. Ini dengan cepat menjauh dari kasing komputer pribadi dan masuk ke kasing server, tetapi saya tetap akan membahasnya. Untuk linux, karena bug (*fitur ahem*) di sistem windowing Xorg, akun harian Anda mungkin tidak memiliki sudo
kekuatan. Untuk sistem operasi yang tidak menggunakan X, mungkin tidak apa-apa.
Linux (menjalankan sistem jendela X.org)
Inilah artikel bagus yang menunjukkan kepada Anda cara mencatat semua penekanan tombol pada mesin gui linux menggunakan perintah shell user-land (non-root) yang sederhana. Singkatnya:
$ xinput list
menunjukkan kepada Anda semua perangkat input manusia yang terhubung
$ xinput test <id>
mulai menggemakan semua penekanan tombol pada perangkat yang dipilih.
Saya menguji dan mendapatkan log kata sandi yang saya ketikkan ke sudo
di jendela terminal yang berbeda. Jika saya mengunci komputer saya kemudian ketika saya masuk kembali, saya melihat log kata sandi yang saya ketikkan di layar kunci. Rupanya ini bukan bug di X, ini fitur. Benar, aku akan bersembunyi di bawah tempat tidurku sekarang.
Jadi ya, ini mendukung gagasan bahwa setiap pengguna yang Anda masuki di gui tidak boleh memiliki sudo
kekuatan karena sepele untuk mencatat kata sandi Anda dan kemudian menjadi root. Saya kira Anda harus memiliki akun khusus untuk sudo
ing dan beralih ke terminal TTY (ctrl+alt+#
) saat Anda ingin menggunakan sudo
. Apakah ini perlu dikhawatirkan atau tidak, itu terserah Anda:secara pribadi, semua data yang saya pedulikan sudah ada di akun pengguna saya, tetapi saya mungkin akan mengubah penyiapan laptop saya karena saya kutu buku keamanan.
Perhatikan bahwa dalam pengujian saya, saya tidak dapat melakukan keylog lintas pengguna. Melakukan "Ganti Akun" di gui, atau startx
di terminal tty baru tampaknya meluncurkan instance X yang terisolasi.
Terima kasih kepada @MichaelKjörling untuk observasi ini:
Itulah salah satu hal yang sebenarnya coba diperbaiki oleh Wayland [sistem windowing yang dirancang untuk menggantikan X] (lihat poin penting tentang keamanan). Ingatlah bahwa X11 berasal dari saat model ancaman sangat berbeda dari yang ada saat ini.
Untuk sysadmin :ini memperkuat kebiasaan hanya berinteraksi dengan kotak Linux Anda melalui ssh, tidak pernah menggunakan GUI.
Mac OSX
Saya bukan ahli OSX, tapi saya tahu itu tidak menggunakan server Xorg jadi saya akan berasumsi bahwa GUI Apple menangani ini dengan benar, tapi saya ingin seseorang yang lebih ahli dari saya untuk menimbang.
Jendela
Saya juga bukan ahli Windows, tetapi saya percaya bahwa fitur Kontrol Akun Pengguna (UAC) yang diperkenalkan di Windows 7 mengatasi hal ini dengan meminta admin merender di desktop aman yang bus inputnya diisolasi dari desktop biasa Anda.
Dalam kebanyakan situasi, meminta kata sandi dengan sudo sudah cukup sebagai perlindungan.
Perbedaan utama antara su
ke akun lain dan sudo
ing untuk mendapatkan hak istimewa adalah dengan sudo Anda memasukkan kata sandi yang sama dengan yang Anda gunakan untuk masuk. Jika model ancaman Anda mengasumsikan bahwa penyerang memiliki kata sandi akun Anda, maka Anda sudah dalam masalah yang cukup dalam, lebih dari kata sandi lain di akun root akan melindungi Anda dari.
Saya menemukan bahwa memiliki dua akun di sistem unix saya sangat penting karena alasan berikut:
Jika saya pernah mengacaukan .bashrc saya atau file pengaturan login / terminal lainnya, saya bisa masuk ke situasi di mana saya bahkan tidak bisa masuk. Jadi saya benar-benar bosan. Ini adalah situasi terburuk yang bisa dibayangkan karena Anda tidak dapat berbuat banyak jika tidak dapat masuk.
Satu-satunya cara saya dapat memperbaikinya di beberapa komputer adalah memiliki login lain yang memungkinkan saya masuk dan menggunakan sudo, memperbaiki file startup untuk akun utama saya. Saya kemudian keluar dari akun '2' saya dan kembali ke akun biasa saya.
Terkadang saya mungkin dapat menggunakan opsi boot dari USB tetapi sejujurnya saya dapat masuk ke akun lain, menggunakan sudo dan memperbaiki .bashrc saya kemudian keluar dan kembali ke akun lain semua dapat dilakukan dalam beberapa detik dengan login kedua dan jauh lebih menakutkan / asing daripada opsi boot USB untuk memperbaiki bagi saya. Tentu saja YMMV (Jarak tempuh Anda Mungkin Sangat)