Bagaimana cara menonaktifkan login root di Ubuntu?

28

beberapa waktu lalu saya memberi root kata sandi sehingga saya bisa login sebagai root dan menyelesaikan beberapa hal. Sekarang saya ingin menonaktifkan login root untuk memperketat keamanan, karena saya akan mengekspos servis saya ke internet. Saya telah melihat beberapa cara untuk melakukan ini ( sudo passwd -l root, mengutak-atik /etc/shadow, dan sebagainya), tetapi tidak ada yang mengatakan apa cara terbaik / paling masuk akal untuk melakukannya. Saya sudah melakukannya sudo passwd -l roottetapi saya telah melihat saran yang mengatakan ini dapat memengaruhi skrip init, dan itu tidak seaman kelihatannya karena masih meminta kata sandi jika Anda mencoba masuk, alih-alih menolak akses. Jadi apa cara untuk mencapai itu?

EDIT: untuk memperjelas, ini untuk login lokal sebagai root; Saya sudah menonaktifkan login jarak jauh melalui SSH. Meskipun mencoba masuk sebagai root melalui SSH masih meminta kata sandi root (yang selalu gagal). Apakah itu buruk?

Ben Hymers
sumber
1
Menonaktifkan akses lokal untuk root hampir tidak memiliki manfaat keamanan. Seorang pengguna dengan akses fisik dapat mengotori kotak Anda dengan banyak cara.
jscott
Poin yang diambil. Tidak perlu masuk sebagai root jika Anda bisa mengeluarkan hard drive. Saya masih ingin tahu bagaimana mengembalikan akun root seperti sebelum saya mengubahnya, jika hanya ingin tahu sekarang.
Ben Hymers
lihat pembaruan untuk jawaban saya di bawah ini. Saya pikir saya sekarang mengerti apa yang Anda minta.
jscott
@ jscott ketika menonaktifkan root mungkin tidak memberikan manfaat keamanan terhadap intrusi, tetapi tidak masuk karena root menyediakan switch pengaman terhadap merusak sistem dengan rmperintah salah tempat atau semacamnya. Sesuatu yang saya pelajari dengan cara yang sulit. Ya, seseorang TIDAK bisa login sebagai root, tetapi menonaktifkannya masuk akal dari sudut pandang sys admin.
codechimp
Tampak hebat untuk VPS atau hosting, benar-benar tidak punya otak.
jjxtra

Jawaban:

34

Bagi saya, masih bisa diperdebatkan bahwa menonaktifkan root sepadan dengan potensi masalah. Saya belum pernah menguji server yang dikonfigurasi sedemikian rupa. Preferensi saya adalah mengizinkan akses root saja. Jika penyerang memiliki akses fisik ke server Anda, Anda bisa melupakan semua yang telah Anda lakukan untuk "mengamankan" instalasi Anda.

Nonaktifkan sshakses root dengan mengedit /etc/ssh/sshd_configmengandung:

PermitRootLogin no

Mengotak-atik /etc/shadow, chsh -s /bin/false rootsemua bisa dibatalkan dengan CD / thumbdrive bootable sederhana.

Perbarui per komentar Anda:

Dari help.ubuntu.com : "Secara default, kata sandi akun root terkunci di Ubuntu ". Silakan lihat bagian "Menonaktifkan kembali akun root Anda" secara khusus. Untuk mengatur ulang status akun root, untuk menginstal-default, gunakan perintah berikut:

sudo usermod -p '!' root
jscott
sumber
Tidak ada sistem yang aman ketika penyerang memiliki akses fisik ke sistem itu. Ketika Anda dapat mengedit / etc / shadow, apa yang menghentikan Anda dari mengedit / etc / ssh / sshd_config?
Sven
@VenW: Tepat. Itulah sebabnya saya memperdebatkan kegunaan, keamanan-bijaksana, bahkan repot-repot untuk "menonaktifkan" root. Batasi akses root, ya. Nonaktifkan akun, tidak.
jscott
4
sudo service ssh restart ....... setelah melakukan ini.
Naweed Chougle
File bantuan yang direferensikan sekarang memberikan perintah berikut: sudo passwd -dl root
MrG
21

Saya berasumsi Anda merujuk ke login jarak jauh melalui ssh. Tambahkan baris berikut ke /etc/ssh/sshd_config:

PermitRootLogin no

dan restart layanan ssh

sudo service ssh restart

