Creando unha política de contrasinais en Linux

Olá outra vez! As clases do novo grupo do curso comezan mañá "Administrador Linux", a este respecto, publicamos un útil artigo sobre o tema.

Creando unha política de contrasinais en Linux

No tutorial anterior dixémosche como usalo pam_cracklibpara facer que os contrasinais dos sistemas sexan máis complexos Sombreiro Vermello 6 ou CentOS. En Red Hat 7 pam_pwquality substituído cracklib como pam módulo predeterminado para comprobar contrasinais. Módulo pam_pwquality tamén é compatible con Ubuntu e CentOS, así como moitos outros sistemas operativos. Este módulo facilita a creación de políticas de contrasinais para garantir que os usuarios acepten os estándares de seguridade dos teus contrasinais.

Durante moito tempo, o enfoque común dos contrasinais foi obrigar ao usuario a usar maiúsculas, minúsculas, números ou outros símbolos. Estas regras básicas para a complexidade dos contrasinais foron moi promovidas nos últimos dez anos. Houbo moita discusión sobre se esta é unha boa práctica ou non. O principal argumento en contra de establecer condicións tan complexas era que os usuarios anotaban os contrasinais en anacos de papel e os almacenaban de forma insegura.

Outra política que foi cuestionada recentemente obriga aos usuarios a cambiar os seus contrasinais cada x días. Houbo algúns estudos que demostraron que isto tamén é prexudicial para a seguridade.

Sobre o tema destas discusións escribíronse moitos artigos que fundamentan un ou outro punto de vista. Pero isto non é o que falaremos neste artigo. Neste artigo falarase de como configurar correctamente a complexidade do contrasinal en lugar de xestionar a política de seguranza.

Configuración da política de contrasinais

A continuación verás as opcións da política de contrasinais e unha breve descrición de cada unha. Moitos deles son similares aos parámetros do módulo cracklib. Este enfoque facilita a portabilidade das túas políticas desde o sistema heredado.

  • difok – O número de caracteres do teu novo contrasinal que NON debería estar presente no teu antigo contrasinal. (Predeterminado 5)
  • minlen - Lonxitude mínima do contrasinal. (Predeterminado 9)
  • ucredit – O número máximo de créditos para usar caracteres en maiúsculas (se o parámetro > 0) ou o número mínimo necesario de caracteres en maiúsculas (se o parámetro < 0). O valor predeterminado é 1.
  • lcrédito — O número máximo de créditos para usar caracteres en minúscula (se o parámetro > 0) ou o número mínimo necesario de caracteres en minúscula (se o parámetro < 0). O valor predeterminado é 1.
  • dcrédito — O número máximo de créditos para o uso de díxitos (se o parámetro > 0) ou o número mínimo necesario de díxitos (se o parámetro < 0). O valor predeterminado é 1.
  • o crédito — O número máximo de créditos para utilizar outros símbolos (se o parámetro > 0) ou o número mínimo requirido doutros símbolos (se o parámetro < 0). O valor predeterminado é 1.
  • minclass – Establece o número de clases necesarias. As clases inclúen os parámetros anteriores (caracteres en maiúsculas, caracteres en minúsculas, números, outros caracteres). O valor predeterminado é 0.
  • repetición máxima – O número máximo de veces que se pode repetir un carácter nun contrasinal. O valor predeterminado é 0.
  • maxclassrepeat — O número máximo de caracteres consecutivos nunha clase. O valor predeterminado é 0.
  • gecoscheck – Comproba se o contrasinal contén palabras das cadeas GECOS do usuario. (Información do usuario, é dicir, nome real, localización, etc.) O valor predeterminado é 0 (desactivado).
  • ruta dictada – Imos aos dicionarios cracklib.
  • malas palabras – Palabras separadas por espazos que están prohibidas nos contrasinais (Nome da empresa, a palabra “contrasinal”, etc.).

Se o concepto de préstamos soa estraño, está ben, é normal. Falaremos máis sobre isto nas seguintes seccións.

Configuración da política de contrasinais

