Pesquisa de site

Como definir políticas de senha no Linux


Este tutorial descreve como definir políticas de senha, como comprimento da senha, complexidade da senha, senha período de expiração etc., em sistemas baseados em DEB, como Debian, Ubuntu e Linux Mint, e em sistemas baseados em RPM, como Fedora, RHEL e CentOS.

Introdução

Embora o Linux seja seguro por design, ainda existem muitas chances de violação de segurança. Um deles são as senhas fracas.

Como administrador do sistema, você deve definir uma senha forte para os usuários e impor uma política de senha forte. Porque muitas violações do sistema acontecem devido a senhas fracas.

Neste guia, aprenderemos como implementar algumas políticas de senha importantes do Linux usando o Método de autenticação plugável, conhecido como PAM, para fortalecer a segurança do seu sistema Linux.

Antes de entrar no assunto, gostaria de listar alguns elementos-chave importantes que você deve lembrar antes de configurar as políticas de senha.

Diretrizes e práticas recomendadas para senhas

Certifique-se de que a senha seja longa o suficiente

Na maioria dos ambientes, o comprimento recomendado da senha é de 8 caracteres.

Uma senha de oito caracteres é recomendada porque é longa o suficiente para fornecer segurança adequada e ainda curta o suficiente para que os usuários se lembrem facilmente. Aconselho vivamente que não ultrapasse este limite.

Descobriu-se que o comprimento da senha é um fator primário na caracterização da força da senha. Quanto mais longa a senha, mais tempo levará para ser quebrada.

Senhas muito curtas estão sujeitas a ataques de força bruta, bem como a ataques de dicionário usando palavras e senhas comumente escolhidas.

Na verdade, uma senha mais longa, mesmo composta por palavras ou construções mais simples, é muito melhor do que uma senha curta com caracteres especiais.

Evite senhas fáceis de adivinhar

Outro ponto importante a lembrar ao escolher uma senha é evitar senhas comumente usadas.

Mais importante ainda, nunca use seu nome verdadeiro, nome dos pais/cônjuge/filhos, nome da escola/faculdade ou sua data de nascimento em sua senha.

Você pode ter adicionado alguns de seus dados pessoais e a maioria de seus dados educacionais e profissionais em redes sociais (por exemplo, Facebook) e profissionais (por exemplo, LinkedIn). Um invasor pode tentar adivinhar a senha a partir desses detalhes. Portanto, você não deve incluir os detalhes mencionados acima em suas senhas.

Evite senhas excessivamente complexas

Alguns administradores do Linux impõem muitas restrições aos usuários na escolha de uma senha. Embora isso seja melhor para a segurança, também pode ser contraproducente.

Os usuários ficarão frustrados com as políticas de senhas fortes e escolherão senhas piores para atender à política de senhas.

Por exemplo, um usuário adicionará complexidade à sua senha simplesmente adicionando um número ou caractere especial como “1” ou “!” até o final ou colocando a primeira letra da senha em maiúscula.

Esse tipo de senha pode levar mais tempo para ser quebrada, mas os invasores sabem que os usuários tendem a usar esses padrões e podem tentar adivinhar a senha com base nesses padrões.

Evite prazos de expiração de senha mais curtos

Esta é outra restrição de segurança comumente imposta. Isso representa um fardo desnecessário para os usuários. Digamos que você defina o tempo de expiração da senha para 30 dias. Portanto, o usuário teve que definir uma nova senha todos os meses e definitivamente os usuários não ficarão satisfeitos com isso.

Em vez de diminuir o tempo de expiração, você pode aumentar o comprimento da senha.

Use autenticação multifator

Tente usar métodos 2FA ou MFA sempre que possível. Esta é uma das melhores práticas de segurança que todos devem seguir para proteger seus sistemas.

Para juntar tudo isso, uma boa senha deve sempre conter pelo menos 8 caracteres, incluindo um número, uma letra maiúscula e um caractere especial. Se possível, use autenticação multifator.

Bem, vamos aprender como definir políticas de senha do Linux.

Definir políticas de senha no Linux

Como já disse, vamos implementar as 3 políticas de senha a seguir:

  1. Comprimento da senha,
  2. Complexidade da senha,
  3. Tempo de expiração da senha.

