Olá novamente! As aulas começarão amanhã no novo grupo do curso
Administrador Linux , e nesse sentido publicamos um artigo útil sobre o assunto.

No último tutorial, falamos sobre como usar o
pam_cracklib
para complicar senhas nos sistemas
Red Hat 6 ou CentOS. No Red Hat 7,
pam_pwquality
substituiu
cracklib
como o módulo
pam
para verificação de senha. O módulo
pam_pwquality
também
pam_pwquality
suportado no 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 seus padrões de complexidade de senha.
Por um longo tempo, a abordagem usual das senhas era forçar o usuário a usar caracteres maiúsculos e minúsculos, números ou outros caracteres neles. Essas regras básicas de complexidade de senha foram promovidas ativamente nos últimos dez anos. Houve 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 difíceis foi que os usuários escrevessem senhas no papel e as armazenassem de maneira insegura.
Outra política que foi recentemente questionada obriga os usuários a alterar suas senhas a cada x dias. Vários estudos foram realizados que mostraram que isso também é prejudicial à segurança.
Muitos artigos foram escritos sobre o tópico dessas discussões que justificam esse ou aquele ponto de vista. Mas não é isso que discutiremos neste artigo. Este artigo mostrará como definir corretamente a complexidade da senha e não gerenciar a política de segurança.
Configurações de diretiva de senhaAbaixo, você verá as configurações da política de senha e uma breve descrição de cada uma delas. Muitos deles são semelhantes aos parâmetros no módulo
cracklib
. Essa abordagem facilita a porta de suas políticas do sistema antigo.
- difok - O número de caracteres na sua nova senha que NÃO deve estar presente na sua senha antiga. (O padrão é 5)
- minlen - O tamanho mínimo da senha. (O padrão é 9)
- ucredit - O número máximo de créditos para o uso de caracteres maiúsculos (se o parâmetro> 0) ou o número mínimo necessário de caracteres maiúsculos (se o parâmetro <0). O padrão é 1.
- lcredit - O número máximo de créditos para o uso de caracteres minúsculos (se o parâmetro> 0) ou o número mínimo necessário de caracteres minúsculos (se o parâmetro <0). O 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 necessário de dígitos (se o parâmetro <0). O padrão é 1.
- ocredit - O número máximo de créditos pelo uso 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 classes necessárias. As classes incluem os parâmetros acima (maiúsculas, minúsculas, números, outros caracteres). O padrão é 0.
- maxrepeat - O número máximo de vezes que um caractere é repetido em uma senha. O padrão é 0.
- maxclassrepeat - O número máximo de caracteres consecutivos em uma única classe. O padrão é 0.
- gecoscheck - Verifica se a senha contém alguma palavra das linhas GECOS do usuário. (Informações do usuário, por exemplo, nome real, local etc.) Padrão 0 (desativado).
- dictpath - Permite desabilitar dicionários.
- badwords - palavras separadas por espaço que são proibidas em senhas (nome da empresa, palavra "senha" etc.).
Se o conceito de empréstimos parecer estranho, tudo bem, tudo bem. Falaremos sobre isso em mais detalhes nas próximas seções.
Configuração da Política de SenhaAntes de começar a editar arquivos de configuração, é uma boa prática pré-escrever a política de senha básica. Por exemplo, usaremos as seguintes regras de complexidade:
- A senha deve ter um comprimento mínimo de 15 caracteres.
- Na senha, o mesmo caractere não deve ser repetido mais de duas vezes.
- Em uma senha, as classes de caracteres podem ser repetidas até quatro vezes.
- A senha deve conter caracteres de cada classe.
- A nova senha deve ter 5 novos caracteres em comparação com a antiga.
- Habilite a validação GECOS.
- Negue as palavras "senha, senha, palavra, putório"
Agora, assim que definimos 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 de comentário para melhor compreensão.
Como você deve ter notado, alguns parâmetros em nosso arquivo são redundantes. Por exemplo, o parâmetro
minclass
redundante, pois já usamos pelo menos dois caracteres da classe usando os campos de
[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 da nossa lista são escritas em letras minúsculas). Eu incluí essas opções apenas para demonstrar como usá-las para configurar uma política de senha.
Depois de criar sua política, você pode forçar os usuários a alterar suas senhas na próxima vez que efetuarem login.
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 é necessária uma certa quantia.
O que são empréstimos?Eu os chamo de empréstimos, porque transmite com precisão seu objetivo. Se o valor do parâmetro for maior que 0, adicione o número de "créditos por caracteres" igual a "x" ao comprimento da senha. Por exemplo, se todos os parâmetros
(u,l,d,o)credit
definidos como 1 e o comprimento da senha necessário for 6, serão necessários 6 caracteres para atender ao requisito de comprimento, porque cada caractere é maiúsculo, minúsculo, dígito ou outro caractere lhe dará um empréstimo.
Se você definir
dcredit
como 2, teoricamente poderá usar uma senha de 9 caracteres e obter 2 créditos por caracteres para números, e a senha já poderá ser 10.
Dê uma olhada neste exemplo. Defino o tamanho 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 equivalia à senha como 13.
Teste de senhaO pacote
libpwquality
fornece a funcionalidade descrita no artigo. Ele também vem com o programa
pwscore
, projetado para verificar a senha quanto à complexidade. Usamos isso acima para verificar empréstimos.
O utilitário
pwscore
lê a partir de
stdin . Basta executar o utilitário e escrever sua senha, isso dará 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, um indicador menor que 50 é considerado como uma "senha normal" e acima como uma "senha forte". Qualquer senha que passe nas verificações de qualidade (especialmente
cracklib
verificações forçadas por
cracklib
) deve suportar ataques de dicionário, e uma senha com pontuação maior que 50 com a configuração padrão de
minlen
até um
brute force
.
ConclusãoA configuração do
pwquality
é
pwquality
e fácil em comparação com a inconveniência de usar o
cracklib
com a edição direta de arquivos
pam
. Neste guia, abordamos tudo o que você precisa para configurar políticas de senha nos sistemas Red Hat 7, CentOS 7 e até Ubuntu. Também conversamos sobre o conceito de empréstimos, que raramente são escritos em detalhes; portanto, esse tópico geralmente permanece incompreensível para quem nunca o havia encontrado antes.
Fontes:página do manual pwqualityPágina do manual pam_pwqualitypágina de manual do pwscoreLinks úteis:Escolhendo senhas seguras - Bruce SchneierLorrie Faith Cranor discute seus estudos de senha na CMUO infame desenho animado xkcd na Entropy