[esta é uma continuação da minha postagem no ServerFault:https://serverfault.com/questions/661136/root-accepts-any-password-how-to-change-to-a-real-password]
Em um sistema antigo, a conta root aceita qualquer senha, desde que não esteja vazia. Qualquer senha foi aceita como a senha correta, para que qualquer pessoa pudesse fazer o login.
No passado (há mais de 10 anos) isso não era um problema, pois o sistema estava por trás de um modem dial-up com autenticação própria... mas há alguns anos o sistema pode ser acessado através de um endereço IP público.
Milagrosamente, ninguém se preocupou com sua porta SSH, até a semana passada.
Alguém (endereço IP chinês) efetuou login como root, alterou algumas configurações do sistema e efetuou logout.
Restaurei o sistema a partir de um backup e mudei a porta SSH para que ela não pudesse mais ser acessada pelo modem ADSL para me dar algum tempo para resolver esse problema.
O problema parece estar em /etc/pam.d/system-auth
:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok md5
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
Quando eu mudo
auth sufficient /lib/security/pam_unix.so likeauth nullok
para
auth sufficient /lib/security/pam_unix.so likeauth
então a conta root não aceita mais nenhuma senha aleatória, mas também não aceita minha senha configurada
Eu tentei o seguinte:
- primeiro altere a senha root por meio do
passwd
comando. resultado: eu poderia fazer login com qualquer senha - então remova
nullok
: não consegui fazer login com nenhuma senha em uma nova sessão SSH, nem mesmo com a senha que acabei de definir - então mudei a senha root novamente. resultado: ainda não consegui fazer login com nenhuma senha em uma nova sessão SSH.
- então coloquei
nullok
de volta no system-auth: eu poderia fazer login com qualquer senha novamente
O tempo todo fiz a edição e configuração de senha em uma sessão SSH que mantive aberta, e testei o resultado abrindo uma nova sessão SSH.
Não me atrevi a fechar minha sessão SSH principal com medo de não conseguir entrar novamente. Além disso, não reiniciei o sistema porque é um sistema em execução para semáforos
Fiquei surpreso por não ter que digitar uma senha antiga, mas apenas fornecer a nova senha (2 vezes).
Após alterar a senha obtive a resposta Password changed
mas não consegui fazer login via SSH com a nova senha.
Preciso definir a senha root em outro lugar? Ou a remoção nullok
bloqueia completamente a conta root via SSH?
Quero root
apenas poder fazer login com 1 senha específica e negar acesso para qualquer outra senha.