A segurança das contas tem sido dependente de senhas há seis décadas, uma prática que antecede o sistema Unix por quase dez anos. Este guia detalha como você pode gerenciar suas senhas no Linux, utilizando tanto a linha de comando quanto o ambiente gráfico GNOME.
A Importância de Senhas Fortes
As senhas surgiram da necessidade de proteger dados em sistemas de computadores multiusuário. Com o advento desses sistemas, a importância de segregar e salvaguardar os dados individuais se tornou evidente, e a senha surgiu como a solução para esse desafio.
Embora métodos de autenticação mais avançados, como a autenticação de dois fatores e multifatorial e a autenticação biométrica, tenham ganhado popularidade, a senha tradicional ainda é um método comum e essencial de verificação de identidade. Portanto, é crucial saber como criar e usar senhas eficazes, desconsiderando práticas ultrapassadas.
A seguir, apresentamos algumas diretrizes fundamentais para a criação de senhas seguras:
- Opte por frases-senha, não senhas simples: Uma sequência de três ou quatro palavras não relacionadas, intercaladas por pontuações, símbolos ou números, é significativamente mais difícil de decifrar do que uma combinação aleatória de caracteres ou uma senha com vogais substituídas por números.
- Evite reutilizar senhas: Não use a mesma senha em diferentes sistemas ou contas.
- Mantenha suas senhas confidenciais: Nunca compartilhe suas senhas com outras pessoas.
- Não utilize informações pessoais: Evite criar senhas baseadas em nomes de familiares, times esportivos, bandas favoritas ou qualquer informação que possa ser obtida através de redes sociais.
- Abandone senhas padrão: Não use padrões de teclado como “qwerty” ou sequências numéricas como “1q2w3e”.
As políticas de expiração de senha não são mais consideradas uma boa prática. Se você usar senhas fortes e seguras, só precisará trocá-las caso suspeite de que tenham sido comprometidas. As trocas de senha regulares podem levar a escolhas ruins, pois muitos usuários recorrem a uma senha básica, apenas adicionando um dígito ou data no final.
O Instituto Nacional de Padrões e Tecnologia (NIST) publicou extensivamente sobre senhas e métodos de autenticação de usuários. Para mais detalhes, consulte a Publicação Especial 800-63-3: Diretrizes de Autenticação Digital.
Entendendo o Arquivo passwd
Originalmente, sistemas operacionais do tipo Unix armazenavam senhas e outras informações da conta no arquivo “/etc/passwd”. Atualmente, este arquivo ainda contém informações sobre as contas, mas as senhas criptografadas são armazenadas no arquivo “/etc/shadow”, que tem acesso restrito. O arquivo “/etc/passwd” pode ser consultado por qualquer pessoa.
Para visualizar o conteúdo do arquivo “/etc/passwd”, use o seguinte comando:
less /etc/passwd
O arquivo exibirá o conteúdo, onde cada linha corresponde a uma conta de usuário (ou programa que possui uma conta de “usuário”). Analisaremos a entrada da conta chamada “mary” como exemplo.
Cada linha é estruturada em sete campos, separados por dois pontos:
Nome de usuário: | O nome de login da conta. |
Senha: | Um “x” indica que a senha é armazenada no arquivo /etc/shadow. |
ID de usuário: | O identificador de usuário associado à conta. |
ID do grupo: | O identificador do grupo da conta. |
GECOS: | Acrônimo de General Electric Comprehensive Operating System. Hoje, este campo armazena informações delimitadas por vírgulas sobre uma conta, como nome completo, número do quarto, telefones residenciais e comerciais. |
Home: | O caminho para o diretório inicial da conta. |
Shell: | O shell que é iniciado quando o usuário faz login. |
Campos vazios são representados por dois pontos.
O comando finger
extrai informações do campo GECOS, por exemplo:
finger mary
Entendendo o Arquivo shadow
Para visualizar o arquivo “/etc/shadow”, é necessário utilizar o comando sudo
:
sudo less /etc/shadow
O arquivo será exibido. Cada entrada no arquivo “/etc/passwd” tem uma entrada correspondente no arquivo “/etc/shadow”.
Cada linha representa uma única conta e é composta por nove campos delimitados por dois pontos:
Nome de usuário: | O nome de login da conta. |
Senha criptografada: | A senha criptografada da conta. |
Última alteração: | A data da última alteração da senha. |
Dias mínimos: | O número mínimo de dias entre mudanças de senha. O usuário deve aguardar este número de dias antes de trocar a senha. Se este campo for zero, a senha pode ser alterada a qualquer momento. |
Máximo de dias: | O número máximo de dias entre as mudanças de senha. Geralmente, este campo contém um valor muito grande. Para “maria”, o valor definido é 99.999 dias, ou seja, mais de 27 anos. |
Dias de alerta: | O número de dias antes da expiração da senha em que uma mensagem de lembrete será exibida. |
Redefinir bloqueio: | Após a expiração da senha, o sistema aguarda este número de dias (um período de tolerância) antes de desabilitar a conta. |
Data de expiração da conta: | A data em que o usuário não poderá mais fazer login. Se este campo estiver em branco, a conta nunca expira. |
Campo de reserva: | Um campo reservado para uso futuro. |
Campos vazios são representados por dois pontos.
Convertendo o Campo “Última alteração” em Data
O Tempo Unix teve início em 1 de janeiro de 1970. O valor do campo “Última alteração” é 18.209. Isso corresponde ao número de dias transcorridos desde 1 de janeiro de 1970, em que a senha da conta “mary” foi modificada.
Para exibir o valor do campo “Última alteração” como uma data, utilize o comando a seguir:
date -d "1970-01-01 18209 days"
A data será exibida como meia-noite do dia em que a senha foi alterada. Neste exemplo, a data é 9 de novembro de 2019.
Utilizando o Comando passwd
Você pode utilizar o comando passwd
para alterar sua própria senha ou, se tiver privilégios sudo
, a de outros usuários.
Para alterar sua própria senha, execute o comando passwd
sem argumentos:
passwd
O sistema solicitará que você digite a senha atual e a nova senha duas vezes.
Alterando a Senha de Outro Usuário
Para alterar a senha de outra conta, use sudo
e especifique o nome da conta:
sudo passwd mary
O sistema pedirá a sua senha para confirmar seus privilégios de superusuário. Depois disso, insira a nova senha da conta e a digite novamente para confirmar.
Forçando a Alteração da Senha
Para forçar um usuário a trocar a senha no próximo login, use a opção -e
(expirar):
sudo passwd -e mary
Uma mensagem de confirmação será exibida informando que a data de expiração da senha foi alterada.
No próximo login, o usuário “mary” será obrigado a trocar a senha:
Bloqueando uma Conta
Para bloquear uma conta, use o comando passwd
com a opção -l
(bloquear):
sudo passwd -l mary
O sistema notificará que a data de expiração da senha foi alterada.
O usuário da conta não poderá mais fazer login com sua senha. Para desbloquear a conta, use a opção -u
(desbloquear):
sudo passwd -u mary
Novamente, você será notificado que as informações de expiração da senha foram alteradas:
Mesmo após o desbloqueio, o usuário da conta ainda não poderá fazer login com sua senha, mas poderá acessar o sistema por meio de outros métodos de autenticação, como chaves SSH.
Se o objetivo é realmente impedir o acesso de um usuário, é necessário expirar a conta.
Utilizando o Comando chage
O comando chage
(que significa “mudança de idade”) permite definir uma data de expiração para uma conta.
Vamos analisar as configurações atuais da conta “mary” com a opção -l
(lista):
sudo chage -l mary
A data de expiração da conta está definida como “nunca”.
Para alterar a data de expiração, utilize a opção -E
(expiração). Se o valor for definido como zero, será interpretado como “zero dias após a época Unix”, ou seja, 1º de janeiro de 1970.
Execute o seguinte comando:
sudo chage -E0 mary
Verifique novamente a data de expiração da conta:
sudo chage -l mary
Como a data de expiração já passou, a conta está agora bloqueada, independentemente do método de autenticação que o usuário possa tentar usar.
Para reativar a conta, execute o mesmo comando com -1
como parâmetro numérico:
sudo chage -E -1 mary
Para verificar novamente, execute:
sudo chage -l mary
A data de expiração da conta é redefinida para “nunca”.
Alterando a Senha de uma Conta no GNOME
O Ubuntu e muitas outras distribuições Linux utilizam o GNOME como ambiente de desktop padrão. A senha de uma conta pode ser alterada por meio da caixa de diálogo “Configurações”.
No menu do sistema, clique no ícone de “Configurações”.
Na janela “Configurações”, clique em “Detalhes” no painel esquerdo e selecione “Usuários”.
Clique na conta para a qual você deseja trocar a senha. Neste exemplo, selecionaremos “Mary Quinn”. Clique na conta e em “Desbloquear”.
O sistema solicitará sua senha. Após a autenticação, os detalhes de “Mary” se tornarão editáveis. Clique no campo “Senha”.
Na caixa de diálogo “Alterar Senha”, clique na opção “Definir uma senha agora”.
Insira a nova senha nos campos “Nova senha” e “Verificar nova senha”.
Se as senhas corresponderem, o botão “Alterar” ficará verde; clique nele para salvar a nova senha.
Em outros ambientes de desktop, as ferramentas de gerenciamento de contas serão semelhantes às do GNOME.
Mantenha-se Seguro
Há seis décadas, as senhas são parte fundamental da segurança online e continuarão sendo relevantes por muito tempo.
Portanto, é crucial gerenciá-las com cautela. Compreender o funcionamento das senhas no Linux e seguir as melhores práticas manterá seu sistema seguro.