Antes de comezar a editar ficheiros de configuración, é unha boa práctica escribir unha política básica de contrasinais con antelación. Por exemplo, utilizaremos as seguintes regras de dificultade:

  • O contrasinal debe ter unha lonxitude mínima de 15 caracteres.
  • O mesmo carácter non debe repetirse máis de dúas veces no contrasinal.
  • As clases de personaxes pódense repetir ata catro veces nun contrasinal.
  • O contrasinal debe conter caracteres de cada clase.
  • O novo contrasinal debe ter 5 novos caracteres en comparación co antigo.
  • Activa a comprobación GECOS.
  • Prohibir as palabras "contrasinal, pasar, palabra, putorius"

Agora que elaboramos a política, podemos editar o ficheiro /etc/security/pwquality.confpara aumentar os requisitos de complexidade do contrasinal. A continuación móstrase un ficheiro de exemplo con comentarios para unha mellor comprensión.

# 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 podes observar, algúns parámetros do noso ficheiro son redundantes. Por exemplo, o parámetro minclass é redundante xa que xa usamos polo menos dous caracteres da clase usando campos [u,l,d,o]credit. A nosa lista de palabras que non se poden usar tamén é redundante, xa que prohibimos repetir calquera clase 4 veces (todas as palabras da nosa lista están escritas en minúsculas). Incluín estas opcións só para demostrar como usalas para configurar a túa política de contrasinais.
Unha vez que creas a túa política, podes obrigar aos usuarios a cambiar os seus contrasinais a próxima vez que inicien sesión. o sistema.

Outra cousa estraña que podes ter notado é que os campos [u,l,d,o]credit contén un número negativo. Isto débese a que os números maiores ou iguais a 0 darán crédito por usar o carácter do teu contrasinal. Se o campo contén un número negativo, significa que se require unha determinada cantidade.

Que son os préstamos?

Chámolles préstamos porque iso transmite o seu propósito coa maior precisión posible. Se o valor do parámetro é maior que 0, engade un número de "créditos de carácter" igual a "x" á lonxitude do contrasinal. Por exemplo, se todos os parámetros (u,l,d,o)credit definido en 1 e a lonxitude do contrasinal requirida era 6, entón necesitarás 6 caracteres para satisfacer o requisito de lonxitude porque cada maiúscula, minúscula, díxitos ou outro carácter darache un crédito.

Se instalas dcredit en 2, teoricamente poderías usar un contrasinal de 9 caracteres e obter créditos de 2 caracteres para os números, e entón a lonxitude do contrasinal xa podería ser de 10.

Mira este exemplo. Establecín a lonxitude do contrasinal a 13, a dcredit a 2 e todo o demais a 0.

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

$ pwscore
 Th1sistwelve
 18

A miña primeira comprobación fallou porque o contrasinal tiña menos de 13 caracteres. A próxima vez cambiei a letra "I" polo número "1" e recibín dous créditos polos números, o que fixo que o contrasinal fose igual a 13.

Proba de contrasinal

Paquete libpwquality ofrece a funcionalidade descrita no artigo. Tamén vén cun programa pwscore, que está deseñado para comprobar a complexidade do contrasinal. Usámolo arriba para comprobar os préstamos.
Utilidade pwscore le de Stdin. Só ten que executar a utilidade e escribir o seu contrasinal, mostrará un erro ou un valor de 0 a 100.

A puntuación de calidade do contrasinal está relacionada co parámetro minlen no ficheiro de configuración. En xeral, unha puntuación inferior a 50 considérase un "contrasinal normal" e unha puntuación superior considérase un "contrasinal seguro". Calquera contrasinal que supere as comprobacións de calidade (especialmente a verificación forzada cracklib) debe soportar ataques de dicionario e un contrasinal cunha puntuación superior a 50 coa configuración minlen mesmo por defecto brute force ataques.

Conclusión

axuste pwquality - é sinxelo e sinxelo en comparación co inconveniente de usar cracklib con edición directa de ficheiros pam. Nesta guía, cubrimos todo o que necesitarás para configurar as políticas de contrasinais en Red Hat 7, CentOS 7 e incluso en sistemas Ubuntu. Tamén falamos do concepto de préstamos, do que raramente se escribe en detalle, polo que este tema a miúdo non estaba claro para aqueles que non o coñeceran anteriormente.

Fontes:

Páxina de man de pwquality
páxina de manual pam_pwquality
páxina de manual pwscore

Ligazóns útiles:

Escoller contrasinais seguros - Bruce Schneier
Lorrie Faith Cranor comenta os seus estudos de contrasinais na CMU
The Infamous xkcd cartoon on Entropy

Fonte: www.habr.com

Engadir un comentario