Configurar Política de Senha Local do Linux para Complexidade e Idade
Nesta etapa, você aprenderá como fortalecer a segurança de um sistema Linux configurando uma política de senha robusta. Uma política de senha forte é um controle de segurança fundamental que impõe dois aspectos críticos: complexidade e idade. As regras de complexidade garantem que as senhas não sejam facilmente adivinhadas, exigindo uma mistura de tipos de caracteres, enquanto as regras de envelhecimento forçam os usuários a alterar suas senhas periodicamente, reduzindo o risco de credenciais comprometidas. Você usará utilitários padrão do Linux para modificar arquivos de configuração em todo o sistema e aplicar essas políticas.
Primeiro, vamos explorar a complexidade da senha. Em sistemas modernos baseados em Debian, como o Ubuntu, a qualidade da senha é gerenciada pelo módulo pam_pwquality. Sua configuração é armazenada no arquivo /etc/security/pwquality.conf.
Vamos começar examinando as configurações padrão. Use o comando cat para visualizar o conteúdo do arquivo de configuração. Usaremos grep para filtrar linhas comentadas e linhas vazias para tornar a saída mais limpa.
grep -vE '^#|^$' /etc/security/pwquality.conf
Você poderá ver algumas configurações padrão ou o arquivo pode estar vazio de configurações ativas. Agora, vamos impor uma política mais forte. Precisamos editar este arquivo com privilégios de administrador, então usaremos sudo com o editor nano.
sudo nano /etc/security/pwquality.conf
Adicione as seguintes linhas ao arquivo para impor nossa nova política. Essas configurações exigem que a senha tenha pelo menos 10 caracteres de comprimento e contenha pelo menos um dígito, uma letra maiúscula e uma letra minúscula.
minlen = 10
dcredit = -1
ucredit = -1
lcredit = -1
Vamos detalhar essas opções:
minlen = 10: Define o comprimento mínimo aceitável para a senha como 10 caracteres.
dcredit = -1: Requer pelo menos um dígito. O número negativo significa "pelo menos um".
ucredit = -1: Requer pelo menos um caractere maiúsculo.
lcredit = -1: Requer pelo menos um caractere minúsculo.
Após adicionar essas linhas, salve o arquivo e saia do nano pressionando Ctrl+X, depois Y e Enter.
Agora, vamos passar para a configuração do envelhecimento da senha (password aging). Essas configurações definem a vida útil máxima e mínima de uma senha. Os valores padrão para novas contas de usuário são armazenados em /etc/login.defs.
Use grep para encontrar as configurações relevantes neste arquivo.
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs
Você verá os valores padrão, que geralmente são definidos como um número muito alto para PASS_MAX_DAYS, desabilitando efetivamente a expiração.
## PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 99999
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_DAYS 0
## PASS_WARN_AGE Number of days warning is given before a password expires.
PASS_WARN_AGE 7
Vamos impor uma política de expiração de 9000 dias. Abra o arquivo com sudo nano.
sudo nano /etc/login.defs
Encontre a linha PASS_MAX_DAYS e altere seu valor de 99999 para 9000. Você também pode definir PASS_MIN_DAYS como 7 para evitar que os usuários alterem suas senhas com muita frequência.
## PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 9000
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_DAYS 7
## PASS_WARN_AGE Number of days warning is given before a password expires.
PASS_WARN_AGE 14
Salve o arquivo e saia do nano. Essas configurações em /etc/login.defs se aplicam aos usuários criados após esta alteração. Para aplicar a política a um usuário existente, como nosso usuário labex, usamos o comando chage.
Primeiro, verifique as informações de envelhecimento atuais para o usuário labex.
sudo chage -l labex
A saída mostrará que a senha nunca expira.
Last password change : Jul 22, 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
Agora, use chage com a flag -M para definir o número máximo de dias como 9000 para o usuário labex.
sudo chage -M 9000 labex
Verifique a alteração verificando novamente as informações de envelhecimento do usuário.
sudo chage -l labex
Você verá agora que a data de Password expires foi atualizada e o número máximo de dias está definido como 9000, aplicando com sucesso a política de envelhecimento.
Last password change : Jul 22, 2023
Password expires : Jan 01, 2048
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 9000
Number of days of warning before password expires : 7
Você configurou com sucesso as políticas de complexidade e envelhecimento de senha em seu sistema Linux.