Altere as senhas para todos os usuários no servidor Linux

6

Eu tenho 10 servidores Linux que preciso bloquear, redefinindo as senhas para todos os usuários de uma só vez. A história por trás disso é longa, mas a ideia geral é que eu preciso que isso aconteça muito rapidamente em um momento específico. Eu vou usar uma senha única e difícil para todas as contas de usuário (apenas inicialmente), então isso não precisa ler de um arquivo de senhas ou algo assim.

Então, o que eu preciso é a melhor maneira de criar scripts para que eu possa redefinir todas as senhas de uma só vez. Eu posso extrair uma lista das contas de usuário com o comando cat /etc/passwd | cut -f1 -d: , mas isso acaba incluindo todas as contas, incluindo as contas do sistema que eu suponho que não deva mexer.

Então qual é a minha melhor opção aqui?

OBSERVAÇÃO! Ao redefinir senhas, você também precisa limpar qualquer coisa extra do arquivo ~/.ssh/authorized_keys . Não lembro disso até depois - felizmente eu praticamente fechei os servidores e não havia nada em authorized_keys além de coisas de servidor para servidor.

    
por The How-To Geek 10.12.2009 / 23:59

3 respostas

5

Você pode selecionar os UIDs > = 500 para ter certeza de obter somente usuários reais e não contas do sistema e, em seguida, usar a opção --stdin de passwd para alterar o passowrd.

Algo como isso deve funcionar:

 while IFS=: read u x nn rest; do  if [ $nn -ge 500 ]; then echo "YOURSTRONGPASSWORD" |passwd --stdin $u; fi  done < /etc/passwd
    
por 11.12.2009 / 00:38
4

Você pode usar algo como o comando "newusers" para atualizar as senhas de usuário no modo em lote. Crie um arquivo contendo combinações de usuário: senha e carregue-o via newusers ... A senha é digitada sem criptografia, mas será criptografada durante o processo.

newusers userpass.txt

userpass.txt ficaria parecido com o arquivo / etc / passwd. Mesmo formato.

Eu copia o / etc / passwd para um novo arquivo, apago as linhas das contas do sistema e substituo o segundo campo, "x" pela senha genérica que você deseja usar, e reimporte usando o comando newusers.

    
por 11.12.2009 / 00:36
2

Edite o banco de dados de sombra com:

vipw -s

que também bloqueará o arquivo contra atualizações, e então usará seu editor de texto para substituir o segundo campo de cada linha que tenha um campo pw.

Por exemplo, use:

$ openssl rand -base64 12
gw9H5sqr8YioMdwd
$ openssl passwd -1
Password: 
Verifying - Password: 
$1$Nx/XBIYy$JGPhkX8DC9uJqggEFuKxP0

e depois como root, use vipw -s; supondo que seu texto $ EDITOR / $ VISUAL seja vi (m), então vipw vai despejar você nisso e você pode fazer:

:g/^[^:]*:[^*!:][^:]*:/s,:[^:]*,:$1$Nx/XBIYy$JGPhkX8DC9uJqggEFuKxP0:,

que é uma correspondência de padrão básica e que as linhas correspondentes a esse padrão fazem uma substituição (apenas uma vez por linha). A correspondência de padrões exclui linhas com um campo de senha '!' ou '*', portanto, apenas define senhas para usuários que já tenham senhas configuradas, não importando qual seja o uid; isso protegerá você contra casos em que um sistema de empacotamento criou uma conta de "sistema" com um alto fluxo ou qualquer outro absurdo produzido por algum empacotador.

Observe que isso também redefinirá a senha de root. Se você quiser excluir isso e root estiver na primeira linha, substitua a inicial: g por: 2, $ g

    
por 11.12.2009 / 01:15