Criando uma política de senha no Linux

Olá de novo! As aulas do novo grupo de cursos começam amanhã "Administrador Linux", nesse sentido, estamos publicando um artigo útil sobre o tema.

Criando uma política de senha no Linux

No tutorial anterior, dissemos como usar pam_cracklibpara tornar as senhas em sistemas mais complexos Chapéu Vermelho 6 ou CentOS. No Chapéu Vermelho 7 pam_pwquality substituído cracklib como pam módulo padrão para verificação de senhas. Módulo pam_pwquality também é compatível com Ubuntu e CentOS, bem como em muitos outros sistemas operacionais. Este módulo facilita a criação de políticas de senha para garantir que os usuários aceitem os padrões de segurança de sua senha.

Durante muito tempo, a abordagem comum às senhas era forçar o usuário a usar letras maiúsculas, minúsculas, números ou outros símbolos. Estas regras básicas para a complexidade das senhas foram amplamente promovidas nos últimos dez anos. Tem havido muita discussão sobre se isso é uma boa prática ou não. O principal argumento contra a definição de condições tão complexas era que os usuários anotavam as senhas em pedaços de papel e as armazenavam de forma insegura.

Outra política que foi questionada recentemente obriga os usuários a alterar suas senhas a cada x dias. Houve alguns estudos que mostraram que isso também é prejudicial à segurança.

Muitos artigos foram escritos sobre o tema dessas discussões, que fundamentam um ou outro ponto de vista. Mas não é isso que discutiremos neste artigo. Este artigo falará sobre como definir corretamente a complexidade da senha em vez de gerenciar a política de segurança.

Configurações de política de senha

Abaixo você verá as opções de política de senha e uma breve descrição de cada uma. Muitos deles são semelhantes aos parâmetros do módulo cracklib. Essa abordagem facilita a portabilidade de suas políticas do sistema legado.

  • difok – O número de caracteres da sua nova senha que NÃO devem estar presentes na sua senha antiga. (Padrão 5)
  • minlen – Comprimento mínimo da senha. (Padrão 9)
  • crédito – O número máximo de créditos para uso de caracteres maiúsculos (se parâmetro > 0) ou o número mínimo necessário de caracteres maiúsculos (se parâmetro < 0). O padrão é 1.
  • crédito — O número máximo de créditos para usar caracteres minúsculos (se parâmetro > 0) ou o número mínimo necessário de caracteres minúsculos (se parâmetro < 0). O padrão é 1.
  • crédito — O número máximo de créditos para utilização de dígitos (se parâmetro > 0), ou o número mínimo exigido de dígitos (se parâmetro < 0). O padrão é 1.
  • ocrédito — O número máximo de créditos para utilização de outros símbolos (se parâmetro > 0), ou o número mínimo necessário de outros símbolos (se parâmetro < 0). O padrão é 1.
  • minclass – Define o número de aulas necessárias. As classes incluem os parâmetros acima (caracteres maiúsculos, caracteres minúsculos, números, outros caracteres). O padrão é 0.
  • repetição máxima – O número máximo de vezes que um caractere pode ser repetido em uma senha. O padrão é 0.
  • maxclassrepeat — O número máximo de caracteres consecutivos em uma classe. O padrão é 0.
  • gecoscheck – Verifica se a senha contém alguma palavra das strings GECOS do usuário. (Informações do usuário, ou seja, nome real, localização, etc.) O padrão é 0 (desligado).
  • dictpath – Vamos aos dicionários cracklib.
  • palavrões – Palavras separadas por espaços que são proibidas em senhas (Nome da empresa, a palavra “senha”, etc.).

Se o conceito de empréstimos parece estranho, tudo bem, é normal. Falaremos mais sobre isso nas seções a seguir.

Configuração de política de senha

