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