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

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 Compatible Time-Sharing System 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. Corbató propôs um esquema que atribuía um nome de usuário único para cada pessoa. Para provar que alguém era quem dizia ser, eles precisavam usar uma senha particular e pessoal 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 universalmente disponível, a senha é a única coisa que mantém as pessoas não autorizadas ( atores de ameaças , na linguagem da cibersegurança) fora do seu sistema.

As 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 cobre logins locais.

Obviamente, o gerenciamento de senhas é vital, assim como o gerenciamento das pessoas que as usam.

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 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 seja sua conta que foi violada.

Se a sua senha estiver no site do HIBP, isso significa que está na lista de senhas que as ferramentas de força bruta e de ataque de dicionário dos agentes de ameaça de senha 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 precisam 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.

Recomendado:  Você pode comprar um novo laptop sem impostos (nestes 9 estados)

Essas informações geralmente estão na Política de Senha 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 artigo novo em folha 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 da senha são que elas têm pelo menos 12 caracteres e são suficientemente fortes. Eles mediram a força da senha usando vários programas de software cracker, técnicas estatísticas e redes neurais.

Um mínimo de 12 caracteres pode parecer assustador à primeira vista. No entanto, não pense em termos de senha, mas sim em uma frase secreta 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.

Revisão das configurações atuais

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

Nós digitamos o seguinte:

sudo passwd -S mary

sudo passwd -S mary em uma janela de terminal.

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

Saída de sudo passwd -S mary em uma janela de terminal.

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 de trabalho.
    • L: significa que a conta foi bloqueada pelo proprietário da conta root.
    • NP: Uma senha não foi definida.
  • A data em que a senha foi alterada pela última vez.
  • Duração mínima da senha: O período mínimo de tempo (em dias) que deve decorrer entre as reconfiguraçõ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 alterações de senha.
  • Idade máxima da senha: O proprietário da conta é solicitado a alterar sua senha quando atingir essa idade. Este 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 duração máxima da senha for aplicada, o proprietário da conta receberá lembretes para alterar sua senha. O primeiro deles receberá 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 ultrapasse o prazo de redefinição de senha, a senha dessa pessoa não será alterada. Este valor indica quantos dias o período de cortesia está após a data de expiração da senha. Se a conta permanecer inativa este número de dias após a expiração da senha, a conta será bloqueada. Um valor de -1 desativa o período de carência.
Recomendado:  Dados ilimitados da Verizon agora custam US$ 30/mês, por meio do Visible

Definindo uma idade máxima da 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 os -xe os dígitos, então você o digitaria da seguinte maneira:

sudo passwd -x45 mary

sudo passwd -x45 mary em uma janela de terminal.

Fomos informados de que o valor de validade foi alterado, conforme mostrado abaixo.

Notificação da mudança de expiração da senha em uma janela de terminal.

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

sudo passwd -S mary

sudo passwd -S mary em uma janela de terminal.

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 mudança 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 -eopção (expirar), da seguinte maneira:

sudo passwd -e mary

sudo passwd -e mary em uma janela de terminal.

Somos informados de que a informação de expiração da senha mudou.

Saída de sudo passwd -e mary em uma janela de terminal.

Vamos verificar a -Sopção e ver o que aconteceu:

sudo passwd -S mary

sudo passwd -S mary em uma janela de terminal.

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

A tela de redefinição de senha.

Você deve impor alterações de senha?

Forçar as pessoas a alterarem suas senhas regularmente costumava ser um bom senso. Foi uma das etapas de segurança de rotina para a maioria das instalações e considerada uma boa prática de negócios.

O pensamento agora é o pólo oposto. No Reino Unido, o National Cyber ​​Security Center desaconselha enfaticamente a aplicação de renovações regulares de senha , e o Instituto Nacional de Padrões e Tecnologia dos Estados Unidos concorda. Ambas as organizações recomendam impor uma alteração de senha apenas 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 as 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 escrevê-los porque têm que mudá-los com frequência, eles não conseguem se lembrar deles.

As duas organizações mencionadas 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 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 Já fui Pwned .

As dicas acima permitirão que você estabeleça um meio seguro de acessar suas contas. Depois de estabelecer essas diretrizes, siga-as. Por que mudar sua senha se ela é forte e segura? Se cair nas mãos erradas – ou se você suspeitar que caiu – você pode alterá-lo.

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

Recomendado:  Como mostrar os painéis de desempenho flutuantes ocultos do Mac

O comando chage

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

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

Nós digitamos o seguinte:

sudo chage -l eric

sudo chage -l eric em uma janela de terminal.

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

Nós digitamos o seguinte:

sudo chage eric -E 2020-11-30

sudo chage eric -E 2020-11-30 em uma janela de terminal.

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

sudo chage -l eric

sudo change -l eric em uma janela de terminal.

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

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 usar antes de ser alterada.

Nós digitamos o seguinte:

sudo chage -M 45 mary

sudo change -M 45 mary em uma janela de terminal.

Nós digitamos o seguinte, usando a -lopção (lista), para ver o efeito do nosso comando:

sudo chage -l mary

sudo change -l mary em uma janela de terminal.

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

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

Quando 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. Eles são mantidos em um arquivo chamado “/etc/login.defs.”

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

sudo gedit /etc/login.defs

 em uma janela de terminal em uma janela de terminal

Role até os controles de expiração de senha.

Os controles de envelhecimento da senha no editor gedit.

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

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

sudo gedit password-date.sh

sudo gedit password-date.sh em uma janela de terminal.

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

#! / bin / bash

reset_days = 28

para nome de usuário em $ (ls / home)
Faz
  sudo chage $ username -M $ reset_days
  echo $ username password expiry alterado para $ reset_days
feito

Isso mudará 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 reset_daysvariável para se adequar.

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

chmod + x password-date.sh

chmod + x password-date.sh em uma janela de terminal.

Agora, podemos digitar o seguinte para executar nosso script:

sudo ./password-date.sh

sudo ./password-date.sh em uma janela de terminal.

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

Quatro contas de usuário com valores de expiração de senha alterados para 28 em uma janela de terminal.

Nós digitamos o seguinte para verificar a conta para “mary”:

sudo mudança -l maria

sudo chage -l mary em uma janela de terminal.

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


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