Alteração de Senhas no Linux

LinuxBeginner
Pratique Agora

Introdução

O gerenciamento de senhas é um aspecto crítico para manter a segurança do sistema em ambientes Linux. Administradores de sistema precisam entender como criar e impor políticas de senha seguras para proteger contas de usuário e dados sensíveis contra acesso não autorizado.

Neste laboratório, você aprenderá como usar o comando passwd para alterar senhas de usuário e implementar políticas básicas de senha. Essas habilidades fundamentais são essenciais para qualquer pessoa que trabalhe com sistemas Linux, particularmente em funções que envolvem gerenciamento de contas de usuário e segurança do sistema.

Entendendo o Comando passwd

Em sistemas Linux, o comando passwd é usado para alterar senhas de usuário. Este comando permite que os usuários alterem suas próprias senhas, enquanto os administradores de sistema podem alterar senhas para qualquer conta no sistema.

Criando um Novo Usuário

Vamos começar criando um novo usuário que podemos usar para praticar o gerenciamento de senhas. Abra seu terminal e certifique-se de estar no diretório de trabalho padrão:

cd ~/project

Agora, use o comando useradd para criar um novo usuário chamado cyberuser:

sudo useradd cyberuser

Este comando cria uma nova conta de usuário, mas não define uma senha para ela. Quando você cria um usuário sem especificar uma senha, a conta geralmente é bloqueada por padrão.

Você pode verificar se o usuário foi criado usando o comando id:

id cyberuser

Você deve ver uma saída semelhante a esta:

uid=1001(cyberuser) gid=1001(cyberuser) groups=1001(cyberuser)

Definindo uma Senha para o Novo Usuário

Agora que criamos um novo usuário, vamos definir uma senha para esta conta usando o comando passwd:

sudo passwd cyberuser

Após executar este comando, você será solicitado a inserir uma nova senha duas vezes para confirmação:

New password:
Retype new password:
passwd: password updated successfully

Insira uma senha de sua escolha quando solicitado. Por motivos de segurança, a senha que você digitar não será exibida na tela.

O comando passwd atualiza a senha para a conta de usuário especificada. Quando executado com privilégios sudo, você pode alterar a senha de qualquer usuário no sistema.

Visualizando Informações da Senha

Para visualizar informações sobre a senha de um usuário, incluindo quando ela foi alterada pela última vez, você pode usar o comando chage -l seguido pelo nome de usuário:

sudo chage -l cyberuser

Este comando exibe informações sobre as políticas de envelhecimento e expiração da senha do usuário. A saída será semelhante a esta:

Last password change                                    : Jul 15, 2023
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

Esta informação é útil para entender as políticas de senha atuais aplicadas a uma conta de usuário.

Entendendo os Arquivos de Senha no Linux

No Linux, as informações de senha são armazenadas em vários arquivos importantes do sistema. Entender esses arquivos ajuda os administradores a gerenciar contas de usuário de forma eficaz.

Explorando Arquivos Relacionados a Senhas

Navegue até o seu diretório de projeto:

cd ~/project

Vamos examinar os arquivos-chave que armazenam informações de senha e conta de usuário:

  1. Primeiro, observe o arquivo /etc/passwd, que contém informações básicas da conta de usuário:
grep cyberuser /etc/passwd

Você deve ver uma saída semelhante a:

cyberuser:x:1001:1001::/home/cyberuser:/bin/sh

Esta linha contém vários campos separados por dois pontos:

  • Nome de usuário (Username): cyberuser
  • Espaço reservado para senha (Password placeholder): x (a senha real é armazenada em /etc/shadow)
  • ID do usuário (UID): 1001
  • ID do grupo (GID): 1001
  • Campo de informações do usuário: (vazio neste caso)
  • Diretório pessoal (Home directory): /home/cyberuser
  • Shell padrão (Default shell): /bin/sh
  1. Agora, vamos examinar o arquivo de senhas shadow, que contém informações de senha criptografadas:
sudo grep cyberuser /etc/shadow

A saída mostrará a senha criptografada e informações relacionadas:

cyberuser:$6$xxxxxxxxxxxxxxxxxxx:19189:0:99999:7:::

