Descrição do problema
Configurações incorretas do PAM ou arquivos de módulo ausentes em uma instância Linux podem impedir o logon. Verifique o arquivo /var/log/secure para identificar as seguintes mensagens de erro:
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
Solução
Para modificar os arquivos de configuração do PAM, faça logon na instância com uma conta administrativa (como root ou um usuário com privilégios sudo).
Identificação do problema
-
Faça logon na instância ECS via VNC como administrador.
Acesse a página ECS console - Instances. Selecione a região e o grupo de recursos.
Na página de detalhes da instância, clique em Connect e selecione VNC. Insira o nome de usuário e a senha para fazer logon.
-
Verifique os logs de autenticação em busca das principais mensagens de erro.
-
Conta bloqueada por tentativas malsucedidas: Se o log contiver
Maximum amount of failed attempts was reached, a conta foi bloqueada após múltiplas tentativas de logon malsucedidas. Desbloqueie a conta.sudo grep -i "Maximum amount of failed attempts" /var/log/secure -
Logon do usuário restrito: Caso o log apresente
requirement "uid >= 1000" not met by user, uma regra impede o logon de usuários com UID inferior a 1000. Remova a restrição de UID.sudo grep -i "not met by user" /var/log/secure -
Usuário na lista de bloqueios: A presença de
Refused userno log indica que uma lista de permissões ou de bloqueios controla o acesso. O usuário está na lista de bloqueios ou ausente da lista de permissões. Modifique a lista de permissões ou de bloqueios.sudo grep -i "Refused user" /var/log/secure -
Arquivo de módulo PAM ausente: Quando o log exibe
PAM unable to dlopeneNo such file or directory, um arquivo de módulo PAM referenciado pelo sistema (comopam_lastlog.so) está ausente. Restaure o módulo PAM ausente.sudo grep -i "unable to dlopen" /var/log/secure
-
Desbloquear a conta
-
Verifique o número de tentativas de logon malsucedidas. Substitua
<username>pelo nome de usuário afetado.sudo pam_tally2 -u <username>Se a contagem de tentativas malsucedidas for maior que 0, a conta está bloqueada.
-
Desbloqueie a conta.
sudo pam_tally2 -u <username> -r -
(Opcional) Desative permanentemente a política de bloqueio.
Edite o arquivo
/etc/pam.d/system-authe comente a regra que contémpam_tally2.so.sudo vim /etc/pam.d/system-authEssa regra bloqueia contas comuns e root após três tentativas consecutivas de senha incorreta, com desbloqueio automático após 50 segundos.
auth required pam_tally2.so deny=3 unlock_time=50Este exemplo utiliza o módulo
pam_tally2. O módulo real pode variar conforme a versão do PAM. Consulte o Linux-PAM System Administrators' Guide. Faça logon na instância novamente para verificar se o acesso funciona.
Remover a restrição de UID
-
Localize o arquivo de configuração.
Encontre arquivos que contenham
pam_succeed_if, como/etc/pam.d/sshd,/etc/pam.d/loginou/etc/pam.d/system-auth.sudo grep -r "pam_succeed_if" /etc/pam.d/ -
Modifique a configuração.
sudo vim /etc/pam.d/sshdComente a linha que contém
auth required pam_succeed_if.so uid >= 1000adicionando#no início.# auth required pam_succeed_if.so uid >= 1000 Faça logon na instância novamente para verificar se o acesso funciona.
Modificar a lista de permissões ou de bloqueios
-
Localize o arquivo de configuração.
Procure arquivos que incluam
pam_listfile, como/etc/pam.d/sshd,/etc/pam.d/loginou/etc/pam.d/system-auth.sudo grep -r "pam_listfile" /etc/pam.d/ -
Examine a configuração.
sudo vim /etc/pam.d/sshdO parâmetro
senseindica uma lista de permissões (sense=allow) ou uma lista de bloqueios (sense=deny). Observe o caminho do arquivo no parâmetrofile=, como/etc/ssh/whitelistou/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 -
Modifique o arquivo de lista.
-
Para lista de permissões: adicione o nome de usuário em uma nova linha. Salve e saia.
sudo vim /etc/ssh/whitelist -
Para lista de bloqueios: exclua a linha que contém o nome de usuário alvo. Salve e saia.
sudo vim /etc/ssh/blacklist
-
Faça logon na instância novamente para verificar se o acesso funciona.
Restaurar um módulo PAM ausente
-
Identifique o pacote proprietário do módulo ausente.
O relatório de diagnóstico ou o log do sistema especifica o caminho do módulo ausente, por exemplo
/usr/lib64/security/pam_lastlog.so. Execute o comando a seguir para identificar o pacote proprietário do arquivo. O comandorpm -qfconsulta o banco de dados RPM e funciona mesmo se o arquivo já estiver ausente.rpm -qf /usr/lib64/security/pam_lastlog.soA saída de exemplo a seguir indica que o módulo pertence ao pacote
pam.pam-1.3.1-39.1.al8.x86_64Também é possível executar
dnf provides "*/pam_lastlog.so"para identificar o pacote proprietário. -
Reinstale o pacote para restaurar o arquivo de módulo ausente.
Substitua
pampelo nome do pacote identificado na etapa anterior.sudo dnf reinstall pam -yEm sistemas que usam yum como gerenciador de pacotes, como o CentOS 7, substitua
dnfporyumno comando anterior. -
Verifique se o módulo foi restaurado.
ls -l /usr/lib64/security/pam_lastlog.soSe o arquivo do módulo existir, a restauração estará concluída.
Faça logon na instância novamente para verificar se o acesso funciona.
Após a restauração, os diagnósticos de integridade da instância ainda podem relatar este problema com base nos logs de erro históricos gerados anteriormente. Aguarde alguns instantes e execute os diagnósticos novamente.