Primeiro, veremos como definir o comprimento da senha em sistemas baseados em DEB.

Defina o comprimento da senha no Debian, Ubuntu e seus derivados

Os Módulos de autenticação conectáveis (PAM) são instalados por padrão em sistemas baseados em DEB.

Normalmente, os arquivos de configuração relacionados a senha e autenticação são armazenados no diretório /etc/pam.d/ em sistemas baseados em Debian. E as políticas de senha são definidas no arquivo /etc/pam.d/common-password. Antes de fazer qualquer alteração nele, faça backup deste arquivo, apenas para garantir.

sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak

Para definir o comprimento mínimo da senha, edite o arquivo /etc/pam.d/common-password:

sudo nano /etc/pam.d/common-password

Encontre a seguinte linha:

password [success=2 default=ignore] pam_unix.so obscure sha512

E adicione uma palavra extra: minlen=8 no final. Aqui eu defino o comprimento mínimo da senha como 8.

password [success=2 default=ignore] pam_unix.so obscure sha512 minlen=8

Definir o comprimento da senha em sistemas baseados em DEB

Salve e feche o arquivo. Agora os usuários não podem usar menos de 8 caracteres para sua senha.

Defina o comprimento da senha em sistemas baseados em RPM

Em sistemas RHEL, CentOS 7.x, execute o seguinte comando como usuário root para definir o comprimento da senha.

authconfig --passminlen=8 --update

Para visualizar o comprimento mínimo da senha, execute:

grep "^minlen" /etc/security/pwquality.conf

Exemplo de resultado:

minlen = 8

Em sistemas RHEL e CentOS 6.x, edite o arquivo /etc/pam.d/system-auth:

nano /etc/pam.d/system-auth

Encontre a seguinte linha e adicione o seguinte no final da linha:

password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 

Defina o comprimento da senha em sistemas baseados em RPM.

De acordo com a configuração acima, o comprimento mínimo da senha é de 8 caracteres.

Defina a complexidade da senha em sistemas baseados em DEB

Esta configuração impõe quantas classes, ou seja, letras maiúsculas, minúsculas e outros caracteres, devem estar em uma senha.

Primeiro instale a biblioteca de verificação de qualidade de senha usando o comando:

sudo apt install libpam-pwquality

Em seguida, edite o arquivo /etc/pam.d/common-password:

sudo nano /etc/pam.d/common-password

Para definir pelo menos uma letra maiúscula na senha, adicione uma palavra 'ucredit=-1' no final da linha a seguir.

password        requisite                       pam_pwquality.so retry=3 ucredit=-1

Defina a complexidade da senha em sistemas baseados em DEB

Defina pelo menos uma letra minúscula na senha, conforme mostrado abaixo.

password        requisite                       pam_pwquality.so retry=3 dcredit=-1

Defina pelo menos outras letras na senha, conforme mostrado abaixo.

password        requisite                       pam_pwquality.so retry=3 ocredit=-1

Como você pode ver nos exemplos acima, definimos pelo menos (mínimo) uma letra maiúscula, uma letra minúscula e um caractere especial na senha. Você pode definir qualquer número máximo permitido de letras maiúsculas, minúsculas e outras letras em sua senha.

Você também pode definir o número mínimo/máximo de classes permitidas na senha.

O exemplo a seguir mostra o número mínimo de classes de caracteres necessárias para a nova senha:

password        requisite                       pam_pwquality.so retry=3 minclass=2

Defina a complexidade da senha em sistemas baseados em RPM

No RHEL 7.x/CentOS 7.x:

Para definir pelo menos uma letra minúscula na senha, execute:

authconfig --enablereqlower --update

Para visualizar as configurações, execute:

grep "^lcredit" /etc/security/pwquality.conf

Exemplo de resultado:

lcredit = -1

Da mesma forma, defina pelo menos uma letra maiúscula na senha usando o comando:

authconfig --enablerequpper --update

Para visualizar as configurações:

grep "^ucredit" /etc/security/pwquality.conf

Exemplo de resultado:

ucredit = -1

Para definir pelo menos um dígito na senha, execute:

authconfig --enablereqdigit --update

Para visualizar a configuração, execute:

grep "^dcredit" /etc/security/pwquality.conf

