O Solaris me deixou entrar com uma senha diferente com os mesmos 8 primeiros caracteres

42

Não sei se isso é normal, mas o problema é, digamos, que eu tenho um usuário do Solaris chamado gloaiza e sua senha é password2getin

Estou logando no servidor com o PuTTY, apenas coloquei 192.168.224.100 e ele solicita uma janela solicitando um usuário, então digito gloaiza , solicita uma senha e digamos que digito password2geti por engano, e funcionou! Estou no servidor!

Isso é normal? Também funciona se eu colocar algo como password2getin2 .

Eu não sou um falante nativo de inglês, então, caso haja algo que você não entenda, pergunte-me

SO: Oracle Solaris 10 1/13

gloaiza
fonte
4
O que acontece com menos de oito caracteres? Você passworkentra?
thrig
@thrig Ok, minha senha real é 9 caracteres longa, então vamos dizer que a senha é pass2word, então ele funciona com pass2wor, pass2word1, pass2worr1e assim por diante ... Eu acho que funciona com tudo, uma vez que você digita pass2wor Eu não acho que é um grande problema, mas também não é bom.
gloaiza
3
Contanto que você consiga acertar os 8 primeiros caracteres, ele permitirá que você entre. Infelizmente, a geração de uma senha tem criptografia em versões mais antigas do solaris, desconsidera o caractere 9 e depois.
MelBurslan
14
Lembrete delicado para todos os desenvolvedores incorporados que estão pensando: "isso nunca poderia acontecer no meu sistema:" busyboxvoltará silenciosamente ao DES se você não tiver todas as opções de criptografia ativadas no seu .config e no seu libc. Talvez leve um minuto hoje para verificar seus arquivos passwd/ shadow? ;)
11
@drewbenn - quem diabos achou que uma segurança silenciosamente degradante é uma boa idéia? Jesus Cristo.
Davor

Respostas:

65

O sistema operacional armazena um hash da senha em /etc/shadow(ou, historicamente /etc/passwd,; ou em um local diferente em algumas outras variantes do Unix). Historicamente, o primeiro hash de senha generalizado foi um esquema baseado em DES que tinha a limitação de que apenas levava em conta os 8 primeiros caracteres da senha. Além disso, um algoritmo de hash de senha precisa ser lento; o esquema baseado em DES era um pouco lento quando foi inventado, mas é insuficiente para os padrões atuais.

Desde então, algoritmos melhores foram criados. Mas o Solaris 10 assume o padrão do esquema histórico baseado em DES. O Solaris 11 assume como padrão um algoritmo baseado no SHA-256 iterado, que atende aos padrões modernos.

A menos que você precise de compatibilidade histórica com sistemas antigos, mude para o esquema SHA-256 iterado. Edite o arquivo /etc/security/policy.confe altere a CRYPT_DEFAULTconfiguração para 5, que significa crypt_sha256. Você também pode querer definir CRYPT_ALGORITHMS_ALLOWe CRYPT_ALGORITHMS_DEPRECATE.

Depois de alterar a configuração, execute passwdpara alterar sua senha. Isso atualizará o hash da senha com o esquema atualmente configurado.

Gilles 'SO- parar de ser mau'
fonte
1
Obrigado pela resposta. Quando você disse: " A menos que você precise de compatibilidade histórica com sistemas antigos ", você realmente quis dizer isso, o que eu quero dizer é ... É possível realmente precisar do esquema baseado em DES e não poder mudar para SHA-256, para alguns Razão, motivo?
gloaiza
11
@gloaiza Você pode se o seu arquivo hash de senha for compartilhado com o NIS ou algum outro método com uma máquina executando um sistema operacional verdadeiramente antigo (como o Solaris 2.x). Caso contrário, não.
Gilles 'SO- stop be evil'
21

Isso é esperado, pelo menos em uma configuração padrão do Solaris 10 e mais antiga.

Seu sistema está usando o crypt_unixalgoritmo Unix herdado , que de fato limita o número de caracteres usados ​​para oito.

Isso está documentado na passwdpágina do manual :

As senhas devem ser construídas para atender aos seguintes requisitos:

  Cada senha deve ter caracteres PASSLENGTH, onde PASSLENGTH é definido em
  / etc / default / passwd e está definido como 6. Configurando PASSLENGTH para mais de oito
  caracteres requer a configuração de policy.conf (4) com um algoritmo que suporta
  maior que oito caracteres .

Como esse algoritmo é essencialmente obsoleto. Você deve mudar para algo melhor (valores disponíveis listados na crypt.confpágina de manual), definindo as entradas CRYPT_ALGORITHMS_DEPRECATEe CRYPT_DEFAULTno /etc/security/policy.confarquivo.

Consulte http://docs.oracle.com/cd/E19253-01/816-4557/concept-63/index.html

jlliagre
fonte
1
Não é verdade que "quanto maior, melhor". O algoritmo 2a(bcrypt) pode ser o melhor .
parar de prejudicar Monica
@OrangeDog Point tomado, aviso removido
jlliagre
7

Veja esta discussão nos fóruns da Oracle :

O comportamento que você descreve é ​​esperado ao usar o esquema de criptografia de senha "crypt_unix" padrão. Esse esquema criptografa apenas os oito primeiros caracteres de uma senha e, portanto, somente os oito primeiros caracteres precisam corresponder quando a senha for digitada novamente. Não é um "bug", mas uma limitação conhecida do algoritmo - ele é amplamente mantido para compatibilidade com versões anteriores e, infelizmente, é definido como o padrão nos sistemas Solaris quando instalado.

Para resolver isso, configure seu sistema operacional para usar os algoritmos MD5 ou Blowfish em vez de crypt_unix.

Isso pode ser alterado no arquivo /etc/security/policy.conf. Você pode definir algoritmos de criptografia para permitir, e também há uma configuração para descontinuar (proibir) o uso do algoritmo "crypt_unix" e alterar o padrão para um mais seguro.

Consulte o "Guia de administração do sistema Solaris 10: serviços de segurança" para obter mais informações.

Consulte também Alterando o algoritmo de senha (mapa de tarefas) e, especialmente, Como especificar um algoritmo para criptografia de senha :

Especifique o identificador para o algoritmo de criptografia escolhido.

...

Digite o identificador como o valor da variável CRYPT_DEFAULT no arquivo /etc/security/policy.conf.

...

Para obter mais informações sobre como configurar as opções do algoritmo, consulte a policy.conf(4)página de manual.

Andrew Henle
fonte
2

Apenas para sua informação, isso também acontece nos sistemas IBM AIX até a versão 7.1.

É engraçado, porque este sistema Eu trabalhei com tem um "não pode reutilizar qualquer dos últimos 10 senhas" política que faz levar em conta todo a senha comprimento, mas depois só verifica os primeiros 8 caracteres ao efetuar login. Assim, você poderá definir suas senhas como easypass_%$xZ!01, easypass_%&ssY!02, easypass_%$33zoi@@, ... para cada alteração de senha obrigatória, efetivamente mantendo easypasscomo sua senha por anos.

Walen
fonte