Antes de começar a editar os arquivos de configuração, é uma boa prática anotar antecipadamente uma política básica de senha. Por exemplo, usaremos as seguintes regras de dificuldade:

  • A senha deve ter no mínimo 15 caracteres.
  • O mesmo caractere não deve ser repetido mais de duas vezes na senha.
  • As classes de personagens podem ser repetidas até quatro vezes em uma senha.
  • A senha deve conter caracteres de cada classe.
  • A nova senha deve ter 5 caracteres novos em relação à antiga.
  • Habilite a verificação GECOS.
  • Proibir as palavras “senha, passe, palavra, putorius”

Agora que definimos a política, podemos editar o arquivo /etc/security/pwquality.confpara aumentar os requisitos de complexidade de senha. Abaixo está um arquivo de exemplo 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 putorius

Como você deve ter notado, alguns parâmetros do nosso arquivo são redundantes. Por exemplo, o parâmetro minclass é redundante pois já usamos pelo menos dois caracteres da classe usando campos [u,l,d,o]credit. Nossa lista de palavras que não podem ser utilizadas também é redundante, pois proibimos repetir qualquer classe 4 vezes (todas as palavras de nossa lista estão escritas em letras minúsculas). Incluí essas opções apenas para demonstrar como usá-las para configurar sua política de senha.
Depois de criar sua política, você poderá forçar os usuários a alterar suas senhas na próxima vez que fizerem login. sistema.

Outra coisa estranha que você deve 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 darão crédito pelo uso do caractere em sua senha. Se o campo contiver um número negativo, significa que uma determinada quantidade é necessária.

O que são empréstimos?

Eu os chamo de empréstimos porque isso transmite seu propósito com a maior precisão possível. Se o valor do parâmetro for maior que 0, adicione um número de "créditos de caracteres" igual a "x" ao comprimento da senha. Por exemplo, se todos os parâmetros (u,l,d,o)credit definido como 1 e o comprimento da senha necessária for 6, você precisará de 6 caracteres para atender ao requisito de comprimento, porque cada caractere maiúsculo, minúsculo, dígito ou outro caractere lhe dará um crédito.

Se você instalar dcredit aos 2, você poderia teoricamente usar uma senha com 9 caracteres e obter 2 créditos de caracteres para números, e então o comprimento da senha já poderia ser 10.

Veja este exemplo. Defino o comprimento da senha como 13, defino dcredit como 2 e todo o resto como 0.

$ pwscore
 Thisistwelve
 Password quality check failed:
  The password is shorter than 13 characters

$ pwscore
 Th1sistwelve
 18

Minha primeira verificação falhou porque a senha tinha menos de 13 caracteres. Na próxima vez mudei a letra “I” para o número “1” e recebi dois créditos pelos números, o que tornou a senha igual a 13.

Teste de senha

Pacote libpwquality fornece a funcionalidade descrita no artigo. Ele também vem com um programa pwscore, que foi projetado para verificar a complexidade da senha. Usamos acima para verificar empréstimos.
Utilitário pwscore lê de stdin. Basta executar o utilitário e escrever sua senha, ele exibirá 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. Em geral, uma pontuação inferior a 50 é considerada uma “senha normal”, e uma pontuação acima dela é considerada uma “senha forte”. Qualquer senha que passe nas verificações de qualidade (especialmente na verificação forçada cracklib) deve resistir a ataques de dicionário e uma senha com pontuação acima de 50 com a configuração minlen mesmo por padrão brute force ataques.

Conclusão

Fixação pwquality – é fácil e simples comparado à inconveniência de uso cracklib com edição direta de arquivos pam. Neste guia, cobrimos tudo que você precisa ao configurar políticas de senha em sistemas Red Hat 7, CentOS 7 e até mesmo Ubuntu. Também falamos sobre o conceito de empréstimos, sobre o qual raramente se escreve em detalhes, de modo que esse tópico muitas vezes permanecia obscuro para quem não o conhecia anteriormente.

Fontes:

página de manual pwquality
Página de manual pam_pwquality
página de manual do pwscore

Links úteis:

Escolhendo senhas seguras – Bruce Schneier
Lorrie Faith Cranor discute seus estudos de senha na CMU
O infame desenho animado xkcd na Entropy

Fonte: habr.com

Adicionar um comentário