Como Impor Políticas de Complexidade de Senha no Linux

LinuxBeginner
Pratique Agora

Introdução

Manter políticas de senhas fortes é crucial para proteger sistemas Linux. Este tutorial irá guiá-lo através da compreensão dos fundamentos das políticas de senhas Linux, da configuração dos requisitos de complexidade de senhas e da aplicação dessas políticas para aprimorar a segurança geral do seu ambiente Linux.

Compreendendo os Arquivos de Política de Senhas Linux

Sistemas Linux usam vários arquivos de configuração para gerenciar políticas de senhas. Nesta etapa, exploraremos esses arquivos e entenderemos seu propósito no gerenciamento de senhas.

Explorando Arquivos de Configuração de Política de Senhas

Vamos começar examinando os principais arquivos de configuração que controlam as políticas de senhas no Ubuntu:

  1. Primeiro, abra um terminal clicando no ícone do terminal no ambiente de trabalho.

  2. Vamos analisar o arquivo /etc/login.defs, que contém configurações básicas de política de senhas:

    cat /etc/login.defs | grep "^PASS_"

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

    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS   0
    PASS_WARN_AGE   7

    Essas configurações controlam:

    • PASS_MAX_DAYS: Número máximo de dias que uma senha permanece válida
    • PASS_MIN_DAYS: Número mínimo de dias necessários entre as alterações de senha
    • PASS_WARN_AGE: Número de dias de aviso antes da expiração da senha
  3. Outro arquivo importante é /etc/pam.d/common-password, que gerencia as configurações PAM (Pluggable Authentication Modules) para autenticação de senha:

    cat /etc/pam.d/common-password

    Este arquivo contém várias linhas configurando como as senhas são gerenciadas, incluindo requisitos de complexidade.

  4. O sistema usa a biblioteca pwquality para impor a qualidade da senha. Vamos verificar se ela está instalada:

    dpkg -l | grep libpwquality

    Se não estiver instalada, podemos instalá-la:

    sudo apt update
    sudo apt install -y libpam-pwquality
  5. Agora, vamos examinar o arquivo de configuração de qualidade da senha:

    cat /etc/security/pwquality.conf

    Este arquivo pode ter a maioria das linhas comentadas com #, o que significa que os valores padrão estão sendo usados.

Compreendendo os Parâmetros da Política de Senhas

Aqui estão os principais parâmetros que você pode configurar:

  • minlen: Comprimento mínimo da senha
  • dcredit: Crédito para dígitos na senha
  • ucredit: Crédito para caracteres maiúsculos
  • lcredit: Crédito para caracteres minúsculos
  • ocredit: Crédito para caracteres especiais
  • retry: Número de tentativas para inserir uma nova senha
  • enforce_for_root: Se deve impor essas políticas para o usuário root

Esses parâmetros fornecem uma estrutura abrangente para controlar a complexidade e a segurança da senha em seu sistema Linux.

Configurando Políticas de Senhas Básicas

Nesta etapa, configuraremos políticas de senhas básicas modificando o arquivo /etc/login.defs para definir os requisitos de envelhecimento de senhas.

Definindo Parâmetros de Envelhecimento de Senhas

  1. Primeiro, vamos fazer um backup do arquivo original:

    sudo cp /etc/login.defs /etc/login.defs.backup
  2. Agora, abra o arquivo para edição usando nano:

    sudo nano /etc/login.defs
  3. No editor, procure por estes parâmetros (use Ctrl+W para pesquisar):

    PASS_MAX_DAYS
    PASS_MIN_DAYS
    PASS_WARN_AGE
  4. Altere esses valores para implementar uma política de envelhecimento de senhas mais segura:

    • Altere PASS_MAX_DAYS de 99999 para 90 (as senhas expiram após 90 dias)
    • Altere PASS_MIN_DAYS de 0 para 7 (mínimo de 7 dias entre as alterações de senha)
    • Altere PASS_WARN_AGE de 7 para 14 (avisar os usuários 14 dias antes da expiração da senha)
  5. Salve o arquivo pressionando Ctrl+O, depois Enter e saia com Ctrl+X.

  6. Verifique suas alterações:

    cat /etc/login.defs | grep "^PASS_"

    Você deve ver:

    PASS_MAX_DAYS   90
    PASS_MIN_DAYS   7
    PASS_WARN_AGE   14

Testando a Política em um Novo Usuário

Vamos criar um usuário de teste para ver como essas políticas se aplicam:

  1. Crie um novo usuário:

    sudo useradd -m testuser
  2. Defina uma senha para o novo usuário:

    sudo passwd testuser

    Insira uma senha simples quando solicitado (vamos fortalecê-la nas etapas posteriores).

  3. Verifique as informações de envelhecimento da senha para o novo usuário:

    sudo chage -l testuser

    Você deve ver que as políticas de senha foram aplicadas a este novo usuário, mostrando a data de expiração com base em suas configurações.

Observe que essas alterações se aplicam apenas a novas contas ou quando uma senha é alterada. As contas existentes mantêm suas configurações anteriores até que você as atualize manualmente.

Configurando Requisitos de Complexidade de Senha

Nesta etapa, configuraremos regras de complexidade de senha para impor senhas fortes em nosso sistema.

Configurando Regras de Complexidade de Senha

  1. Primeiro, vamos fazer um backup do arquivo de configuração PAM:

    sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup
  2. Agora, abra o arquivo para edição:

    sudo nano /etc/pam.d/common-password
  3. Procure uma linha contendo pam_pwquality.so. Pode ser algo parecido com isto:

    password        requisite                       pam_pwquality.so retry=3
  4. Modifique esta linha para adicionar requisitos de complexidade. Substitua-a por:

    password        requisite                       pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_root

    Esta configuração significa:

    • minlen=12: O comprimento mínimo da senha é de 12 caracteres
    • dcredit=-1: Pelo menos 1 dígito é necessário
    • ucredit=-1: Pelo menos 1 letra maiúscula é necessária
    • lcredit=-1: Pelo menos 1 letra minúscula é necessária
    • ocredit=-1: Pelo menos 1 caractere especial é necessário
    • enforce_for_root: Aplique essas políticas também ao usuário root
  5. Salve o arquivo pressionando Ctrl+O, depois Enter e saia com Ctrl+X.

