Haruskah kita menonaktifkan pengguna root?

21

Haruskah kita menghapus kata sandi root, menonaktifkan login jarak jauh dan pada dasarnya mengharuskan administrator untuk menggunakan sudo untuk melakukan tindakan administratif?

teks alternatif

jldugger
sumber

Jawaban:

16

Semua server saya menonaktifkan akun root ( sp_pwdpdisetel ke *). Ini diperlukan sudountuk semua akses root. [1] Tujuannya adalah agar semua kegiatan pengguna super diaudit, sehingga orang dapat melihat apa yang telah dilakukan pada sistem.

Untuk opsi yang lebih hardcore, Anda dapat membuat sudomenulis ke file log (tidak seperti syslog), dan membuat file hanya-append (menggunakan chattrdi Linux, atau chflagsdi BSD). Dengan cara ini, tidak ada yang bisa mengedit audit sesudahnya.

[1] Saya juga memiliki kebijakan untuk tidak menjalankan shell root, atau melakukan shell escape dari proses root. ( sudo sh -c '...'Meskipun demikian, tidak apa-apa digunakan untuk melakukan penyaluran pipa atau pengalihan.)

Chris Jester-Young
sumber
3
"Tidak ada peluru, juga!" Uhm, tahukah Anda berapa banyak program yang memiliki perintah "drop to shell" di dalamnya? Bahkan sebelum Anda mulai melihat kontrol pekerjaan shell ...
womble
Saya berbicara tentang "tidak ada shell" sebagai kebijakan, bukan sebagai opsi sudo. (sudo memang memiliki pilihan noexec, tapi jelas itu tidak kedap air kecuali Anda membatasi program khusus bahwa pengguna mampu menjalankan.)
Chris Jester-Young
Apakah mungkin untuk mengkonfigurasi sudo sehingga "sudo -s" tidak dapat digunakan? Saya hanya menggunakan sudoers untuk mengkonfigurasi perintah individual.
@ Graham: Kamu bisa. Namun, seperti yang Anda lihat dari komentar di atas, itu tidak menghentikan apa pun, jika pengguna Anda dapat menjalankan apa pun. Satu-satunya solusi kedap air adalah pendekatan daftar putih, di mana Anda mencantumkan program spesifik yang dapat dijalankan pengguna, dan mereka semua harus terhubung secara dinamis (sehingga opsi "noexec" dapat melakukan tugasnya).
Chris Jester-Young
Sebagai kebijakan di mana Anda mempercayai admin, ini bagus. Anda dapat melihat perintah apa yang dijalankan orang yang bisa sangat membantu ketika mencoba mencari tahu apa yang telah berubah.
Hamish Downer
15

Saya dengan tegas merekomendasikan agar tidak menonaktifkan pengguna root. Nonaktifkan atau batasi login root (melalui securetty dan via sshd_config dan via PAM dan melalui apa pun yang Anda miliki) Jika sistem Anda mengizinkannya, batasi hak akses root atau pisahkan peran root (mirip dengan cara RSBAC melakukannya). Tapi tolong, tolong , lakukan tidak menonaktifkan akun root dengan menghapus kata sandi, jika tidak maka akan menjadi mustahil untuk masuk ke sistem melalui sulogin. sulogindigunakan oleh semua skrip init yang saya tahu jika ada kesalahan serius yang dilaporkan oleh fsck - dan itu berarti Anda akan dikunci dari sistem jika sistem file root rusak.

Untuk memperjelas: Dengan "menonaktifkan akun root dengan menghapus kata sandi" maksud saya berbagai mekanisme yang berakhir dengan! atau * di bidang kata sandi / etc / shadow, atau serupa. Maksud saya bukan "ubah mekanisme login root sehingga Anda tidak dimintai kata sandi."

Mihai Limbăşan
sumber
Apakah ini masalah dalam sistem seperti Ubuntu yang tidak pernah menetapkan kata sandi root? Saya sepertinya bisa mengeksekusi "sudo sulogin", tapi mungkin saya tidak memahami aspek kritis.
jldugger
Sayangnya saya tidak terbiasa dengan cara Ubuntu menangani root. Tetapi jika Anda dapat melakukan "sudo sulogin" dan mendapatkan shell root tanpa diminta kata sandi root, maka tidak, itu bukan masalah, karena mekanisme yang sama mungkin berlaku saat boot. Anda dapat mencoba mencari untuk mendapatkan sulogin melalui skrip init untuk memeriksa kapan dan bagaimana itu dipanggil.
Mihai Limbăşan
1
Ubuntu tidak menggunakan sulogin. Jika Anda masuk ke mode single-user, Anda langsung mendapatkan shell root. Namun, baca komentar saya (dalam posting saya) untuk melihat mengapa ini bukan masalah, dalam banyak kasus.
Chris Jester-Young
Selain itu, ada klaim bahwa memiliki suatau sudodi sistem Anda tersedia untuk pengguna berarti lebih banyak risiko keamanan yang dapat Anda hindari jika Anda hanya memiliki pengguna root khusus. Itu posisi yang dianjurkan oleh penulis distribusi aman Owl (dan desainer Solar di antara mereka) - unix.stackexchange.com/questions/8581/… mencoba menyajikan posisi mereka dengan referensi.
imz - Ivan Zakharyaschev
Saya baru saja mengalami masalah ini: Saya mengunci pengguna root dan fsck terpaksa karena hard reset. Untungnya saya bisa mem-boot Linux saya yang salah dengan fastbootopsi, membuka kunci akun root dan memulai kembali untuk akhirnya berjalan fscksecara manual.
tommyd
3

Saya memiliki akun root diaktifkan di semua server saya. Semua administrator memiliki pengguna mereka sendiri dan harus masuk melalui itu. Dari sana mereka beralih ke root. (root ssh dinonaktifkan)

Biarkan penghitungan administrator rendah. Hanya orang-orang yang benar-benar membutuhkan akses root di server yang memiliki kata sandi.

Saya bukan penggemar sudo. Terlalu mudah untuk melakukan 'sudo bash' untuk sebuah shell root. Saya sadar ini bisa dinonaktifkan tetapi mengapa repot-repot? Batasi pengguna yang dapat melakukan tugas administrator dan berbicara satu sama lain. Kami memiliki kebijakan untuk tidak membiarkan terminal root terbuka tanpa pengawasan. Jadi itu masuk, su, lakukan pekerjaan, keluar.

Catatan: Saya bekerja di sebuah perusahaan yang cukup kecil (50-an karyawan) dan kami bergaul dengan hanya 2 admin paruh waktu (1 windows / 1 linux). Cara melakukan hal-hal ini mungkin bukan yang terbaik ketika Anda memiliki pesanan lebih banyak pengguna. Saya pribadi masih tidak akan menggunakan sudo. Ada cara lain untuk mencatat aktivitas root.

Gert M
sumber
Jika Anda ingin root shell dari konsol Anda bisa melakukan 'sudo -i' alih-alih membukanya dari sudo bash. Secara pribadi saya benar-benar tidak menyukai gagasan masuk sebagai pengguna root secara langsung karena terlalu berisiko untuk goating berbahaya (yaitu secara tidak sengaja membiarkan komputer tidak terkunci dengan shell root terbuka).
Spoike
Anda kehilangan logging / audit dengan itu, meskipun. Buat semua orang menggunakan sudo, dan melarang orang melakukan sudo bash, atau sudo -i, atau sudo -s dengan kebijakan perusahaan. Itu memberi Anda jejak audit, dan jika Anda mendorong semua log Anda ke loghost pusat, itu karena mudah untuk memverifikasi bahwa orang-orang mengikuti kebijakan.
Christopher Cashell
Itulah pendekatan yang diambil dan dianjurkan oleh penulis distribusi aman Owl (dan desainer Solar di antara mereka) - unix.stackexchange.com/questions/8581/… mencoba menyajikan posisi mereka dengan referensi.
imz - Ivan Zakharyaschev
2

Menonaktifkan kata sandi root adalah "ide bagus" yang salah. Hari Anda akan membutuhkannya, Anda akan benar-benar - membutuhkannya. (sesuai dengan konfigurasi Anda, Anda mungkin memerlukannya untuk masuk ke mode pengguna tunggal sebagai contoh)

Menonaktifkan login jarak jauh root mungkin relevan tetapi hanya jika Anda dapat masuk secara lokal.

Dan ya, sudo harus diinstal pada setiap server Anda. Ini berguna dan mudah dikonfigurasi. Mengapa Anda tidak menggunakannya?

Benoit
sumber
Bagaimana jika boot ke mode pengguna tunggal adalah opsi grub?
jldugger
Apa tujuan menonaktifkan akun root? Apa yang akan Anda lakukan jika rem biner atau konfigurasi sudo Anda (atau alat apa pun yang Anda gunakan)?
Benoit
Disabling root remote login might be relevant but only if you are able to log on locally.Ini benar-benar salah. Anda dapat login dari jarak jauh dengan akun apa pun ; menonaktifkan login jarak jauh root tidak membatasi Anda untuk akses lokal.
Dan
2

