Como forçar os usuários a alterar suas senhas no Linux

Publicados: 2022-01-29
Uma mensagem de "senha com falha" do sshd.
Ilya Titchev/Shutterstock

As senhas são a chave para a segurança da conta. Mostraremos como redefinir senhas, definir períodos de expiração de senha e aplicar alterações de senha em sua rede Linux.

A senha existe há quase 60 anos

Temos provado aos computadores que somos quem dizemos ser desde meados da década de 1960, quando a senha foi introduzida pela primeira vez. Sendo a necessidade a mãe da invenção, o Sistema de Compartilhamento de Tempo Compatível desenvolvido no Massachusetts Institute of Technology precisava de uma maneira de identificar diferentes pessoas no sistema. Também precisava impedir que as pessoas vissem os arquivos umas das outras.

Fernando J. Corbato propôs um esquema que atribuía um nome de usuário único a cada pessoa. Para provar que alguém era quem dizia ser, eles precisavam usar uma senha pessoal e privada para acessar sua conta.

O problema com as senhas é que elas funcionam como uma chave. Qualquer pessoa que tenha uma chave pode usá-la. Se alguém encontrar, adivinhar ou descobrir sua senha, essa pessoa poderá acessar sua conta. Até que a autenticação multifator esteja disponível universalmente, a senha é a única coisa que mantém pessoas não autorizadas (atores de ameaças, no discurso de segurança cibernética) fora do seu sistema.

Propaganda

Conexões remotas feitas por um Secure Shell (SSH) podem ser configuradas para usar chaves SSH em vez de senhas, e isso é ótimo. No entanto, esse é apenas um método de conexão e não abrange logins locais.

Claramente, o gerenciamento de senhas é vital, assim como o gerenciamento das pessoas que estão usando essas senhas.

RELACIONADO: Como criar e instalar chaves SSH do shell do Linux

A anatomia de uma senha

O que torna uma senha boa, afinal? Bem, uma boa senha deve ter todos os seguintes atributos:

  • É impossível adivinhar ou descobrir.
  • Você não usou em nenhum outro lugar.
  • Não esteve envolvido em uma violação de dados.

O site Have I Been Pwned (HIBP) contém mais de 10 bilhões de conjuntos de credenciais violadas. Com números tão altos, é provável que outra pessoa tenha usado a mesma senha que você. Isso significa que sua senha pode estar no banco de dados, mesmo que não tenha sido sua conta que foi violada.

Se a sua senha estiver no site do HIBP, isso significa que ela está nas listas de senhas que as ferramentas de ataque de força bruta e dicionário usam quando estão tentando invadir uma conta.