Configurando Parâmetros Adicionais em pwquality.conf

  1. Agora, vamos modificar o arquivo de configuração pwquality para controles adicionais:

    sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.backup
    sudo nano /etc/security/pwquality.conf
  2. Remova o comentário (remova o ## no início) e modifique estas linhas, ou adicione-as se não existirem:

    minlen = 12
    dcredit = -1
    ucredit = -1
    lcredit = -1
    ocredit = -1
    difok = 4
    enforce_for_root = 1

    O parâmetro difok = 4 exige que pelo menos 4 caracteres sejam diferentes da senha anterior.

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

Testando a Nova Política de Complexidade de Senha

  1. Vamos testar nossa nova política alterando a senha do nosso usuário de teste:

    sudo passwd testuser
  2. Tente inserir uma senha simples como password123. O sistema deve rejeitá-la por não atender aos requisitos de complexidade.

  3. Agora, tente uma senha complexa que atenda a todos os requisitos, como Secure@Password123.

    Se você configurou tudo corretamente, o sistema deve aceitar esta senha.

Os requisitos de complexidade garantem que os usuários criem senhas fortes, tornando mais difícil para os invasores adivinhá-las ou quebrá-las.

Implementando Controles de Histórico de Senhas

Nesta etapa, configuraremos controles de histórico de senhas para impedir que os usuários reutilizem suas senhas recentes.

Configurando o Histórico de Senhas

  1. Primeiro, vamos fazer um backup do arquivo de configuração PAM, caso você ainda não o tenha feito:

    sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup2
  2. Abra o arquivo para edição:

    sudo nano /etc/pam.d/common-password
  3. Procure uma linha contendo pam_unix.so. Pode ser algo parecido com isto:

    password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512
  4. Modifique esta linha para adicionar o parâmetro remember. Adicione remember=5 no final da linha:

    password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5

    Isso impedirá que os usuários reutilizem qualquer uma de suas 5 senhas mais recentes.

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

Entendendo Como o Histórico de Senhas Funciona

O parâmetro remember=5 instrui o sistema a armazenar os hashes das últimas 5 senhas para cada usuário. Quando um usuário tenta alterar sua senha, o sistema compara a nova senha com esses hashes armazenados para garantir que ela não esteja sendo reutilizada.

O histórico de senhas é armazenado no arquivo /etc/security/opasswd. Vamos verificar se este arquivo existe:

ls -la /etc/security/opasswd

Se ele não existir, será criado automaticamente quando o primeiro usuário alterar sua senha com a nova política em vigor.

Testando o Histórico de Senhas

  1. Vamos tentar alterar a senha do usuário de teste várias vezes para ver o mecanismo de histórico em ação:

    sudo passwd testuser
  2. Defina uma senha complexa como Complex@Password1.

  3. Agora, tente alterá-la novamente imediatamente:

    sudo passwd testuser
  4. Tente definir a mesma senha novamente. O sistema deve rejeitá-la devido à política de histórico.

  5. Tente isso mais algumas vezes com senhas diferentes e, em seguida, tente reutilizar uma senha anterior. Você deve descobrir que não pode reutilizar nenhuma de suas 5 senhas mais recentes.

Este mecanismo de histórico de senhas adiciona outra camada de segurança, impedindo a reutilização de senhas, que é uma fraqueza de segurança comum.

Aplicando Políticas de Senha a Usuários Existentes

Nesta etapa final, aprenderemos como aplicar nossas novas políticas de senha a usuários existentes e gerenciar informações de senha do usuário.

Entendendo o Gerenciamento de Expiração de Senha

Quando você altera as políticas de senha em /etc/login.defs, as novas configurações se aplicam apenas a usuários recém-criados ou quando você atualiza manualmente os usuários existentes. Vamos ver como gerenciar usuários existentes:

  1. Primeiro, verifique o status atual de uma conta de usuário:

    sudo chage -l labex

    Isso exibe as informações de envelhecimento da senha para o usuário atual.

  2. Para forçar um usuário a alterar sua senha no próximo login:

    sudo chage -d 0 testuser

    Isso define a data da última alteração de senha como 0, forçando uma alteração de senha no próximo login.

  3. Para definir manualmente a data de expiração da senha:

    sudo chage -E $(date -d "90 days" +%Y-%m-%d) testuser

    Isso define a data de expiração da conta para 90 dias a partir de hoje.

Definindo a Idade Máxima da Senha para Usuários Existentes

Para aplicar a política de idade máxima da senha a um usuário existente:

sudo chage -M 90 testuser

Isso define a idade máxima da senha para 90 dias para o usuário.

Definindo a Idade Mínima da Senha para Usuários Existentes

Para aplicar a política de idade mínima da senha a um usuário existente:

sudo chage -m 7 testuser

Isso define a idade mínima da senha para 7 dias para o usuário.

Definindo o Aviso de Expiração da Senha para Usuários Existentes

Para aplicar a política de aviso de expiração da senha a um usuário existente:

sudo chage -W 14 testuser

Isso define o período de aviso de expiração da senha para 14 dias para o usuário.

Visualizando Informações da Senha do Usuário

Você pode verificar as informações da senha de um usuário usando vários comandos:

  1. Visualize todas as contas de usuário locais:

    cat /etc/passwd
  2. Verifique o status da senha para um usuário específico:

    sudo passwd -S testuser
  3. Liste os usuários com uma configuração de senha específica:

    awk -F: '($3 >= 1000) {print $1}' /etc/passwd

    Isso lista todos os usuários regulares no sistema (UID >= 1000).

Aplicando Políticas a Todos os Usuários

Para aplicar as novas políticas de senha a todos os usuários regulares no sistema, você pode usar um script simples. Aqui está um exemplo:

for user in $(awk -F: '($3 >= 1000) && ($3 < 60000) {print $1}' /etc/passwd); do
  echo "Updating password policy for user: $user"
  sudo chage -M 90 -m 7 -W 14 $user
done

Este script atualiza todos os usuários regulares com nossas novas políticas de envelhecimento de senha.

Ao aplicar essas políticas a usuários existentes, você garante a segurança consistente da senha em todo o seu sistema.

Resumo

Neste laboratório, você aprendeu como configurar e impor políticas de senha robustas no Linux. Você:

  1. Explorou os principais arquivos de configuração que controlam as políticas de senha
  2. Configurou políticas básicas de envelhecimento de senha para garantir atualizações regulares de senha
  3. Implementou requisitos de complexidade de senha fortes para impor senhas seguras
  4. Configurou controles de histórico de senha para evitar a reutilização de senhas
  5. Aprendeu como aplicar políticas de senha a usuários existentes

Essas configurações de política de senha são essenciais para manter um ambiente Linux seguro. Ao implementar requisitos de senha fortes, rotação regular de senhas e impedir a reutilização de senhas, você melhorou significativamente a postura de segurança do seu sistema contra acesso não autorizado e possíveis violações.

Lembre-se de que políticas de senha eficazes são apenas um aspecto de uma estratégia de segurança abrangente. Elas devem ser combinadas com outras medidas de segurança, como atualizações regulares do sistema, gerenciamento adequado de usuários e monitoramento contínuo de segurança.