Saya hanya menonaktifkan akses SSH untuk root dan meminta pengguna (seringkali hanya pengembang) untuk menggunakan kunci ssh. Terlalu banyak serangan kamus dan mengubah port SSH bukanlah pilihan bagi kami.

Dengan begitu Anda tidak harus percaya pada kemampuan siapa pun untuk menulis kata sandi yang baik. Setelah masuk, admin hanya memiliki izin untuk sudo.

pablasso
sumber
Mengubah port SSH tidak ada gunanya. Porta sederhana dapat memberikannya dengan mudah. Ketika saya telnet ke port 22 pada mesin saya, saya mendapatkan SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Matt Simmons
@MattSimmons Ya, tetapi sebagian besar serangan kamus bersifat otomatis dan sangat elementer. Mereka tidak peduli dengan pemindaian port; mereka mencoba untuk terhubung ke alamat IP acak pada port 22 dan jika mereka kehabisan waktu mereka pindah ke IP berikutnya dalam daftar mereka. Ini bukan langkah keamanan, itu hanya membantu menyingkirkan serangan port 22 otomatis. Jelas serangan yang ditargetkan adalah ballgame yang sama sekali berbeda.
Dan
2

Saya tahu utas ini benar-benar tua tetapi ada beberapa kelemahan utama dalam logika artikel yang ditautkan dan saya merasa "rant'ie" - sudo memungkinkan daftar putih dan daftar hitam. Bukan hanya hitam seperti yang mereka tentukan dalam artikel tertaut - Ini melompati gagasan AAA (Otentikasi, Otorisasi & Audit) - su & sudo memungkinkan otentikasi bertingkat dan akuntabilitas.

Skenario 1 Seorang administrator secara tidak sengaja memperkenalkan beberapa kode jahat ke suatu sistem, login sebagai root kode memiliki akses lengkap dan administrator mungkin tidak pernah tahu apa yang terjadi. Setidaknya dengan info masuk bertingkat (mis. Su / sudo) administrator akan diminta untuk mengotentikasi jika kode jahat mencoba menggunakan hak yang ditinggikan ... Jika tidak meningkat maka terbatas pada hak pengguna yang harus mengakibatkan kerusakan minimal.

Skenario 2 Administrator jahat ingin mendapatkan info / melakukan perubahan. Mereka terhubung ke konsol (akses konsol fisik, HP iLo / serupa, atau akses konsol vGuest), masuk sebagai root dan melakukan apa pun yang mereka inginkan. Kecuali jika ada kartu akun / akses bernama yang digunakan untuk mendapatkan akses konsol, mungkin tidak banyak jejak audit.

  1. Pastikan mereka benar-benar seperti yang mereka katakan. Pencurian identitas bukan masalah, verifikasi identitas.
  2. Periksa otorisasi mereka, berikan saja apa yang mereka butuhkan saat itu. Otorisasi bergradasi memungkinkan mereka untuk meningkat ketika mereka membutuhkannya.
  3. Audit semua itu, punya catatan sehingga Anda tahu siapa, melakukan apa, kapan dan di mana. Lebih disukai kenapa juga
Mike
sumber
1

Anda harus meminta semua orang menggunakan sudo untuk setiap perintah root sebagai kebijakan. Tidak pernah ada alasan untuk menjalankan "sudo bash" atau sejenisnya, itu hanya untuk kenyamanan, karena ketidaktahuan, atau untuk menutupi jejak seseorang.

Jika Anda menonaktifkan login ke akun root secara langsung, Anda melumpuhkan kemampuan Anda untuk memperbaiki sistem ketika ada masalah parah.

Jika Anda tidak dapat meyakinkan admin Anda untuk login sebagai diri mereka sendiri dan menjalankan sudo untuk setiap perintah yang dijalankan sebagai root, dan untuk tidak memecahnya menjadi sebuah shell, Anda memiliki masalah serius yang tidak ada solusi teknisnya.

carlito
sumber
1

Para penulis distribusi aman Owl (dan perancang surya) memiliki pandangan yang berlawanan secara hati-hati; lihat, misalnya, jawabannya /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660 untuk presentasi klaim mereka. Masalah mengaudit tindakan pengguna super (orang yang melakukan apa) juga dibahas dalam sudut pandang mereka (pada dasarnya, solusinya adalah memiliki beberapa pengguna root dengan nama yang berbeda).

imz - Ivan Zakharyaschev
sumber