Os campos nesta linha incluem:

  • Nome de usuário (Username)
  • Senha criptografada
  • Dias desde 1º de janeiro de 1970 que a senha foi alterada pela última vez
  • Dias antes que a senha possa ser alterada
  • Dias após os quais a senha deve ser alterada
  • Dias antes da expiração da senha para avisar o usuário
  • Dias após a expiração da senha até que a conta seja desativada
  • Dias desde 1º de janeiro de 1970 que a conta foi desativada
  • Um campo reservado

Esta informação é crucial para entender como a segurança de senha é implementada em sistemas Linux.

Aplicando Políticas de Senha

O Linux fornece várias ferramentas para impor políticas de senha, o que ajuda a manter a segurança do sistema, garantindo que os usuários selecionem senhas fortes. Nesta etapa, você aprenderá como implementar políticas básicas de senha.

Definindo a Expiração da Senha

O comando chage permite que os administradores definam políticas de expiração de senha. Navegue até o seu diretório de projeto:

cd ~/project

Vamos definir a idade máxima da senha para nossa conta cyberuser para 90 dias:

sudo chage -M 90 cyberuser

Este comando define o número máximo de dias que uma senha permanece válida antes que o usuário seja obrigado a alterá-la.

Você também pode definir uma idade mínima para a senha, o que impede que os usuários alterem suas senhas com muita frequência:

sudo chage -m 7 cyberuser

Este comando exige que o usuário espere pelo menos 7 dias antes de alterar sua senha novamente.

Verifique as alterações que você fez:

sudo chage -l cyberuser

Você deve ver as informações atualizadas da política de senha:

Last password change                                    : Jul 15, 2023
Password expires                                        : Oct 13, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7

Criando um Script de Política de Senha

Agora, vamos criar um script que implementará políticas de senha mais avançadas. Crie um novo arquivo chamado cyberpolicy.sh:

nano ~/project/cyberpolicy.sh

Adicione o seguinte conteúdo ao arquivo:

#!/bin/bash

## Enforce password complexity
echo "password requisite pam_pwquality.so retry=3 minlen=8 difok=3" | sudo tee -a /etc/pam.d/common-password

## Set password expiration policy for all new users
echo "PASS_MAX_DAYS   90" | sudo tee -a /etc/login.defs
echo "PASS_MIN_DAYS   7" | sudo tee -a /etc/login.defs
echo "PASS_WARN_AGE   7" | sudo tee -a /etc/login.defs

echo "Password policy has been updated successfully."

Salve o arquivo pressionando Ctrl+O, depois Enter e saia do nano com Ctrl+X.

Torne o script executável:

chmod +x ~/project/cyberpolicy.sh

Este script define as seguintes políticas de senha:

  • Complexidade da senha: Mínimo de 8 caracteres, pelo menos 3 caracteres diferentes da senha anterior, com 3 tentativas permitidas
  • Expiração da senha: Idade máxima da senha de 90 dias
  • Restrição de alteração de senha: Idade mínima da senha de 7 dias
  • Aviso de senha: 7 dias antes da expiração da senha

Em um ambiente de produção, você executaria este script para aplicar essas políticas. No entanto, para este laboratório, apenas examinaremos o conteúdo para entender como as políticas de senha podem ser implementadas.

Resumo

Neste laboratório, você aprendeu habilidades essenciais para o gerenciamento de senhas em sistemas Linux. Você praticou:

  1. Criar uma nova conta de usuário usando o comando useradd
  2. Definir e alterar senhas com o comando passwd
  3. Visualizar informações de senha em arquivos do sistema como /etc/passwd e /etc/shadow
  4. Definir políticas de expiração de senha usando o comando chage
  5. Criar um script para impor a complexidade da senha e as políticas de expiração

Essas habilidades são fundamentais para administradores de sistema que precisam manter sistemas seguros, implementando práticas adequadas de gerenciamento de senhas. Ao entender como impor políticas de senha fortes, você pode aprimorar significativamente a segurança dos sistemas Linux e protegê-los contra acesso não autorizado.

À medida que você continua sua jornada de aprendizado, considere explorar tópicos mais avançados, como configuração do PAM (Pluggable Authentication Modules), implementação de autenticação multifator e automatização do gerenciamento de contas de usuário em ambientes corporativos.