Itu harus melakukan pekerjaan dan Anda dapat menjaga akun root Anda apa adanya (atau mencoba untuk menonaktifkannya jika Anda merasa itu perlu).

kynan
sumber
Maaf, seharusnya saya katakan, ini untuk login lokal. Saya telah memperbarui pertanyaan.
Ben Hymers
4

Pertanyaan utama telah dijawab beberapa kali, tetapi pertanyaan kedua belum dijawab. SSH meminta kata sandi setelah memasukkan root setelah dinonaktifkan sebagai fitur keamanan. Ini juga akan memicu jika Anda mencoba masuk sebagai lkjfiejlksji.

Ini untuk mencegah seseorang menguji setumpuk nama pengguna, untuk mencoba dan mencari tahu mana yang valid pada sistem Anda. Namun, dari sudut pandang keamanan, jika Anda telah menonaktifkan root melalui SSH, saya juga menyiapkan program deteksi bruteforce (seperti fail2ban), dan mengaturnya sehingga jika seseorang bahkan mencoba masuk sebagai root, ia memblokir mereka dari mencoba serangan tambahan apa pun.

Ryan Gooler
sumber
Jawaban yang bagus, terima kasih! Saya sudah menyiapkan fail2ban, saya akan mengkonfigurasinya untuk memblokir pada upaya pertama untuk login sebagai root, saran yang bagus.
Ben Hymers
2

Mengganti kata sandi terenkripsi dengan * di / etc / shadow (bidang kedua, setelah yang pertama ':') adalah cara terbaik, IMHO. Juga, nonaktifkan login root untuk ssh (cara ini tidak mungkin untuk login melalui ssh sebagai root) dan mungkin membatasi ssh untuk login sertifikat, yang jauh lebih aman daripada login berbasis kata sandi.

Dalam kebanyakan kasus, SSH harus menjadi satu-satunya layanan yang dapat diakses dari luar yang berpotensi memungkinkan login root, sehingga pintu ini akan dikunci.

Untuk membatasi ini lebih lanjut, Anda dapat menginstal sesuatu seperti fail2ban, yang melarang alamat IP untuk jangka waktu tertentu setelah sejumlah upaya login yang gagal.

Sven
sumber
Saya merasa '*' sama dengan '!', Sesuai jawaban yang diterima, jadi saya akan memilih jawaban ini juga.
Ben Hymers
1

JR et al,

AllowUsers Anda menuntun saya ke https://help.ubuntu.com/community/SSH/OpenSSH/Configuring ini

sudo vi / etc / ssh / sshd_config

PermitRootLogin ya (diubah menjadi tidak)

(tambahkan baris di bagian bawah file) DenyUsers user1 user2

simpan dan keluar lalu

sudo service ssh restart

Memecahkan masalah saya. Terimakasih untuk semua.

jeff
sumber
0

Jika Anda ingin menonaktifkan login root lokal, Anda dapat mencoba memodifikasi / etc / passwd dan mengganti / bin / bash dengan / bin / false. NAMUN, karena saya belum mengujinya, saya akan mengatakan membiarkan sesi root terbuka di samping, mengujinya, dan jika ada efek samping yang aneh, ubah kembali.

Julien Vehent
sumber
0

Re: Keamanan.

IMHO hanya ada begitu banyak yang dapat Anda lakukan, keamanan bijaksana, singkat mencabut kotak, melepaskannya dari jaringan, dan mengelasnya di dalam kotak baja karbida-baja tebal 3 ".

Pikirkan seperti ini - jika orang bisa meretas Departemen Pertahanan, CIA, FBI, dan Citibank - kita semua manusia biasa tidak bisa berbuat lebih baik.

Re: keamanan SSH.

Saya tidak hanya melarang akses root melalui ssh, saya juga mengatur parameter "AllowUsers" menjadi nama pengguna saya, dan hanya saya. Dengan cara ini, tidak ada seorang pun selain pengguna saya yang dapat masuk melalui ssh. Ini mungkin berlebihan seperti dalam kasus saya sendiri, saya hanya membuat SATU pengguna non-root.

Sayangnya, seperti yang orang lain katakan berkali-kali sebelumnya, segera setelah seseorang mendapatkan akses fisik ke kotak, semua taruhan MATI!

Pertukaran sertifikat untuk login ssh? Hmmmm. . . . kedengarannya bagus. Bagaimana Anda melakukannya?

Jim (JR)

Jim
sumber