Unix kullanıcı hesabının kilitlendiği tüm yollar nasıl bulunur?


12

Bazen kendimi az bakım gören bir sistemin kilitli bir hesabı olduğu bir durumda bulurum. Sorun, her birinin kendi kilit açma yöntemiyle bir hesabın kilitlenmesinin çeşitli yolları olmasıdır.

Hesabın yanlış, sadece beklenmedik bir şekilde kilitlenmesi değil, ancak sıfırlamak için doğru kilidi bulmak zor.

Bu soruna en son saldırım bir SUSE sisteminde yapıldı ve parolanın süresinin dolduğu ortaya çıktı (başlangıçta bilinmediği için giriş denemeleri bu tür geri bildirim sağlayan bir sistemden geçmediği için) ve sonra da kilitlendi başarısız giriş denemeleri nedeniyle.

Tüm olası hesap kilitlerinin bir yerinde bir liste var mı ve nasıl devre dışı bırakılır? Giriş dizini erişim sorunları, bozuk PAM kütüphaneleri, vb. Gibi gerçek kırılganlıkların bu sorunun kapsamı dışında kalmasını planlıyorum.

Yanıtlar:


13

passwdÖrneğin bir hesap kilitliyse bazı bilgileri toplamak için kullanabilirsiniz

passwd -S user
user LK 2012-11-06 0 99999 7 -1 (Password locked.) (CentOS)
user L 01/22/2013 0 99999 7 -1 (Ubuntu)

Yardımcı chageprogram, bir hesaptaki çeşitli zamanlayıcılar hakkında bilgi sağlayacaktır, örneğin süresi dolmamış bir şifre için

chage -l user
Last password change                                    : Nov 12, 2012
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

süresi dolmuş bir şifre için

chage -l user
Last password change                                    : password must be changed
Password expires                                        : password must be changed
Password inactive                                       : password must be changed
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 22
Number of days of warning before password expires       : 33

passwdVe chageyardımcı programlar da hesap kilitlerinin birçok sıralar.

getentBilgileri inceleme için doğrudan ilgili veritabanından çekmek için kullanabilirsiniz

getent passwd user
user:x:505:505::/home/passtest:/sbin/nologin  <-- denied login
getent shadow user
user:!!:0:0:22:33:44::   <-- this is locked

7

Genel olarak: hayır.

Iain'nin cevabı, şifre yaşlandırma sistemlerinin nasıl sorgulanacağının iyi bir özetidir, ancak her türlü şeyi kaçırdı. Örneğin:

  • Ssh ile giriş yapmaya çalışan biri sshdyapılandırmadaki yönergeler tarafından yasaklanmış olabilir .
  • Bir sistem yalnızca belirli bir ağ grubunun üyelerinin oturum açmasına izin verecek şekilde yapılandırılabilir.
  • Yerel PAMyapılandırma, oturum açmak için açık grup üyeliği gerektirebilir veya yalnızca belirli bir kullanıcı listesine izin verebilir.
  • Kilitli bir hesaba benzeyen, giriş dizini erişim sorunları olabilir.
  • /etc/nologinBazı uygulamalar için (ör. ssh) Tüm kullanıcıları kilitleyecek biri oluşturmuş olabilir .

Başka bir deyişle, bir hesabın kilitlenmesinin, passwddosyayla hiçbir ilgisi olmayan birçok yolu vardır . En iyi bahsiniz kontrol etmek /var/log/secureveya dağılıma uygun yerel analogları kontrol etmek .


Sorumun "kırık" olmadığını ve kullanıcının daha önce giriş yapabildiğini varsaymayı planlıyordum. Yani, çalışan bazı sistem hesabı düzgün bir şekilde kilitledi. Bunlar iyi noktalar, ancak soruyu biraz daha açık olacak şekilde güncelleyeceğim.
wfaulk

1

Yukarıda belirtilen ek olarak, passwd chageve getentde oradapam_tally2

Başarısız oturum açma girişimi sayısı izin verilen sınırın üzerindeyse (/etc/pam.d/password-auth içinde ayarlanır), pam_tally2 --user=foo --resettekrar oturum açabilmeleri için önce yapmanız gerekir .


0

Aşağıdaki komut dosyası size tüm kullanıcıların ve durumlarının kısa bir açıklamasını verecektir (kilitli olsun veya olmasın)

cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'

Bu, bir hesabın kilitlenebilme yollarından yalnızca birini kontrol eder.
wfaulk
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.