Por que o comprimento máximo da senha root do OpenWrt é de 8 caracteres?

29

Quando tento definir roota senha de:

root@OpenWrt:~# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.

Parece que o tamanho máximo é 8. Se eu tentar definir uma senha maior que 8, apenas os 8 primeiros caracteres serão válidos. Como posso definir uma senha mais longa root?

Minha versão do OpenWrt:

Linux OpenWrt 4.14.108 #0 SMP Wed Mar 27 21:59:03 2019 x86_64 GNU/Linux
Alan42
fonte

Respostas:

35

Isso ocorre porque a criptografia baseada em DES (AKA 'descrypt') trunca senhas em 8 bytes e apenas verifica os 8 primeiros para fins de verificação de senha.

Essa é a resposta para sua pergunta direta, mas aqui estão alguns conselhos gerais implícitos no seu contexto:

  • Felizmente, pela minha leitura, MD5in /etc/login.defsé na verdade md5crypt ($ 1 $), que, embora um pouco desatualizado e declarado obsoleto pelo autor , ainda é muito superior à cripta baseada em DES (e definitivamente muito melhor do que um hash bruto e sem sal como o comum MD5! A maioria dos hashes sem sal pode ser quebrada nas GPUs de commodities a taxas de bilhões por segundo)

  • Parece que SHA256(na verdade sha256crypt) e SHA512(na verdade sha512crypt) também estão lá. Eu escolheria um deles.

  • Se você definir sua senha como passwordalgo em cada esquema, poderá verificar visualmente se minha conclusão é de que as variantes -crypt estão corretas (exemplos aqui são retirados dos hashes de exemplo hashcat , todos os 'hashcat', alguns agrupados para legibilidade):

Não recomendado - tipos de hash sem sal ou legados, muito "rápidos" (taxas de quebra) para armazenamento de senha:

MD5         - 8743b52063cd84097a65d1633f5c74f5
SHA256      - 127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA512      - 82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e2 \
              9134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
descrypt    - 48c/R8JAv757A

OK - muito melhor que o sem sal, sem truncamento, mas não mais suficientemente resistente à força bruta no hardware moderno:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

Melhor - hashes relativamente modernos com grandes sais e fatores de trabalho:

sha256crypt - $5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD
sha512crypt - $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/

Destes, apenas descriptografar trunca em 8. Os dois últimos são sua melhor aposta.

(Observação: os sais somente de dígitos nos exemplos md5crypt e sha512crypt acima são apenas efeitos colaterais de como o hashcat cria hashes de exemplo; sais saudáveis ​​e reais são geralmente extraídos de um espaço de teclas muito maior).

Observe também que estou listando apenas os tipos de hash suportados pelo /etc/login.defs nesta plataforma. Para uso geral, até sha256crypt e sha512crypt foram substituídos - primeiro pelo bcrypt e, posteriormente, pelos hashes verdadeiramente resistentes a ataques paralelos, como o scrypt e a família Argon2. (Observe, no entanto, que para logons interativos que devem ser concluídos em menos de um segundo, o bcrypt é realmente mais resistente a ataques do que o último)

Royce Williams
fonte
20

Eu modifiquei isso em /etc/login.defs:

PASS_MAX_LEN            8

problema resolvido.


Adições importantes:

Depois de alterar os parâmetros acima, embora eu possa definir uma senha maior que 8 dígitos, ela ainda é inválida porque a senha real é apenas os oito primeiros dígitos. Não sei se esse é o meu problema.

Minha solução final é definir

# ENCRYPT_METHOD DES

para

ENCRYPT_METHOD MD5

no /etc/login.defs.

Agora, finalmente posso definir uma senha root realmente maior que oito.

Alan42
fonte
16
Boa correção, mas má escolha original para um padrão do sistema ...
HBruijn 09/04
8
Suponho que você alterou sua senha para algo com mais de 8 caracteres agora. Você pode tentar se o login com apenas os 8 primeiros caracteres da sua senha mais longa funcionar? Porque apenas pode ...
marcelm 9/04
9
Você pode alterar isso para SHA256 ou SHA512 ou eles são suportados - o MD5 é considerado quebrado atualmente.
PhilippNagel 9/04
8
realmente sha256 e sha512 por si só não são muito melhores que o md5. você precisa de um sal e use as versões criptográficas desses algoritmos.
SnakeDoc 9/04
4
@ PhilippNagel Com uma senha de alta entropia, não é tão ruim. Embora o MD5 deva certamente ser considerado quebrado, os pontos fracos atualmente conhecidos não o afetam no hash da senha. O que é um problema para o hash de senha é a velocidade; O MD5 não iterado é tão rápido que a força bruta é muito viável para muitas senhas.
marcelm 9/04