Ada mesin SLES 11. Pengguna login melalui SSH dan pubkey (campuran, beberapa pengguna menggunakan kata sandi, beberapa menggunakan kunci ssh)
Sshd_config memiliki:
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
Masalahnya: Jika kata sandi kedaluwarsa untuk pengguna yang menggunakan login pubkey, maka pengguna akan diminta untuk mengubah kata sandi.
Pertanyaannya: Bagaimana kita dapat mengatur konfigurasi PAM atau sshd untuk memungkinkan pengguna untuk login jika mereka memiliki kunci SSH yang valid dan kata sandi mereka kadaluwarsa? - Tanpa muncul "ubah kata sandi Anda".
UPDATE # 1: Solusinya tidak bisa: "UsePAM no"
SERVER:~ # cat /etc/pam.d/sshd
#%PAM-1.0
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
SERVER:~ #
UPDATE # 2: Solusinya tidak bisa: atur kata sandi pengguna agar tidak pernah kedaluwarsa
PEMBARUAN # 3:
SERVER:/etc/pam.d # cat common-account
#%PAM-1.0
...
account required pam_unix2.so
account required pam_tally.so
SERVER:/etc/pam.d #
pam_unix.so
darisession
bagian/etc/pam.d/sshd
(dan menggantinya denganpam_lastlog.so
jika tidak ada. Saya tidak yakin apakahpam_unix.so/session
yang melakukan ini atau tidak, tapi rasanya seperti tempat yang tepat.ForcedPasswdChange No
ini untuk SSH1ForcedPasswdChange No
tidak akan berfungsi setelah kedaluwarsa. Anda mencari solusi yang memungkinkan pengguna kedaluwarsa untuk masukJawaban:
Urutan operasi yang menyebabkan kata sandi yang kadaluarsa adalah sebagai berikut:
account
tahap PAM , yang memverifikasi bahwa akun itu ada dan valid. Theaccount
pemberitahuan tahap itu password kadaluarsa, dan memungkinkan SSH tahu.auth
panggung. Kemudian mengatur sesi login SSH dan menjalankansession
tahap PAM .Semua ini dilakukan SSH, dan saya tidak melihat opsi SSH untuk mengkonfigurasi perilaku ini. Jadi, kecuali Anda ingin membangun versi khusus SSH dan / atau PAM, satu-satunya opsi yang saya lihat adalah untuk mencegah PAM melaporkan kata sandi yang kedaluwarsa ke SSH. Jika Anda melakukan ini, itu akan menonaktifkan pemeriksaan kadaluarsa SSH kadaluarsa sepenuhnya , bahkan jika pengguna login lebih dari SSH dengan kata sandi. Metode login lain (non-SSH) masih akan memeriksa kedaluwarsa kata sandi.
pam.d/sshd
File Anda saat ini memilikiaccount include common-account
entri. Saya kira adacommon-account
file yang berisi referensipam_unix.so
. Ini adalah baris yang memeriksa kata sandi yang kedaluwarsa.Anda mungkin tidak ingin menyentuh
common-account
file itu sendiri, karena ini digunakan untuk metode login lainnya. Sebaliknya, Anda ingin menghapusinclude
daripam.d/sshd
file Anda . Jika ada fungsi laincommon-account
selain itupam_unix.so
, Anda mungkin ingin memasukkannya langsung ke dalamnyapam.d/sshd
.Akhirnya, ingatlah bahwa ini adalah modifikasi pada keamanan sistem Anda dan Anda tidak seharusnya hanya mempercayai saya untuk memberi Anda nasihat yang baik. Baca bagaimana PAM bekerja jika Anda tidak terbiasa dengannya. Beberapa tempat mulai mungkin
man 7 PAM
,man 5 pam.conf
danman 8 pam_unix
.sumber
Opsi ditambahkan ke pam_unix.so (sekitar Feb-2016) disebut no_pass_expiry ( perubahan kode sumber di sini atau halaman manual di sini ). Pada dasarnya ia memberitahu pam_unix untuk mengabaikan kata sandi yang kadaluwarsa jika sesuatu selain pam_unix digunakan untuk auth, misalnya jika sshd melakukan auth.
Akibatnya, jika Anda memiliki versi pam_unix.so yang berisi opsi itu, Anda harus dapat mengonfigurasi PAM ke:
Sebagai contoh, saya mengkonfigurasi server RHEL 7 untuk melakukan hal di atas dengan hanya memperbarui /etc/pam.d/sshd dan menambahkan pam_unix.so no_pass_expiry ke jenis akun dan kata sandi, misalnya
sumber
Kemudian root dapat mengubah kata sandi tanggal yang diubah:
sumber