Apa artinya 'tanpa kata sandi' dalam file sshd_config?

118

Saya baru saja menginstal Ubuntu 14.04 di server saya dan saya sedang mengatur semua file konfigurasi saya ketika saya menemukan ini di sshd_configfile saya :

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

Ini membuat saya sangat khawatir. Saya pikir mungkin saja seseorang dapat masuk ke server saya sebagai root tanpa kata sandi.

Saya mencoba menghubungkan ke server saya sebagai root melalui:

johns-mbp:~ john$ ssh [email protected]
The authenticity of host '192.168.1.48 (192.168.1.48)' can't be established.
RSA key fingerprint is 40:7e:28:f1:a8:36:28:da:eb:6f:d2:d0:3f:4b:4b:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.
[email protected]'s password:  

Saya memasukkan kata sandi kosong dan itu tidak membiarkan saya masuk, itu melegakan. Jadi pertanyaan saya adalah: apa artinya tanpa kata sandi dan mengapa ini default di Ubuntu 14.04?

John
sumber

Jawaban:

142

Dari halaman manual :

PermitRootLogin

Menentukan apakah root dapat masuk menggunakan ssh (1). Argumennya harus “ya”, “tanpa kata sandi”, “hanya dipaksa-perintah”, atau “tidak”. Defaultnya adalah “ya”.

Jika opsi ini diatur ke "tanpa kata sandi", otentikasi kata sandi dinonaktifkan untuk root.

Jika opsi ini diatur ke "hanya perintah-perintah", login root dengan otentikasi kunci publik akan diizinkan, tetapi hanya jika commandopsi telah ditentukan (yang mungkin berguna untuk mengambil backup jarak jauh bahkan jika login root biasanya tidak diizinkan) . Semua metode otentikasi lainnya dinonaktifkan untuk root.

Jika opsi ini diatur ke "tidak", root tidak diizinkan masuk.

Dengan demikian without-passwordmemungkinkan login root hanya dengan otentikasi kunci publik. Ini sering digunakan dengan skrip shell dan tugas otomatis.

Florian Diesch
sumber
2
Tidak mengizinkan 'Root login' menggunakan kata sandi dianggap keamanan yang lebih kuat daripada mengizinkannya. Karena itu, Anda tidak boleh masuk ke root sama sekali, kecuali tidak ada metode lain (sudo, dll.) Yang berfungsi.
david6
5
Seperti yang Anda lihat, sementara halaman manual menunjukkan default adalah "ya", Ubuntu telah membuat default "tanpa kata sandi".
ferrouswheel
36
Jadi without-passwordartinya semua metode diizinkan kecuali kata sandi? Kedengarannya seperti "diizinkan masuk tanpa perlu kata sandi".
Gauthier
1
"Semua akses root harus difasilitasi melalui login lokal dengan ID pengguna yang unik dan dapat diidentifikasi dan kemudian melalui perintah su setelah diautentikasi secara lokal. Login root langsung sangat tidak aman dan menawarkan sedikit cara audit untuk akuntabilitas." - Panduan CIS IBM AIX
Dominik Antal
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
endolith
16

Sebenarnya pengaturan ini tidak banyak artinya jika Anda menggunakan otentikasi PAM. Di bagian bawah sshd_configfile konfigurasi Anda akan menemukan:

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

Pengaturan default pada Ubuntu adalah menggunakan otentikasi PAM:

UsePAM yes
Atari911
sumber
1
Dalam pengalaman singkat saya , bahkan mengatur ini untuk notidak membuat PermitRootLogin without-passwordbenar - benar berfungsi, entah bagaimana! :(
cregox
1
@cregox jika Anda menggunakan sistem desktop yang khas, yang perlu Anda lakukan ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipdan itu membuat ~/.ssh/authorized_keysmengingat jika Anda tidak bisa masuk sebagai root Anda tidak akan membuat file ini di /root/.ssh/ tetapi berfungsi jika Anda menyalin file di sana
Rutrus
3

Perhatikan bahwa ada alasan yang sah untuk masuk melalui root (tetapi menggunakan kunci kriptografi dan tidak pernah menggunakan kata sandi). Contoh khasnya adalah sinkronisasi dua server dari jarak jauh (agar salah satu dari mereka digunakan sebagai kegagalan-atas). Karena strukturnya harus identik, seringkali kata sandi root diperlukan.

Berikut adalah contoh penggunaan serempak untuk sinkronisasi: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison

Gwyneth Llewelyn
sumber
2
Tidak akan masuk dengan pengguna normal (menggunakan kunci kriptografi yang paling mungkin) dan memilikinya milik sudogrup memungkinkan Anda untuk melakukan ini juga?
NS du Toit
2

Dalam versi yang lebih baru dari sshd "tanpa kata sandi" telah diubah menjadi "larangan kata sandi".

Kedua versi berfungsi, mungkin lebih baik menggunakan "larangan kata sandi" jika Anda bisa: ini menjelaskan sendiri lebih baik.

teknopaul
sumber