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

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, a Sistema de compartilhamento de tempo compatível desenvolvido na Instituto de Tecnologia de Massachusetts 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 atribuiu um nome de usuário único para 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é autenticação multifator está disponível universalmente, a senha é a única coisa que mantém as pessoas não autorizadas (atores de ameaças, em linguagem de segurança cibernética) fora do seu sistema.

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.

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 se envolveu em um violação de dados.

O Fui sacaneado (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 sua senha estiver no site do HIBP, isso significa que está nas listas de senhas dos agentes de ameaças força bruta e ataque de dicionário ferramentas usam quando estão tentando quebrar uma conta.

Uma senha verdadeiramente aleatória (como [email protected]%*[email protected]#b~aP) é praticamente invulnerável, mas, claro, você nunca se lembraria disso. É 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.

  Como configurar uma máquina Steam Linux sem o Steam OS

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 papel novinhor de uma equipe em Universidade Carnegie Mellon, 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 Verificador de senha especializado 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.

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 revise 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.

  Como usar o RustDesk no Linux

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

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

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.

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 aconselha fortemente contra a imposição de renovações regulares de senha, e as Instituto Nacional de Padrões e Tecnologia nos EUA concorda. Ambas as organizações recomendam aplicar uma alteração de senha somente se você souber ou suspeitar que uma existente seja conhecido por outros.

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 sacaneado.

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.

  Como usar o comando fd no Linux

O comando chage

Você pode usar o comando de mudança para alterar as configurações relativas à 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.

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.

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.

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

for username in $(ls /home)
do
  sudo chage $username -M $reset_days
  echo $username password expiry changed to $reset_days
done

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 password-date.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

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.