Verifique as senhas do usuário linux

1

Eu tenho um servidor Linux que tem várias dezenas de usuários. Eu também tenho a senha de texto claro para cada usuário (eu sei - segurança ruim).

Eu gostaria de saber se as senhas estão corretas. Como os usuários são todos usuários ftp e possuem o shell nologin, não posso simplesmente escrever um script para verificar se o login funciona.

Como posso fazer uma verificação local de senhas? Saída de script poderia ser assim:

$ check_userpw < user_pw_list.txt
user1 ok
user2 ok
user3 mismatch!
user4 ok

Obrigado

    
por zero_r 04.01.2011 / 14:59

2 respostas

2

Se seus usuários forem autenticados com senhas locais armazenadas em / etc / shadow, você poderá gerar os hashes e compará-los você mesmo.

Para hashes MD5, o campo é assim:

$ 1 $ 5q9TrKNO $ YeVQrfsitsGlapGwhAjIl.

(O período final está incluído. Este é um hash para a string 'abc'.)

Os $ são separadores. O 1 no primeiro campo identifica o hash como MD5, e o 5q9TrKNO é um sal gerado aleatoriamente quando a senha foi definida para dificultar os ataques de dicionário.

Você pode usar este módulo perl para testar o hash da sua senha salva: use o salt de / etc / shadow e a senha que você tem, então verifique se o resultado corresponde à última seção.

    
por 04.01.2011 / 16:07
2

Você pode escrever um script para automatizar um login de FTP em cada um usando o Net :: FTP ou o GNU Expect do Perl ou o que quiser, mas provavelmente a maneira mais simples seria pegar carona no programa check_ftp no Nagios-Plugins . Ele retornará diferente de zero se o login falhar.

    
por 04.01.2011 / 15:54