UsePAM ile süresi dolmuş şifre ve SSH anahtar tabanlı giriş evet


12

Bir SLES 11 makinesi var. Kullanıcılar SSH ve pubkey yoluyla oturum açar (karışık, bazı kullanıcılar şifre kullanır, bazıları ssh anahtarı kullanır)

Sshd_config'de şunlar bulunur:

UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes

Sorun: Pubkey oturumu kullanan bir kullanıcı için parolanın süresi dolarsa, kullanıcıdan parolayı değiştirmesi istenir.

Soru: PAM veya sshd yapılandırmasını, kullanıcıların geçerli bir SSH anahtarı varsa ve parolanın süresi dolmuşsa oturum açmasına izin verecek şekilde nasıl ayarlayabiliriz? - Without haşhaş "Şifrenizi değiştirmek".

GÜNCELLEME # 1: Çözüm şu olamaz: "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:~ # 

GÜNCELLEME # 2: Çözüm şu olamaz: Kullanıcı şifresini hiçbir zaman sona ermeyecek şekilde ayarlayın

Güncellenmesi 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 # 

Bunu pam_unix.so, sessionkısmından kaldırarak başarabilirsiniz /etc/pam.d/sshd(ve pam_lastlog.soorada değilse değiştirin. Bunu yapan olup olmadığından emin değilim pam_unix.so/session, ancak doğru yer gibi geliyor.
Patrick

1
Kullanıcı hesabını hiçbir zaman sona
ermeyecek

@Raza: Teşekkürler :) harika bir fikir, ancak bir çözüm olamaz :(
thequestionthequestion

ForcedPasswdChange NoBu SSH1 için deneyin
Raza

1
ForcedPasswdChange NoSon kullanma tarihinden sonra bunun işe yaramayacağını anladım . süresi dolmuş kullanıcının giriş yapmasına olanak tanıyan bir çözüm arıyorsunuz
Raza

Yanıtlar:


10

Süresi dolmuş parola istemine neden olan işlemlerin sırası aşağıdaki gibidir:

  • SSH account, hesabın var olduğunu ve geçerli olduğunu doğrulayan PAM aşamasını çalıştırır . accountSahne bildirimler şifre sona ermiş ve SSH bilmesini sağlar bildirildi.
  • SSH, anahtar tabanlı kimlik doğrulama gerçekleştirir. Bunun için PAM'ye ihtiyaç duymaz, bu yüzden authsahneyi çalıştırmaz . Daha sonra SSH oturumunu ayarlar ve PAM sessionaşamasını çalıştırır .
  • Daha sonra SSH, PAM'ın parolanın süresinin dolduğunu söylediğini hatırlar, bir uyarı mesajı yazdırır ve PAM'den kullanıcıdan parolayı değiştirmesini ister. SSH daha sonra bağlantıyı keser.

Bütün bunlar SSH yapıyor ve bu davranışı yapılandırmak için herhangi bir SSH seçeneği görmüyorum. Bu nedenle, SSH ve / veya PAM'nin özel bir sürümünü oluşturmak istemiyorsanız, gördüğüm tek seçenek PAM'ın süresi dolmuş parolayı SSH'ye bildirmesini önlemektir. Bunu yaparsanız , kullanıcı SSH üzerinden bir parola ile oturum açmış olsa bile SSH üzerinden süresi dolmuş parola denetimlerini tamamen devre dışı bırakır . Diğer (SSH olmayan) oturum açma yöntemleri yine de parola süresinin dolmasını kontrol edecektir.

Geçerli pam.d/sshddosyanızın bir account include common-accountgirişi var. Ben common-accountreferans içeren bir dosya var sanırım pam_unix.so. Bu, süresi dolmuş bir şifreyi kontrol eden satırdır.

common-accountDiğer giriş yöntemleri için kullanıldığından, muhtemelen dosyanın kendisine dokunmak istemezsiniz . Bunun yerine, kaldırmak istediğiniz includesenin dan pam.d/sshddosyası. Diğer işlevler varsa common-accountyanında pam_unix.so, muhtemelen doğrudan içine koymak istiyorum pam.d/sshd.

Son olarak, bunun sisteminizin güvenliğinde bir değişiklik olduğunu ve size iyi bir tavsiye vermek için körü körüne güvenmemeniz gerektiğini unutmayın. Bilmiyorsanız PAM'ın nasıl çalıştığını okuyun. Bazı başlangıç yerleri olabilir man 7 PAM, man 5 pam.confve man 8 pam_unix.


Operasyonların sırasının güzel açıklaması, teşekkürler.
M_dk

3

Pam_unix.so'ya (Şubat-2016 civarında) no_pass_expiry ( kaynak kodu değişikliği burada veya kılavuz sayfa burada ) adlı bir seçenek eklendi . Temel olarak, pam_unix'e yetkilendirme için pam_unix dışında bir şey kullanılmışsa, örneğin sshd yetkilendirmeyi gerçekleştirmişse süresi dolmuş bir şifreyi yoksaymasını söyler.

Sonuç olarak, bu seçeneği içeren bir pam_unix.so sürümüne sahipseniz, PAM'ı şu şekilde yapılandırabilmeniz gerekir:

  1. Yine de uyar, ancak ssh aracılığıyla kimlik doğrulaması için bir SSH anahtarı kullanılmışsa süresi dolmuş bir parolada değişiklik yapılmasını gerektirmez
  2. Ssh ile kimlik doğrulaması yapmak için pam_unix.so üzerinden bir oturum açma adı / parola kullanılmışsa, süresi dolmuş bir parolanın parola değişikliğini iste
  3. Başka bir kimlik doğrulama sırasını etkilemez (ör. Oturum açma hizmeti aracılığıyla).

Örneğin, bir RHEL 7 sunucusunu, yalnızca /etc/pam.d/sshd dosyasını güncelleyerek ve hem hesap hem de şifre türlerine pam_unix.so no_pass_expiry ekleyerek yukarıdaki işlemleri yapacak şekilde yapılandırdım.

account    required    pam_nologin.so
account    sufficient  pam_unix.so no_pass_expiry
account    include     password-auth
password   sufficient  pam_unix.so no_pass_expiry
password   include     password-auth

1
Sadece bunu denedim ve işe yarıyor. PAM'inizin bu seçeneği destekleyip desteklemediğini "no_pass_expiry" araması yaparak "man 8 pam_unix" kılavuz sayfasında bulunup bulunmadığını kontrol edebilirsiniz.
Tomofumi

Ubuntu
18.04'te

0
  • Uyumluluk nedeniyle PAM veya sshd_config dosyanızı değiştirmek istemeyebilirsiniz.
  • Sshd_config içinde PasswordAuthentication no kullanıyor olabilirsiniz
  • Rasgele şifreleriniz olabilir.
  • CIS uyumluluğunu bile uygulamış olabilirsiniz.
  • Hala kullanıcılarınız istemi alıyor

Sonra root parola değiştirme tarihini değiştirebilir:

for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.