Exemplo de resultado:

dcredit = -1

Para definir pelo menos um outro caractere na senha, execute:

authconfig --enablereqother --update

Para visualizar a configuração, execute:

grep "^ocredit" /etc/security/pwquality.conf

Exemplo de resultado:

ocredit = -1

Em sistemas RHEL 6.x/CentOS 6.x, edite o arquivo /etc/pam.d/system-auth como usuário root:

nano /etc/pam.d/system-auth

Encontre a seguinte linha e adicione o seguinte no final da linha:

password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

De acordo com a configuração acima, a senha deve ter pelo menos 8 caracteres. Além disso, a senha também deve ter pelo menos uma letra maiúscula, uma letra minúscula, um dígito e mais um caractere.

Defina o período de expiração da senha em sistemas baseados em DEB

Vamos definir as seguintes políticas.

  1. Número máximo de dias que uma senha pode ser usada.
  2. Número mínimo de dias permitido entre alterações de senha.
  3. Número de dias de aviso dado antes que uma senha expire.

Para definir esta política, edite:

sudo nano /etc/login.defs

Defina os valores conforme sua necessidade.

PASS_MAX_DAYS 100
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

Defina o período de expiração da senha em sistemas baseados em DEB

Como você pode ver no exemplo acima, o usuário deve alterar a senha uma vez a cada 100 dias e a mensagem de aviso aparecerá 7 dias antes da expiração da senha.

Esteja ciente de que essas configurações afetarão os usuários recém-criados.

Para definir o número máximo de dias entre a alteração de senha para usuários existentes, você deve executar o seguinte comando:

sudo chage -M <days> <username>

Para definir o número mínimo de dias entre a alteração da senha, execute:

sudo chage -m <days> <username>

Para definir um aviso antes que a senha expire, execute:

sudo chage -W <days> <username>

Para exibir a senha dos usuários existentes, execute:

sudo chage -l sk

Aqui, sk é meu nome de usuário.

Exemplo de resultado:

Last password change : Feb 24, 2017
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

Como você pode ver na saída acima, a senha nunca expira.

Para alterar o período de expiração da senha de um usuário existente,

sudo chage -E 24/06/2018 -m 5 -M 90 -I 10 -W 10 sk

O comando acima definirá a senha do usuário 'sk' para expirar em 24/06/2018. Além disso, o número mínimo de dias entre alterações de senha é definido como 5 dias e o número máximo de dias entre alterações de senha é definido como 90 dias. A conta do usuário será bloqueada automaticamente após 10 dias e exibirá uma mensagem de aviso por 10 dias antes da expiração da senha.

Defina o período de expiração da senha em sistemas baseados em RPM

Isso é o mesmo que sistemas baseados em DEB.

Proibir senhas usadas anteriormente em sistemas baseados em DEB

Você pode limitar os usuários a definir uma senha que já foi usada no passado. Para colocar isso em termos leigos, os usuários não podem usar a mesma senha novamente.

Para fazer isso, edite o arquivo /etc/pam.d/common-password:

sudo nano /etc/pam.d/common-password

Encontre a seguinte linha e adicione a palavra 'remember=5' no final:

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

A política acima impedirá que os usuários usem as últimas 5 senhas utilizadas.

Proibir senhas usadas anteriormente em sistemas baseados em RPM

Isso é o mesmo para RHEL 6.xe RHEL 7.x e seus sistemas clones como CentOS, Scientific Linux.

Edite o arquivo /etc/pam.d/system-auth como usuário root,

vi /etc/pam.d/system-auth

Encontre a linha a seguir e adicione remember=5 no final.

password     sufficient     pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

Leitura sugerida:

  • 4 maneiras fáceis de gerar uma senha forte no Linux
  • Como verificar a complexidade da senha no Linux
  • Como forçar os usuários a usar senhas fortes no Debian, Ubuntu
  • Titan – um gerenciador de senhas de linha de comando para Linux
  • Buttercup – um gerenciador de senhas gratuito, seguro e multiplataforma
  • KeeWeb – um gerenciador de senhas de código aberto e multiplataforma

Agora você sabe o que são políticas de senha no Linux e como definir diferentes políticas de senha em sistemas baseados em DEB e RPM.

Artigos relacionados