Como forçar usuários do sistema a criar e usar senhas fortes

Os usuários de sistemas operacionais Linux e FreeBSD podem alterar as próprias senhas com o comando passwd.
Como administrador do sistema, você pode intervir de várias formas neste processo.
Vamos mostrar, neste breve artigo, como estabelecer as regras para seus usuários alterarem suas senhas.
linux tux badge
Senhas ruins, tais como “abc123”, “senha”, “123456” etc. serão recusadas pelo sistema.
Os exemplos, demonstrados no decorrer do texto, se baseiam em um sistema operacional Debian 9 “Stretch” testing. Aplicam-se automaticamente ao Ubuntu e outros derivados do Debian. Em outros sistemas, é necessário adequar os comandos de instalação do pacote libpam_cracklib — que inclui um módulo PAM que testa a qualidade das senhas, no momento em que são alteradas.

Como o libpam_cracklib funciona

A biblioteca libpam_cracklib verifica a força das senhas através de um método, que segue os seguintes passos:

  1. A nova senha é uma palavra, que consta do dicionário?
  2. A nova senha é um palíndromo?
  3. A nova senha é igual a anterior, com a mudança de apenas uma letra?
  4. A nova senha é uma versão “rotacionada” da sequência anterior?
  5. A nova senha é muito pequena?
    São usados 6 argumentos para fazer esta verificação: minlen, maxclassrepeat, dcredit, ucredit, lcredit, e ocredit.
  6. Opcionalmente, verifica também:
    • se há caracteres repetidos consecutivamente.
    • sequências muito longas de caracteres monotônicos.
    • se a nova senha contém o nome do usuário, em alguma forma.

Como instalar o libpam_cracklib

No Linux, os arquivos /etc/passwd e /etc/shadow, são usados para armazenar informações dos usuários — incluindo senhas.
No Ubuntu e no Debian, use o apt, para instalar:

sudo apt install libpam-cracklib

A instalação deve decorrer em um curto prazo, pois o pacote é de tamanho bem reduzido.
Depois de instalado, tente alterar a sua senha.
Veja alguns exemplos de mensagens de erro:

passwd

Neste exemplo, use respectivamente as senhas ‘justincase’, ‘1234567’ e ‘123’ — obtendo os seguintes resultados:

Mudando senha para justincase.
Senha UNIX (atual):
Nova senha:
SENHA INCORRETA: é baseada no seu nome de usuário
Nova senha:
SENHA INCORRETA: é muito simples/sistemática
Nova senha:
SENHA INCORRETA: é MUITO curta
passwd : Esgotado o número máximo de tentativas para serviço
passwd: senha inalterada

Como configurar o libpam_cracklib

Como você pode ver, no exemplo anterior, o aplicativo já vem basicamente configurado e pronto para usar, logo após a instalação.
É possível fazer alguns ajustes adicionais, contudo, para tornar o sistema mais seguro.
Antes de configurar o libpam, vamos fazer um backup do arquivo de configurações:

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

A seguir, abra o arquivo em seu editor favorito:

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

Agora, encontre e substitua a linha:

password      requisite                       pam_cracklib.so retry=3 minlen=8 difok=3

pela seguinte:

password      requisite                       pam_cracklib.so retry=3 minlen=16 difok=3 ucredit=-1 lcredit=-2 dcredit=-2 ocredit=-2

Vamos entender o que foi feito e quais requisitos foram ajustados:

  • retry=3 — Prompt user at most 3 times before returning with error. The default is 1.
  • minlen=16 — Determina o comprimento mínimo (ou minimum length), requerido para a nova senha.
  • difok=3 — Este argumento altera o valor padrão mínimo do número de caracteres novos exigidos para a nova senha, em relação à velha. O padrão é 5.
  • ucredit=-1 — Determina que a nova senha necessita ter, ao menos, 1 caractere em maiúsculas (uppercase).
  • lcredit=-2 — Especifica o número mínimo de letras minúsculas para formar a nova senha.
  • dcredit=-2 — Especifica o número mínimo de dígitos, que devem compor a nova senha.
  • ocredit=-2 — Determina que a nova senha deva conter, no mínimo 2 símbolos.

Agora que você já sabe o significado, tem melhores condições de voltar ao arquivo e reajustar os valores de acordo com a sua própria política de senhas.
Notou os “valores negativos”?
O sinal ‘-‘ indica que se trata de um valor ‘mínimo’.
Use o sinal ‘+’ quando desejar estabelecer um valor ‘máximo’.

estabelecer uma política de senhas mais rígida pode trazer impopularidade ao administrador, mas torna mais difícil a vida de crackers que pretendam penetrar a sua segurança através da força bruta.

Para complementar este texto, sugiro a leitura de Use o apg para gerar senhas mais seguras — que explica como usar o aplicativo para gerar senhas aceitas pelos sistemas mais rígidos de segurança.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *