Sorun açıklaması
Bir Linux örneğindeki yanlış PAM yapılandırması veya eksik PAM modül dosyaları oturum açmayı engelleyebilir. Aşağıdaki hata mesajları için /var/log/secure dosyasını kontrol edin:
requirement "uid >= 1000" not met by user "xxxx"user xxxx (0) has 5 failed attempts, failed attempts threshold is 3Refused user xxxx for service sshdPAM unable to dlopen(/usr/lib64/security/pam_lastlog.so): /usr/lib64/security/pam_lastlog.so: cannot open shared object file: No such file or directory
Çözüm
PAM yapılandırma dosyalarını değiştirmek için örneğe yönetici hesabıyla (örneğin root veya sudo ayrıcalıklarına sahip bir kullanıcı) oturum açmanız gerekir.
Sorun tanımlama
-
Yönetici olarak VNC üzerinden ECS örneğine bağlanın.
ECS konsolu - Örnekler sayfasına gidin. Bölgenizi ve kaynak grubunuzu seçin.
Örnek ayrıntıları sayfasında, Connect öğesine tıklayın ve VNC seçeneğini belirleyin. Oturum açmak için kullanıcı adını ve parolayı girin.
-
Ana hata mesajlarını görmek için kimlik doğrulama günlüklerini kontrol edin.
-
Hesap başarısız denemeler nedeniyle kilitlendi: Günlükte
Maximum amount of failed attempts was reachedifadesi yer alıyorsa, hesap birden fazla başarısız oturum açma denemesinden sonra kilitlenmiştir. Hesabın kilidini açın.sudo grep -i "Maximum amount of failed attempts" /var/log/secure -
Kullanıcı oturum açma işlemi kısıtlandı: Günlükte
requirement "uid >= 1000" not met by userifadesi yer alıyorsa, bir kural UID değeri 1000'den küçük olan kullanıcıların oturum açmasını engelliyor demektir. UID kısıtlamasını kaldırın.sudo grep -i "not met by user" /var/log/secure -
Kullanıcı engelleme listesinde : Günlükte
Refused userifadesi yer alıyorsa, bu durum kullanıcı erişiminin bir izin listesine veya engelleme listesine göre kontrol edildiğini gösterir. Kullanıcı ya engelleme listesindedir ya da izin listesinde değildir. İzin listesini veya engelleme listesini değiştirin.sudo grep -i "Refused user" /var/log/secure -
Bir PAM modül dosyası eksik: Günlükte
PAM unable to dlopenveNo such file or directoryifadeleri yer alıyorsa, sistem tarafından başvurulan bir PAM modül dosyası (örneğinpam_lastlog.so) eksiktir. Eksik PAM modülünü geri yükleyin.sudo grep -i "unable to dlopen" /var/log/secure
-
Hesabın kilidini açın
-
Başarısız oturum açma deneme sayısını kontrol edin.
<username>yerine etkilenen kullanıcı adını yazın.sudo pam_tally2 -u <username>Başarısız deneme sayısı 0'dan büyükse hesap kilitlenmiş demektir.
-
Hesabın kilidini açın.
sudo pam_tally2 -u <username> -r -
(İsteğe bağlı) Kilitleme ilkesini kalıcı olarak devre dışı bırakın.
/etc/pam.d/system-authdosyasını düzenleyin vepam_tally2.soiçeren kuralı yorum satırı yapın.sudo vim /etc/pam.d/system-authBu kural, hem normal hem de root hesaplarını üç ardışık yanlış parola denemesinden sonra kilitler ve 50 saniye sonra otomatik olarak kilidi açar.
auth required pam_tally2.so deny=3 unlock_time=50Bu örnekte
pam_tally2modülü kullanılmıştır. Gerçek modül, PAM sürümüne göre farklılık gösterebilir. Linux-PAM Sistem Yöneticileri Kılavuzu'na bakın. Oturum açmanın çalıştığını doğrulamak için örneğe yeniden bağlanın.
UID kısıtlamasını kaldırın
-
Yapılandırma dosyasını bulun.
pam_succeed_ifiçeren dosyaları arayın; örneğin/etc/pam.d/sshd,/etc/pam.d/loginveya/etc/pam.d/system-auth.sudo grep -r "pam_succeed_if" /etc/pam.d/ -
Yapılandırmayı değiştirin.
sudo vim /etc/pam.d/sshdauth required pam_succeed_if.so uid >= 1000içeren satırın başına#ekleyerek bu satırı yorum satırı yapın.# auth required pam_succeed_if.so uid >= 1000 Oturum açmanın çalıştığını doğrulamak için örneğe yeniden bağlanın.
İzin listesini veya engelleme listesini değiştirin
-
Yapılandırma dosyasını bulun.
pam_listfileiçeren dosyaları arayın; örneğin/etc/pam.d/sshd,/etc/pam.d/loginveya/etc/pam.d/system-auth.sudo grep -r "pam_listfile" /etc/pam.d/ -
Yapılandırmayı inceleyin.
sudo vim /etc/pam.d/sshdsenseparametresi bir izin listesini (sense=allow) veya engelleme listesini (sense=deny) belirtir.file=parametresindeki dosya yolunu not edin; örneğin/etc/ssh/whitelistveya/etc/ssh/blacklist.# A whitelist is configured. Only users in the whitelist are allowed to log on. auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail # A blacklist is configured. Users in the blacklist are prohibited from logging on. auth required pam_listfile.so item=user sense=deny file=/etc/ssh/blacklist onerr=fail -
Liste dosyasını değiştirin.
-
İzin listesi için: Yeni bir satıra kullanıcı adını ekleyin. Kaydedip çıkın.
sudo vim /etc/ssh/whitelist -
Engelleme listesi için: Hedef kullanıcı adını içeren satırı silin. Kaydedip çıkın.
sudo vim /etc/ssh/blacklist
-
Oturum açmanın çalıştığını doğrulamak için örneğe yeniden bağlanın.
Eksik bir PAM modülünü geri yükleyin
-
Eksik modüle sahip paketi belirleyin.
Tanılama raporu veya sistem günlüğü, eksik modülün yolunu belirtir; örneğin
/usr/lib64/security/pam_lastlog.so. Dosyaya sahip paketi belirlemek için aşağıdaki komutu çalıştırın.rpm -qfkomutu RPM veritabanını sorgular ve dosya zaten eksik olsa bile çalışır.rpm -qf /usr/lib64/security/pam_lastlog.soAşağıdaki örnek çıktı, modülün
pampaketinin parçası olduğunu gösterir.pam-1.3.1-39.1.al8.x86_64Sahip paketi belirlemek için
dnf provides "*/pam_lastlog.so"komutunu da çalıştırabilirsiniz. -
Eksik modül dosyasını geri yüklemek için paketi yeniden yükleyin.
pamyerine önceki adımda belirlenen paket adını yazın.sudo dnf reinstall pam -yCentOS 7 gibi yum'u paket yöneticisi olarak kullanan sistemlerde, yukarıdaki komutta
dnfyerineyumyazın. -
Modülün geri yüklendiğini doğrulayın.
ls -l /usr/lib64/security/pam_lastlog.soModül dosyası mevcutsa geri yükleme tamamlanmış demektir.
Oturum açmanın çalıştığını doğrulamak için örneğe yeniden bağlanın.
Geri yüklemeden sonra, örnek sağlık tanılama aracı geri yüklemeden önce oluşturulan geçmiş hata günlüklerine dayanarak bu sorunu bildirmeye devam edebilir. Bir süre bekleyin ve tanılama işlemini tekrar çalıştırın.