Yang terbaik adalah menggunakan kunci publik untuk SSH. Jadi saya sshd_config
punya PasswordAuthentication no
.
Beberapa pengguna tidak pernah masuk, misalnya pengguna sftp dengan shell /usr/sbin/nologin
. Atau akun sistem.
Jadi saya bisa membuat pengguna seperti itu tanpa kata sandi dengan adduser gary --shell /usr/sbin/nologin --disabled-password
.
Apakah itu ide yang baik / buruk? Apakah ada konsekuensi yang belum saya pertimbangkan?
sudo
akses (baik karena tidak memiliki izin sudo sama sekali, atau dengan memiliki izin sudo denganNOPASSWD
), jawaban yang Anda pilih harus sesuai. Saya telah mengirimkan suntingan pada jawaban itu untuk memasukkan masalah sudo tetapi saya pikir saya akan memberitahukannya kepada Anda di sini sementara itu.Jawaban:
Jika Anda memiliki akses root ke server dan dapat membuat ulang kunci ssh untuk pengguna Anda jika mereka kehilangan mereka
DAN
Anda yakin pengguna (sebagai pribadi) tidak akan memiliki beberapa akun pengguna dan mereka perlu beralih di antara mereka yang ada di sesi SSH (well, mereka juga dapat membuka beberapa sesi SSH jika diperlukan)
DAN
mereka tidak akan memerlukan akses "fisik" (melalui keyboard + monitor atau melalui konsol jarak jauh untuk VM) ke server
DAN
tidak ada pengguna yang memiliki
sudo
akses gated-password (yaitu mereka tidak memiliki akses sudo sama sekali, atau memiliki akses sudo denganNOPASSWD
)Saya pikir kamu akan baik-baik saja.
Kami memiliki banyak server yang sedang dikonfigurasikan seperti ini (hanya beberapa akun yang membutuhkan akses ke VM melalui konsol jarak jauh vmware, yang lain hanya terhubung melalui SSH dengan pubkey auth).
sumber
PasswordAuthentication no
masalah yang berbeda (pengguna tetap tidak dapat login).Pertanyaan ini awalnya disebutkan
passwd --delete <username>
yang tidak aman : dengan itu, bidang kata sandi terenkripsi di/etc/shadow
akan benar-benar kosong.Jika Anda telah mengonfigurasikan Anda
sshd
untuk menolak otentikasi kata sandi, maka itu aman dengan SSH ... Tetapi jika ada layanan lain di sistem Anda menggunakan otentikasi kata sandi dan tidak dikonfigurasi untuk menolak kata sandi nol, ini memungkinkan akses tanpa kata sandi! Anda tidak menginginkan ini.adduser --disabled-passwd
akan menghasilkan/etc/shadow
entri di mana bidang kata sandi terenkripsi hanyalah tanda bintang, yaituIni adalah "kata sandi terenkripsi yang tidak pernah berhasil dimasukkan", artinya ini berarti akun itu sah dan secara teknis memungkinkan masuk, tetapi itu membuat otentikasi dengan kata sandi tidak mungkin berhasil . Jadi, jika Anda memiliki layanan berbasis otentikasi kata sandi lain di server Anda, pengguna ini diblokir dari mereka.
Hanya metode otentikasi yang menggunakan sesuatu selain kata sandi akun standar (misalnya kunci SSH) yang akan berfungsi untuk pengguna ini, untuk layanan apa pun yang menggunakan file kata sandi sistem dalam sistem ini. Saat Anda membutuhkan pengguna yang hanya bisa masuk dengan kunci SSH, inilah yang Anda inginkan.
Jika Anda perlu mengatur akun yang ada ke negara ini, Anda dapat menggunakan perintah ini:
Ada nilai khusus ketiga untuk bidang kata sandi terenkripsi:,
adduser --disabled-login
maka bidang tersebut hanya akan berisi tanda seru.Seperti asterisk, ini membuat otentikasi kata sandi mustahil untuk berhasil, tetapi juga memiliki makna tambahan: ini menandai kata sandi sebagai "terkunci" untuk beberapa alat administrasi.
passwd -l
memiliki banyak efek yang sama dengan mengawali hash kata sandi yang ada dengan tanda seru, yang sekali lagi membuat otentikasi kata sandi tidak mungkin untuk digunakan.Tapi ini jebakan bagi yang tidak waspada: di tahun 2008, versi
passwd
perintah yang berasal darishadow
paket lama diubah untuk mendefinisikan kembalipasswd -l
dari "mengunci akun" menjadi hanya "mengunci kata sandi". Alasan yang disebutkan adalah "untuk kompatibilitas dengan versi passwd lainnya".Jika Anda (seperti saya) mengetahui ini sejak lama, itu mungkin akan mengejutkan. Ini tidak membantu hal-hal yang
adduser(8)
tampaknya belum menyadari perbedaan ini juga.Bagian yang menonaktifkan akun untuk semua metode otentikasi sebenarnya menetapkan nilai tanggal berakhirnya 1 untuk account:
usermod --expiredate 1 <username>
. Sebelum tahun 2008,passwd -l
itu berasal darishadow
source kit yang digunakan untuk melakukan ini selain untuk awalan kata sandi dengan tanda seru - tetapi tidak lagi melakukannya.Changelog paket Debian mengatakan:
Riwayat bug untuk bug Debian 492307 dan bug 389183 dapat membantu dalam memahami pemikiran di balik ini.
sumber
adduser --disabled-passwd
- jadi jika beberapa layanan lain mengizinkan otentikasi kata sandi, maka pengguna dapat masuk tanpa kata sandi?adduser --disabled-password
secara khusus membuat otentikasi kata sandi tidak mungkin berhasil untuk akun itu.*
sehingga ini adalah hal pertama yang dibaca orang.passwd
kode sumber pada tahun 2008. Tidakkah Anda menyukainya ketika sesuatu yang pernah Anda pelajari dan kemudian andalkan ternyata tidak lagi?