Olá novamente! Amanhã começam as aulas em um novo grupo do curso , por isso publicamos um artigo útil sobre o tema.

No último tutorial, nós explicamos como usar pam_cracklib, para complicar as senhas nos sistemas ou CentOS. No Red Hat 7 pam_pwquality substituiu cracklib como um pam como o módulo padrão para verificar senhas. Este módulo pam_pwquality também é suportado no Ubuntu e CentOS, assim como em muitos outros sistemas operacionais. Este módulo simplifica a criação de políticas de senha para garantir que os usuários aceitem seus padrões de complexidade de senha.
Durante muito tempo, a abordagem comum para senhas foi obrigar o usuário a usar caracteres maiúsculos e minúsculos, números ou outros símbolos. Essas regras básicas de complexidade de senha têm sido ativamente defendidas nos últimos dez anos. Houve muitas discussões sobre se isso é uma boa prática ou não. O principal argumento contra a implementação de condições tão complexas era que os usuários anotam senhas em papéis e as armazenam de forma insegura.
Outra política que foi recentemente questionada obriga os usuários a mudarem suas senhas a cada x dias. Alguns estudos demonstraram que isso também prejudica a segurança.
Sobre essas discussões, foram escritos muitos artigos que justificavam um ou outro ponto de vista. Mas isso não é o que vamos discutir neste artigo. Este artigo falará sobre como definir corretamente a complexidade da senha, e não sobre a gestão da política de segurança.
Parâmetros da política de senhas
Abaixo você verá os parâmetros da política de senhas e uma breve descrição de cada um deles. Muitos deles são semelhantes aos parâmetros no módulo cracklib. Essa abordagem facilita a portabilidade de suas políticas do sistema antigo.
- difok – O número de caracteres em sua nova senha que NÃO deve estar presente na sua senha antiga. (Padrão 5)
- minlen – Comprimento mínimo da senha. (Padrão 9)
- ucredit – Número máximo de créditos por usar caracteres em maiúsculas (se o parâmetro > 0), ou o número mínimo exigido de caracteres em maiúsculas (se o parâmetro < 0). Padrão 1.
- lcredit — O número máximo de créditos para o uso de letras minúsculas (se o parâmetro > 0), ou o número mínimo exigido de letras minúsculas (se o parâmetro < 0). Por padrão, 1.
- dcredit — O número máximo de créditos para o uso de dígitos (se o parâmetro > 0), ou o número mínimo exigido de dígitos (se o parâmetro < 0). Por padrão, 1.
- ocredit — O número máximo de créditos para o uso de outros símbolos (se o parâmetro > 0), ou o número mínimo exigido de outros símbolos (se o parâmetro < 0). Por padrão, 1.
- minclass – Define o número de classes exigidas. As classes incluem os parâmetros mencionados acima (letras maiúsculas, minúsculas, dígitos e outros símbolos). Por padrão, 0.
- maxrepeat – O número máximo de repetições de um símbolo na senha. Por padrão, 0.
- maxclassrepeat — O número máximo de símbolos consecutivos em uma única classe. Por padrão, 0.
- gecoscheck – Verifica se a senha contém alguma palavra das strings GECOS do usuário. (Informações sobre o usuário, como nome real, localização etc.) Por padrão, 0 (desativado).
- dictpath – Caminho para os dicionários cracklib.
- badwords – Palavras proibidas separadas por espaços que não podem ser usadas em senhas (nome da empresa, palavra "senha" etc.).
Se a ideia de créditos soar estranha, não se preocupe, é normal. Vamos discutir isso em mais detalhes nas seções seguintes.
Configuração da política de senhas
Antes de começar a editar os arquivos de configuração, é uma boa prática anotar a política básica de senhas. Por exemplo, usaremos as seguintes regras de complexidade:
- A senha deve ter um comprimento mínimo de 15 caracteres.
- O mesmo símbolo não deve se repetir mais de duas vezes na senha.
- Na senha, as classes de símbolos podem se repetir até quatro vezes.
- A senha deve conter símbolos de cada classe.
- A nova senha deve ter 5 novos símbolos em comparação com a antiga.
- Ativar verificação GECOS.
- Proibir palavras 'password, pass, word, putorius'.
Agora que estabelecemos a política, podemos editar o arquivo /etc/security/pwquality.conf, para reforçar os requisitos de complexidade da senha. Abaixo está um exemplo de arquivo com comentários para melhor compreensão.
# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putoriusComo você pode ter notado, alguns parâmetros em nosso arquivo são redundantes. Por exemplo, o parâmetro minclass é redundante, uma vez que já estamos utilizando pelo menos dois caracteres da classe, usando os campos [u,l,d,o]credit. Nossa lista de palavras que não podem ser usadas também é redundante, pois proibimos a repetição de qualquer classe 4 vezes (todas as palavras na nossa lista são escritas em letras minúsculas). Incluí esses parâmetros apenas para demonstrar como usá-los para configurar a política de senhas.
Assim que você criar sua política, poderá obrigar os usuários a mudarem suas senhas na próxima vez que entrarem na .
Outra coisa estranha que você pode ter notado é que os campos [u,l,d,o]credit contêm um número negativo. Isso ocorre porque números maiores ou iguais a 0 dão crédito pelo uso de um caractere em sua senha. Se o campo contém um número negativo, isso significa que um determinado número é necessário.
O que são créditos (credit)?
Eu os chamo de créditos, pois isso transmite com mais precisão sua finalidade. Se o valor do parâmetro for maior que 0, você adiciona ao comprimento da senha um número de "créditos por caractere" igual a "x". Por exemplo, se todos os parâmetros (u,l,d,o)credit estiverem definidos como 1, e o comprimento de senha exigido for 6, você precisará de 6 caracteres para atender ao requisito de comprimento, pois cada caractere em letras maiúsculas, minúsculas, dígito ou outro símbolo lhe dará um crédito.
Se você definir dcredit como 2, teoricamente você poderá usar uma senha de 9 caracteres e obter 2 créditos por caracteres para dígitos e então o comprimento da senha pode ser 10.
Veja este exemplo. Eu configurei o comprimento da senha para 13, defini dcredit como 2 e todo o resto como 0.
$ pwscore
Thisistwelve
Verificação de qualidade da senha falhou:
A senha é mais curta que 13 caracteres
$ pwscore
Th1sistwelve
18Minha primeira verificação falhou porque o comprimento da senha era menor que 13 caracteres. Na próxima vez, eu substituí a letra “I” pelo dígito “1” e ganhei dois créditos por dígitos, o que igualou a senha a 13.
Teste de senha
Pacote libpwquality fornece a funcionalidade descrita no artigo. Também vem com um programa pwscore, cujo objetivo é verificar a complexidade da senha. Usamos isso acima para verificar os créditos.
Utilitário pwscore lê de . Basta executar o utilitário e digitar sua senha, ele fornecerá um erro ou um valor de 0 a 100.
O índice de qualidade da senha está relacionado ao parâmetro minlen no arquivo de configuração. Geralmente, um índice abaixo de 50 é considerado 'senha normal', enquanto acima é visto como 'senha forte'. Qualquer senha que passe nas verificações de qualidade (especialmente a verificação obrigatória cracklib) deve resistir a ataques de dicionário, e uma senha com índice acima de 50 com a configuração minlen padrão até mesmo ataques de força bruta. pwquality
Conclusão
Configuração é fácil e simples comparado aos inconvenientes do uso edição direta de arquivos. cracklib Neste guia, abordamos tudo o que você precisará ao configurar políticas de senhas no Red Hat 7, CentOS 7 e até mesmo em sistemas Ubuntu. Também discutimos o conceito de créditos, que raramente é explicado em detalhes, então esse tema muitas vezes permanece confuso para quem não teve contato anterior com ele. pampágina do manual pwquality
Fontes:
Links úteis:
Fonte: habr.com
