Apa yang salah dengan selalu menjadi root?

83

Saya punya perasaan ini adalah pertanyaan bodoh, tapi ini adalah sesuatu yang sudah lama saya tanyakan.

Saya memiliki VPS dan ini adalah usaha linux besar pertama saya. Saya satu-satunya orang yang memiliki akses ke sana. Pertanyaan saya adalah, apa yang salah dengan hanya login sebagai root daripada membuat akun dan memberi mereka akses sudo? Jika seorang sudoer dapat melakukan apa saja yang dapat dilakukan root, lalu apa bedanya? Jika seorang hacker dapat meretas kata sandi saya ke akun standar saya, non-root, maka dia juga dapat mengeksekusi perintah sudo, jadi bagaimana cara seorang hacker memecahkan masalah akun root saya lebih atau kurang?

ryeguy
sumber
28
Saya juga berkomentar bahwa jika Anda tidak terbiasa dengan "Unix Way", ini bukan pertanyaan bodoh. Anda harus mendapatkan bonus karena berpikir untuk mengajukan pertanyaan di tempat pertama sebagai admin Linux baru.
Bart Silverstrim
Dan saya ingin mengomentari beberapa jawaban. Terutama yang mengatakan "Anda dapat mengacaukan hal-hal yang menjadi root". Saya tidak berpikir itu intinya ... "rm -rf /" melakukan hal yang sama dengan "sudo rm -rf /". Intinya terletak pada hal-hal seperti "sudo rm" tidak berfungsi, namun "sudo startMyApp on low port" berfungsi.
Zlatko
apa yang salah dengan tidak pernah ada?
ostendali

Jawaban:

70

Jika Anda login sebagai root, Anda dapat dengan mudah menghapus direktori atau melakukan sesuatu yang dalam retrospeksi benar-benar bodoh pada sistem dengan flip jari, sedangkan sebagai pengguna Anda biasanya harus memasukkan beberapa siklus mental tambahan ke dalam apa yang Anda Sedang mengetik sebelum melakukan sesuatu yang berbahaya.

Juga setiap program yang Anda jalankan sebagai root sebagai root privilege, artinya jika seseorang atau sesuatu membuat Anda menjalankan / mengkompilasi / menelusuri situs web yang berbahaya dan ingin merusak sistem Anda, seperti trojan atau malware lain, ia memiliki akses penuh ke Anda sistem dan dapat melakukan apa yang diinginkannya, termasuk akses ke port TCP di bawah 1024 (sehingga dapat mengubah sistem Anda menjadi remailer tanpa sepengetahuan Anda, misalnya).

Pada dasarnya Anda agak meminta masalah yang bisa Anda hindari. Saya kenal banyak orang yang akhirnya senang mereka memiliki jaring pengaman pada saat kecerobohan.

EDIT: Ada juga masalah root menjadi yang paling terkenal, sehingga target yang mudah, untuk skrip dan peretasan. Sistem yang menonaktifkan akun dan sebaliknya memaksa pengguna untuk menggunakan sudo berarti bahwa segala upaya untuk meretas root dari ssh atau eksploitasi lokal ke akun tersebut membenturkan kepalanya ke dinding. Mereka harus menebak / memecahkan kata sandi dan nama pengguna. Ini tingkat keamanan melalui ketidakjelasan, tetapi sulit untuk membantah bahwa itu tidak menggagalkan sebagian besar serangan script kiddie.

Bart Silverstrim
sumber
25
+1 - Menggunakan "sudo" menjadikan program yang dieksekusi sebagai root merupakan tindakan nyata. Ini bukan masalah "menghentikan peretas", ini masalah membuat Anda terbiasa bekerja sebagai pengguna yang tidak memiliki hak istimewa dan menjadikan permohonan hak akses root sebagai tindakan nyata dan terbuka.
Evan Anderson
2
Saya mulai bertanya-tanya apakah Evan benar-benar AI.
Bart Silverstrim
11
Sudo juga menambahkan jejak audit. Seperti siapa, apa, dan kapan login saat dijalankan sebagai sudo. File log mana yang dapat bervariasi dengan distro tetapi distro RedHat cenderung menggunakan / var / log / secure dan Ubuntu menggunakan /var/log/auth.log ... Saya tidak yakin apakah ini benar untuk semua distro berbasis Debian.
3dinfluence
3
+1 - ini bukan hanya tentang hak untuk membuat barang atau melakukan barang, ini juga tentang hak untuk menghancurkan. Masuk sebagai root (atau yang setara pada OS lain dalam hal ini) seperti berjalan-jalan dengan membawa pistol tanpa pengaman. Anda mungkin tidak pernah sengaja menyentuh pelatuk itu, tetapi apakah Anda memercayai diri Anda untuk melakukan hal yang sama?
Maximus Minimus
3
mh: / aku memakai topi koboinya, mengibas-ngibaskan pistolnya, membuka bir, menggumamkan sesuatu yang menggerutu rendah tentang pansy, dan kemudian login sebagai root.
Kyle Brandt
29

Jika Anda tidak mengizinkan orang idiot masuk ke server Anda sebagai root, maka jangan selalu jalankan sebagai root sendiri. Kecuali jika Anda dapat mengatakan dengan hati-hati bahwa Anda belum pernah menjadi idiot. Tidak benar-benar? Kamu yakin? :)

Manfaat: mengurangi kemungkinan Anda menjadi root dan idiot secara bersamaan.

Tom Newton
sumber
6
+1 - "Manfaat: mengurangi kemungkinan Anda menjadi root dan idiot secara bersamaan." Saya sangat suka ini.
Evan Anderson
+1 untuk filosofi Scott Adams bahwa semua orang adalah idiot. :) Ya, itu berarti Anda dan saya juga.
Ernie
Tentu saja - ini adalah salah satu pertanyaan kunci saya dalam wawancara kerja - kapan terakhir kali Anda mengacau? Semua orang memiliki, Anda hanya perlu membaca utas di sini tentang "fubar sysadmin paling menghibur" atau apa pun. Jika seseorang tidak mau mengaku telah membuat kesalahan bodoh setidaknya sekali dalam hidup mereka, mungkin ada beberapa alasan mengapa Anda tidak ingin bekerja dengan mereka.
Tom Newton
9

Alasan utamanya adalah kesalahan. Jika Anda selalu root, kesalahan ketik sederhana mungkin benar-benar mengacaukan sistem. Jika Anda hanya masuk sebagai root atau menggunakan sudo untuk melakukan hal-hal yang mengharuskannya, Anda meminimalkan risiko melakukan kesalahan berbahaya.

Kyle Brandt
sumber
9

Ketika Anda root Anda malas tentang izin, karena Anda memiliki akses ke semuanya sepanjang waktu, Anda tidak peduli ketika semuanya 777 atau 644 atau apa pun. Jadi, jika Anda pernah membiarkan orang lain masuk ke sistem Anda yang tidak ingin memiliki akses ke semuanya, tiba-tiba menjadi kesulitan nyata untuk membuat mesin tersebut aman untuk digunakan oleh orang lain.

Stu
sumber
5
Ini disebut "root rot".
kmarsh
1
Saya suka istilah itu, "root rot". Memang, menjalankan sebagai root sepanjang waktu dapat mengubah mesin * nix menjadi mesin seperti Windows 95 yang aneh tanpa kemiripan keamanan multi-pengguna. (Aku ingat mesin SCO, tahun lalu, di mana setiap pengguna pada aplikasi akuntansi bersama berjalan sebagai root karena "itu membuat masalah izin pergi"> mendesah <..)
Evan Anderson
Saya ingat mendapatkan penjelasan seperti itu - mereka memiliki alat mailinglist yang berjalan sebagai root, bersama dengan sendmail. Balasan saya adalah "Masalah izin juga hilang untuk para peretas."
duffbeer703
7

Ada beberapa prinsip utama di balik tidak masuk sebagai root: 1) Kata sandi root tidak pernah dikirim melintasi jaringan pada waktu login 2) Tidak ada cara untuk mengatakan siapa yang melakukan sesuatu jika beberapa pengguna login sebagai akun yang sama (root atau lainnya). 3) Secara tidak sengaja melakukan sesuatu yang 'bodoh'

Jeff Hengesbach
sumber
3

Ini lebih untuk perlindungan terhadap diri Anda sehingga Anda memiliki kesempatan kedua untuk meninjau perintah hak istimewa yang lebih tinggi yang Anda coba jalankan, analog dengan UAC di Windows. Sangat mudah untuk secara tidak sengaja melakukan sesuatu seperti rm -rf /saat login sebagai root.

Selain itu, Anda memiliki keterlacakan. Ini bukan masalah besar dalam situasi Anda di mana Anda satu-satunya (secara teoritis) yang mengeluarkan perintah tetapi kemampuan untuk login dan melacak kembali ke individu adalah komponen kunci untuk berbagai bentuk analisis.

squillman
sumber
Keterlacakan sangat penting dalam sistem di mana lebih dari satu orang bekerja sebagai sysadmin. Bukan hanya diinginkan itu diamanatkan oleh rezim peraturan.
APC
Saya melakukan ini pada hari Jumat. bukannya menghapus "/ dump / folder /" Saya menghapus folder /. Satu backslash yang bau mengingatkan saya mengapa kami tidak login sebagai root.
oneodd1
2