Uma senha verdadeiramente aleatória (como 4HW@HpJDBr%*Wt@#b~aP) é praticamente invulnerável, mas, claro, você nunca se lembraria dela. É altamente recomendável que você use um gerenciador de senhas para contas online. Eles geram senhas complexas e aleatórias para todas as suas contas online, e você não precisa se lembrar delas — o gerenciador de senhas fornece a senha correta para você.

Para contas locais, cada pessoa deve gerar sua própria senha. Eles também precisarão saber o que é uma senha aceitável e o que não é. Eles terão que ser instruídos a não reutilizar senhas em outras contas e assim por diante.

Propaganda

Essas informações geralmente estão na Política de Senhas de uma organização. Ele instrui as pessoas a usar um número mínimo de caracteres, misturar letras maiúsculas e minúsculas, incluir símbolos e pontuação e assim por diante.

No entanto, de acordo com um novo artigo de uma equipe da Carnegie Mellon University, todos esses truques adicionam pouco ou nada à robustez de uma senha. Os pesquisadores descobriram que os dois principais fatores para a robustez das senhas são que elas tenham pelo menos 12 caracteres e sejam suficientemente fortes. Eles mediram a força da senha usando vários programas de crackers de software, técnicas estatísticas e redes neurais.

Um mínimo de 12 caracteres pode parecer assustador no começo. No entanto, não pense em termos de uma senha, mas sim uma senha de três ou quatro palavras não relacionadas separadas por pontuação.

Por exemplo, o Experte Password Checker disse que levaria 42 minutos para quebrar “chicago99”, mas 400 bilhões de anos para quebrar “chimney.purple.bag”. Também é fácil de lembrar e digitar e contém apenas 18 caracteres.

RELACIONADO: Por que você deve usar um gerenciador de senhas e como começar

Revisando as configurações atuais

Antes de alterar qualquer coisa relacionada à senha de uma pessoa, é prudente dar uma olhada nas configurações atuais. Com o comando passwd , você pode revisar suas configurações atuais com sua opção -S (status). Observe que você também terá que usar sudo com passwd se estiver trabalhando com as configurações de senha de outra pessoa.

Digitamos o seguinte:

 sudo passwd -S mary 

Uma única linha de informação é impressa na janela do terminal, conforme mostrado abaixo.

Você vê as seguintes informações (da esquerda para a direita) nessa resposta curta:

  • O nome de login da pessoa.
  • Um dos três indicadores possíveis a seguir aparece aqui:
    • P: Indica que a conta tem uma senha válida e funcional.
    • L: Significa que a conta foi bloqueada pelo proprietário da conta root.
    • NP: A senha não foi definida.
  • A data em que a senha foi alterada pela última vez.
  • Idade mínima da senha: O período mínimo de tempo (em dias) que deve decorrer entre as redefinições de senha realizadas pelo proprietário da conta. O proprietário da conta root, no entanto, sempre pode alterar a senha de qualquer pessoa. Se este valor for 0 (zero), não há restrição na frequência de troca de senha.
  • Idade máxima da senha: o proprietário da conta é solicitado a alterar sua senha quando atingir essa idade. Esse valor é fornecido em dias, portanto, um valor de 99.999 significa que a senha nunca expira.
  • Período de aviso de alteração de senha: se uma idade máxima de senha for imposta, o proprietário da conta receberá lembretes para alterar sua senha. O primeiro deles será enviado o número de dias mostrado aqui antes da data de redefinição.
  • Período de inatividade da senha: Se alguém não acessar o sistema por um período de tempo que se sobreponha ao prazo de redefinição de senha, a senha dessa pessoa não será alterada. Esse valor indica quantos dias o período de carência segue a data de expiração de uma senha. Se a conta permanecer inativa esse número de dias após a expiração de uma senha, a conta será bloqueada. Um valor de -1 desativa o período de carência.

Definindo uma idade máxima de senha

Para definir um período de redefinição de senha, você pode usar a opção -x (máximo de dias) com um número de dias. Você não deixa um espaço entre o -x e os dígitos, então você digitaria da seguinte forma:

 sudo passwd -x45 mary 

Propaganda

Fomos informados de que o valor de expiração foi alterado, conforme mostrado abaixo.

Use a opção -S (status) para verificar se o valor agora é 45:

 sudo passwd -S mary 

Agora, em 45 dias, uma nova senha deve ser definida para esta conta. Os lembretes começarão sete dias antes disso. Se uma nova senha não for definida a tempo, esta conta será bloqueada imediatamente.

Impor uma alteração imediata de senha

Você também pode usar um comando para que outras pessoas em sua rede tenham que alterar suas senhas na próxima vez que fizerem login. Para fazer isso, você usaria a opção -e (expirar), da seguinte forma:

 sudo passwd -e mary 

Em seguida, somos informados de que as informações de expiração da senha foram alteradas.

Vamos verificar com a opção -S e ver o que aconteceu:

 sudo passwd -S mary 

Propaganda

A data da última alteração de senha é definida para o primeiro dia de 1970. Na próxima vez que essa pessoa tentar fazer login, ela terá que alterar sua senha. Eles também devem fornecer sua senha atual antes que possam digitar uma nova.

A tela de redefinição de senha.

Você deve impor alterações de senha?

Forçar as pessoas a alterar suas senhas regularmente costumava ser senso comum. Era uma das etapas de segurança rotineiras para a maioria das instalações e considerada uma boa prática de negócios.

O pensamento agora é o oposto polar. No Reino Unido, o Centro Nacional de Segurança Cibernética desaconselha fortemente a imposição de renovações regulares de senha, e o Instituto Nacional de Padrões e Tecnologia dos EUA concorda. Ambas as organizações recomendam impor uma alteração de senha somente se você souber ou suspeitar que uma existente seja conhecida por outras pessoas.

Forçar as pessoas a alterar suas senhas torna-se monótono e incentiva senhas fracas. As pessoas geralmente começam a reutilizar uma senha básica com uma data ou outro número marcado nela. Ou, eles vão anotá-los porque eles têm que mudá-los com tanta frequência, eles não conseguem se lembrar deles.

As duas organizações que mencionamos acima recomendam as seguintes diretrizes para segurança de senha:

  • Use um gerenciador de senhas: para contas online e locais.
  • Ative a autenticação de dois fatores: sempre que houver uma opção, use-a.
  • Use uma senha forte: uma excelente alternativa para as contas que não funcionam com um gerenciador de senhas. Três ou mais palavras separadas por pontuação ou símbolos é um bom modelo a seguir.
  • Nunca reutilize uma senha: Evite usar a mesma senha que você usa para outra conta e definitivamente não use uma listada em Fui Pwned.
Propaganda

As dicas acima permitirão que você estabeleça um meio seguro para acessar suas contas. Depois de ter essas diretrizes no lugar, fique com elas. Por que mudar sua senha se ela é forte e segura? Se cair em mãos erradas – ou você suspeitar que tenha caído – você pode mudá-lo então.

Às vezes, essa decisão está fora de suas mãos, no entanto. Se os poderes que impõem alterações de senha, você não tem muita escolha. Você pode defender seu caso e tornar sua posição conhecida, mas, a menos que você seja o chefe, terá que seguir a política da empresa.

RELACIONADO: Você deve alterar suas senhas regularmente?

O comando chage

Você pode usar o comando chage para alterar as configurações relacionadas à duração da senha. Este comando recebe o nome de “alterar envelhecimento”. É como o comando passwd com os elementos de criação de senha removidos.

A opção -l (list) apresenta as mesmas informações que o comando passwd -S , mas de forma mais amigável.

Digitamos o seguinte:

 sudo chage -l eric 

Outro toque interessante é que você pode definir uma data de expiração da conta usando a opção -E (expiração). Passaremos uma data (no formato ano-mês-data) para definir uma data de expiração de 30 de novembro de 2020. Nessa data, a conta será bloqueada.

Digitamos o seguinte:

 sudo chage eric -E 2020-11-30 

Em seguida, digitamos o seguinte para garantir que essa alteração foi feita:

 sudo chage -l eric 

Vemos que a data de expiração da conta mudou de "nunca" para 30 de novembro de 2020.

Propaganda

Para definir um período de expiração de senha, você pode usar a opção -M (máximo de dias), juntamente com o número máximo de dias que uma senha pode ser usada antes de ser alterada.

Digitamos o seguinte:

 sudo chage -M 45 mary 

Digitamos o seguinte, usando a opção -l (list), para ver o efeito do nosso comando:

 sudo chage -l mary 

A data de expiração da senha agora está definida para 45 dias a partir da data em que a definimos, que, como mostramos, será 8 de dezembro de 2020.

Fazendo alterações de senha para todos em uma rede

Quando as contas são criadas, um conjunto de valores padrão é usado para senhas. Você pode definir quais são os padrões para os dias mínimo, máximo e de aviso. Estes são então mantidos em um arquivo chamado “/etc/login.defs.”

Você pode digitar o seguinte para abrir este arquivo no gedit :

 sudo gedit /etc/login.defs 

Role até os controles de duração da senha.

Os controles de duração da senha no editor gedit.

Você pode editá-los para atender às suas necessidades, salvar suas alterações e fechar o editor. Na próxima vez que você criar uma conta de usuário, esses valores padrão serão aplicados.

Propaganda

Se você quiser alterar todas as datas de expiração de senha para contas de usuário existentes, poderá fazê-lo facilmente com um script. Basta digitar o seguinte para abrir o editor gedit e criar um arquivo chamado “password-date.sh”:

 sudo gedit password-date.sh 

Em seguida, copie o seguinte texto em seu editor, salve o arquivo e feche o gedit :

 #!/bin/bash

reset_days=28

para nome de usuário em $(ls /home)
Faz
  sudo chage $username -M $reset_days
  echo $ expiração da senha do nome de usuário alterada para $ reset_days
feito

Isso alterará o número máximo de dias para cada conta de usuário para 28 e, portanto, a frequência de redefinição de senha. Você pode ajustar o valor da variável reset_days para se adequar.

Primeiro, digitamos o seguinte para tornar nosso script executável:

 chmod +x senha-data.sh 

Agora, podemos digitar o seguinte para executar nosso script:

 sudo ./password-date.sh 

Cada conta é então processada, conforme mostrado abaixo.

Digitamos o seguinte para verificar a conta para "mary":

 sudo change -l mary 

Propaganda

O valor máximo de dias foi definido como 28, e nos disseram que cairá em 21 de novembro de 2020. Você também pode modificar facilmente o script e adicionar mais comandos chage ou passwd .


O gerenciamento de senhas é algo que deve ser levado a sério. Agora, você tem as ferramentas necessárias para assumir o controle.