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:
Primeiro, abra um terminal clicando no ícone do terminal no ambiente de trabalho.
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 7Essas configurações controlam:
PASS_MAX_DAYS: Número máximo de dias que uma senha permanece válidaPASS_MIN_DAYS: Número mínimo de dias necessários entre as alterações de senhaPASS_WARN_AGE: Número de dias de aviso antes da expiração da senha
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-passwordEste arquivo contém várias linhas configurando como as senhas são gerenciadas, incluindo requisitos de complexidade.
O sistema usa a biblioteca
pwqualitypara impor a qualidade da senha. Vamos verificar se ela está instalada:dpkg -l | grep libpwqualitySe não estiver instalada, podemos instalá-la:
sudo apt update sudo apt install -y libpam-pwqualityAgora, vamos examinar o arquivo de configuração de qualidade da senha:
cat /etc/security/pwquality.confEste 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 senhadcredit: Crédito para dígitos na senhaucredit: Crédito para caracteres maiúsculoslcredit: Crédito para caracteres minúsculosocredit: Crédito para caracteres especiaisretry: Número de tentativas para inserir uma nova senhaenforce_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
Primeiro, vamos fazer um backup do arquivo original:
sudo cp /etc/login.defs /etc/login.defs.backupAgora, abra o arquivo para edição usando nano:
sudo nano /etc/login.defsNo editor, procure por estes parâmetros (use Ctrl+W para pesquisar):
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGEAltere esses valores para implementar uma política de envelhecimento de senhas mais segura:
- Altere
PASS_MAX_DAYSde99999para90(as senhas expiram após 90 dias) - Altere
PASS_MIN_DAYSde0para7(mínimo de 7 dias entre as alterações de senha) - Altere
PASS_WARN_AGEde7para14(avisar os usuários 14 dias antes da expiração da senha)
- Altere
Salve o arquivo pressionando Ctrl+O, depois Enter e saia com Ctrl+X.
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:
Crie um novo usuário:
sudo useradd -m testuserDefina uma senha para o novo usuário:
sudo passwd testuserInsira uma senha simples quando solicitado (vamos fortalecê-la nas etapas posteriores).
Verifique as informações de envelhecimento da senha para o novo usuário:
sudo chage -l testuserVocê 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
Primeiro, vamos fazer um backup do arquivo de configuração PAM:
sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backupAgora, abra o arquivo para edição:
sudo nano /etc/pam.d/common-passwordProcure uma linha contendo
pam_pwquality.so. Pode ser algo parecido com isto:password requisite pam_pwquality.so retry=3Modifique 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_rootEsta configuração significa:
minlen=12: O comprimento mínimo da senha é de 12 caracteresdcredit=-1: Pelo menos 1 dígito é necessárioucredit=-1: Pelo menos 1 letra maiúscula é necessárialcredit=-1: Pelo menos 1 letra minúscula é necessáriaocredit=-1: Pelo menos 1 caractere especial é necessárioenforce_for_root: Aplique essas políticas também ao usuário root
Salve o arquivo pressionando Ctrl+O, depois Enter e saia com Ctrl+X.
Configurando Parâmetros Adicionais em pwquality.conf
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.confRemova 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 = 1O parâmetro
difok = 4exige que pelo menos 4 caracteres sejam diferentes da senha anterior.Salve o arquivo pressionando Ctrl+O, depois Enter e saia com Ctrl+X.
Testando a Nova Política de Complexidade de Senha
Vamos testar nossa nova política alterando a senha do nosso usuário de teste:
sudo passwd testuserTente inserir uma senha simples como
password123. O sistema deve rejeitá-la por não atender aos requisitos de complexidade.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
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.backup2Abra o arquivo para edição:
sudo nano /etc/pam.d/common-passwordProcure 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 sha512Modifique esta linha para adicionar o parâmetro
remember. Adicioneremember=5no final da linha:password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=5Isso impedirá que os usuários reutilizem qualquer uma de suas 5 senhas mais recentes.
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
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 testuserDefina uma senha complexa como
Complex@Password1.Agora, tente alterá-la novamente imediatamente:
sudo passwd testuserTente definir a mesma senha novamente. O sistema deve rejeitá-la devido à política de histórico.
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:
Primeiro, verifique o status atual de uma conta de usuário:
sudo chage -l labexIsso exibe as informações de envelhecimento da senha para o usuário atual.
Para forçar um usuário a alterar sua senha no próximo login:
sudo chage -d 0 testuserIsso define a data da última alteração de senha como 0, forçando uma alteração de senha no próximo login.
Para definir manualmente a data de expiração da senha:
sudo chage -E $(date -d "90 days" +%Y-%m-%d) testuserIsso 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:
Visualize todas as contas de usuário locais:
cat /etc/passwdVerifique o status da senha para um usuário específico:
sudo passwd -S testuserListe os usuários com uma configuração de senha específica:
awk -F: '($3 >= 1000) {print $1}' /etc/passwdIsso 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ê:
- Explorou os principais arquivos de configuração que controlam as políticas de senha
- Configurou políticas básicas de envelhecimento de senha para garantir atualizações regulares de senha
- Implementou requisitos de complexidade de senha fortes para impor senhas seguras
- Configurou controles de histórico de senha para evitar a reutilização de senhas
- 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.