Perbedaannya terutama:
bahwa Anda tidak dapat melakukan hal buruk secara tidak sengaja.
bahwa kode "jahat" tidak dapat mengambil alih sistem.
Perhatikan: kode jahat tidak selalu berarti bahwa siapa pun sudah memiliki akses ke sistem.

StampedeXV
sumber
Saya perhatikan bahwa akhir-akhir ini, kode jahat biasanya berarti bot spam, yang dapat berjalan sebagai pengguna mana pun.
Ernie
Jika Anda memikirkan virus (mencoba menghancurkan sesuatu) atau rootkit, maka itu jauh lebih rumit untuk malware jika Anda bukan root.
StampedeXV
2

Anda harus selalu menggunakan akun dengan tingkat privilege serendah mungkin. Berjalan sebagai root sepanjang waktu mendorong kebiasaan buruk dan kemalasan yang akan membuat hidup tidak menyenangkan ketika Anda bekerja dengan banyak pengguna atau mengekspos sesuatu ke jaringan publik / semi-publik.

Perlu diingat juga bahwa pemecahan kata sandi hanyalah satu skenario kompromi - dan juga bukan skenario yang paling umum. Anda lebih cenderung menjadi korban kerentanan browser, atau kerentanan pada beberapa daemon yang berjalan di sistem Anda.

Pikirkan kode yang Anda gunakan tanpa berpikir. Sebagai contoh, port Linux dari Adobe Flash, yang merupakan tumpukan kotoran mengepul yang hanya dapat digunakan di masa lalu yang relatif baru. Menurut Anda seberapa aman kode itu? Apakah Anda ingin itu dapat menggunakan kontrol penuh dari sistem Anda?

duffbeer703
sumber
2

Itu dapat mencegah terhadap serangan brute force SSH. Setiap unix memiliki akun 'root'. Namun tidak jelas dari luar apa nama pengguna 'sudo' Anda nantinya. Karenanya jika seseorang ingin mencoba dengan paksa masuk, mereka tahu ada akun root dan mungkin akan mencobanya. Namun mereka tidak tahu harus mulai dari mana jika Anda menggunakan sudo.

Rory
sumber
1

Saran saya adalah mencoba menggunakan root sepanjang waktu untuk sementara waktu; Anda akan segera menemukan mengapa Anda tidak boleh :)

Chopper3
sumber
1

Bahkan jika saya tidak percaya pada "keamanan oleh ketidakjelasan", pasti ada keuntungan untuk menggunakan login khusus daripada login root yang pernah ada. Anda juga dapat mengkonfigurasi SSH untuk mencegah login root.

Seperti yang lain katakan juga, root dapat melakukan semuanya tanpa konfirmasi. Jadi menggunakan pengguna yang tidak terjangkau dapat mencegah kesalahan dan kesalahan ketik bodoh.

Argumen lain yang mendukung beberapa akun pengguna adalah menjalankan berbagai perangkat lunak di bawah pengguna yang berbeda. Melakukan ini, jika kelemahan keamanan dieksploitasi dalam satu aplikasi, pengeksploitasi hanya dapat mengakses file dan sumber daya yang dapat diakses oleh pengguna yang berjalan.

Satu poin terakhir untuk tidak menggunakan root: konsumsi sumber daya. Root tidak memiliki batasan pada berapa banyak memori, waktu pemrosesan, penangan file atau ruang disk yang dapat ia gunakan. Pada banyak filesystem, ada blok data yang hanya disediakan untuk root. Jadi pengguna normal tidak pernah bisa menggunakannya untuk mengisi disk Anda. perintah ulimit juga dapat digunakan untuk membatasi memori dan nomor penangan file yang dapat dikonsumsi pengguna. Tetapi jika Anda root (atau aplikasi berjalan sebagai root), tidak ada yang mencegah Anda untuk mengubah batas ini.

rolaf
sumber
0

Ya, saya setuju dengan Anda, dan saya pikir itu adalah masalah perlindungan terhadap kesalahan manusia dan kadang-kadang terhadap program jahat. Hal buruk yang belum pernah saya lihat adalah menggunakan root sebagai akun gnome default.
Saya pikir sebagian besar pengguna yang melakukannya adalah pengguna Windows yang baru saja pindah ke Linux atau Unix. Cobalah untuk menyalin penggunaan hak istimewa Administrator untuk melakukan root.

Ali Mezgani
sumber
0

Tidak ada yang salah dengan login sebagai root. Ini membantu mengembangkan memori otot untuk hanya mengetik perintah yang aman dan meningkatkan akurasi pemikiran saat melakukan tindakan dengan konsekuensi besar. Saya sangat merekomendasikan bekerja sebagai root untuk menjadi lebih baik dalam administrasi sistem.

Anda juga bisa melakukan hal-hal keren seperti ping -i 0.2 -c 1000 example.com

lee
sumber