Deskripsi masalah
Konfigurasi PAM yang salah atau file modul PAM yang hilang pada instans Linux dapat mencegah proses login. Periksa /var/log/secure untuk menemukan pesan error berikut:
-
requirement "uid >= 1000" not met by user "xxxx" -
user xxxx (0) has 5 failed attempts, failed attempts threshold is 3 -
Refused user xxxx for service sshd -
PAM 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
Solusi
Anda harus login ke instans dengan akun administratif (seperti root atau pengguna dengan hak istimewa sudo) untuk mengubah file konfigurasi PAM.
Identifikasi masalah
-
Login ke instans ECS melalui VNC sebagai administrator.
-
Buka halaman ECS console - Instances. Pilih wilayah dan kelompok sumber daya Anda.
-
Pada halaman detail instans, klik Connect dan pilih VNC. Masukkan username dan password untuk login.
-
-
Periksa log autentikasi untuk pesan error utama.
-
Akun terkunci karena upaya gagal: Jika log berisi
Maximum amount of failed attempts was reached, akun tersebut terkunci setelah beberapa kali upaya login gagal. Unlock akun tersebut.sudo grep -i "Maximum amount of failed attempts" /var/log/secure -
Login pengguna dibatasi: Jika log berisi
requirement "uid >= 1000" not met by user, suatu aturan mencegah pengguna dengan UID kurang dari 1000 untuk login. Hapus pembatasan UID tersebut.sudo grep -i "not met by user" /var/log/secure -
Pengguna ada di denylist: Jika log berisi
Refused user, ini menunjukkan bahwa daftar izin (allowlist) atau daftar larangan (denylist) mengontrol akses pengguna. Pengguna tersebut berada di denylist atau tidak ada di allowlist. Anda harus mengubah allowlist atau denylist tersebut.sudo grep -i "Refused user" /var/log/secure -
File modul PAM hilang: Jika log berisi
PAM unable to dlopendanNo such file or directory, file modul PAM yang dirujuk sistem (sepertipam_lastlog.so) hilang. Anda harus memulihkan modul PAM yang hilang tersebut.sudo grep -i "unable to dlopen" /var/log/secure
-
Buka kunci akun
-
Periksa jumlah upaya login gagal. Ganti
<username>dengan username yang terdampak.sudo pam_tally2 -u <username>Jika jumlah upaya gagal lebih besar dari 0, akun tersebut terkunci.
-
Unlock akun tersebut.
sudo pam_tally2 -u <username> -r -
(Opsional) Nonaktifkan kebijakan penguncian secara permanen.
Edit
/etc/pam.d/system-authdan beri komentar pada aturan yang berisipam_tally2.so.sudo vim /etc/pam.d/system-authAturan ini mengunci akun biasa maupun root setelah tiga kali percobaan password salah berturut-turut, dengan unlock otomatis setelah 50 detik.
auth required pam_tally2.so deny=3 unlock_time=50Contoh ini menggunakan modul
pam_tally2. Modul aktual dapat berbeda tergantung versi PAM. Lihat Linux-PAM System Administrators' Guide. -
Login kembali ke instans untuk memverifikasi bahwa login berhasil.
Hapus pembatasan UID
-
Temukan file konfigurasi.
Cari file yang berisi
pam_succeed_if, seperti/etc/pam.d/sshd,/etc/pam.d/login, atau/etc/pam.d/system-auth.sudo grep -r "pam_succeed_if" /etc/pam.d/ -
Ubah konfigurasi.
sudo vim /etc/pam.d/sshdBeri komentar pada baris yang berisi
auth required pam_succeed_if.so uid >= 1000dengan menambahkan#di awal baris.# auth required pam_succeed_if.so uid >= 1000 -
Login kembali ke instans untuk memverifikasi bahwa login berhasil.
Ubah allowlist atau denylist
-
Temukan file konfigurasi.
Cari file yang berisi
pam_listfile, seperti/etc/pam.d/sshd,/etc/pam.d/login, atau/etc/pam.d/system-auth.sudo grep -r "pam_listfile" /etc/pam.d/ -
Periksa konfigurasi.
sudo vim /etc/pam.d/sshdParameter
sensemenunjukkan allowlist (sense=allow) atau denylist (sense=deny). Catat path file pada parameterfile=, seperti/etc/ssh/whitelistatau/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 -
Ubah file daftar tersebut.
-
Untuk allowlist: Tambahkan username pada baris baru. Simpan dan keluar.
sudo vim /etc/ssh/whitelist -
Untuk denylist: Hapus baris yang berisi username target. Simpan dan keluar.
sudo vim /etc/ssh/blacklist
-
-
Login kembali ke instans untuk memverifikasi bahwa login berhasil.
Pulihkan modul PAM yang hilang
-
Identifikasi paket yang memiliki modul yang hilang.
Laporan diagnostik atau log sistem menentukan path modul yang hilang, misalnya
/usr/lib64/security/pam_lastlog.so. Jalankan perintah berikut untuk mengidentifikasi paket yang memiliki file tersebut. Perintahrpm -qfmelakukan kueri ke database RPM dan tetap berfungsi meskipun file tersebut sudah hilang.rpm -qf /usr/lib64/security/pam_lastlog.soOutput contoh berikut menunjukkan bahwa modul tersebut termasuk dalam paket
pam.pam-1.3.1-39.1.al8.x86_64Anda juga dapat menjalankan
dnf provides "*/pam_lastlog.so"untuk mengidentifikasi paket pemiliknya. -
Instal ulang paket untuk memulihkan file modul yang hilang.
Ganti
pamdengan nama paket yang diidentifikasi pada langkah sebelumnya.sudo dnf reinstall pam -yPada sistem yang menggunakan yum sebagai manajer paket, seperti CentOS 7, ganti
dnfdenganyumpada perintah di atas. -
Verifikasi bahwa modul telah dipulihkan.
ls -l /usr/lib64/security/pam_lastlog.soJika file modul tersebut ada, proses pemulihan telah selesai.
-
Login kembali ke instans untuk memverifikasi bahwa login berhasil.
Setelah pemulihan, diagnostik kesehatan instans mungkin masih melaporkan masalah ini berdasarkan log error historis yang dihasilkan sebelum pemulihan. Tunggu beberapa saat lalu jalankan diagnostik lagi.