Por que o Linux tem um arquivo shadow e um arquivo passwd? [duplicado]

1

Eu entendo a diferença entre sombra e passwd , mas minha pergunta é por que eles têm os dois? Parece uma complicação desnecessária. Por que não apenas armazenar a senha criptografada no arquivo passwd? É mais seguro separá-los? Eu notei que o passwd é acessível para qualquer pessoa, mas apenas para os superusuários.

    
por Celeritas 04.11.2015 / 07:01

4 respostas

4

O principal objetivo é proteger os hashes de senha do usuário. O arquivo /etc/passwd contém diversas informações do usuário que devem ser legíveis por todos. O arquivo /etc/shadow só pode ser lido por root . Essa simples divisão de direitos de acesso impede que usuários casuais e “script kiddies” vejam uma lista de hashes de senhas de usuários e, possivelmente, hackear esses hashes. Lembre-se, os hashes não são criptografados de forma alguma e, portanto, são mais fracos.

Em determinado momento, o arquivo shadow não existia e os hashes dos usuários eram armazenados no arquivo passed como explicado em Wikipédia :

In 1987 the author of the original Shadow Password Suite, Julie Haugh, experienced a computer break-in and wrote the initial release of the Shadow Suite containing the login, passwd and su commands. The original release, written for the SCO Xenix operating system, quickly got ported to other platforms. The Shadow Suite was ported to Linux in 1992 one year after the original announcement of the Linux project, and was included in many early distributions, and continues to be included in many current Linux distributions.

Eu me lembro disso porque o sistema público Unix no início dos anos 90 anunciou a mudança para uma nova configuração em que /etc/shadow seria usado e houve algumas discussões sobre se isso era uma boa ideia ou não.

Mais história sobre Julie Haugh e a criação da Shadow Password Suite pode ser encontrada aqui :

In 1987 I was the victim of a computer hacker and suddenly found the need to learn everything possible about computer security. I started by learning the common tricks hackers used to break into systems and ended up writing the Shadow Password Suite. It is now the defacto standard enhanced security subsystem for free UNIX systems and is probably in use on over 100,000 systems world-wide. I even wrote and presented a paper at a USENIX conference on it. If you are interested in using the Shadow Password Suite on your own system, you can get a copy here. I have written and presented papers or discussions at a couple of conferences and look forward to possibly meeting some of you at a security conference some time in the future.

    
por 04.11.2015 / 07:20
4

É uma questão de segurança. O arquivo /etc/passwd é usado por uma variedade de ferramentas e, portanto, deve ser publicamente acessível. Por exemplo, ls corresponde a um userid com um nome de usuário para exibir informações sobre propriedades de arquivos de maneira legível por humanos.

Em vez disso, /etc/shadow só é legível pelo root. Embora seja improvável que a senha possa ser recuperada do hash armazenado no arquivo, ainda é aconselhável protegê-la de olhares indiscretos; Além disso, outros campos são sensíveis e, portanto, considerados com necessidade de proteção extra: considere, de fato, que o arquivo também armazena:

Last Password Change: This field denotes the number of days, since UNIX time (1-Jan-1970), the last password change happened.

Minimum days between password changes: This field denotes the minimum number of days after which a user can change his password.

Password validity: This field denoted the maximum number of days for which password is valid. After that, the password will expire and the user will have to change the password.

Warning threshold: This field denotes the number of days before which the user will receive a warning notification about the password expiry.

Account inactive: This field denotes the number of days after which the account will be disabled, when the password is expired.

Time since account is disabled: This field denotes the number of days, from UNIX time, since which the account is disabled.

Todas essas informações seriam valiosas para um invasor se estivessem acessíveis a elas.

    
por 04.11.2015 / 07:20
1

O arquivo passwd , na verdade, ainda tem um campo "senha", uma sobra dos primeiros dias, mas ainda é utilizável - por exemplo, O Linux tem os comandos pwconv e pwunconv para mesclar / dividir os dois arquivos. (Embora isso perderia extra informações que também são mantidas no arquivo shadow , como tempos de expiração da conta.)

Não tenho muita certeza da linha do tempo; no entanto, AFAIK, originalmente o arquivo shadow foi criado porque as senhas não eram nada de hash - então as senhas de texto simples tinham que ser protegidas de serem lidas por meros mortais. ( Restrições à exportação na época significavam que muitos sistemas Unix não tinham o DES funções instaladas.) O hash de senhas só se difundiu muito mais tarde.

(As senhas são hash , não criptografadas; como não há um caminho direto para "un-hash" alguma coisa, o sistema verifica uma senha fazendo o hashing exatamente da mesma maneira e comparando os dois hashes. )

Mas, mesmo com senhas com hash, a camada extra de proteção continua sendo importante. Nem todas as funções hash são strongs o suficiente para proteger uma senha curta - por exemplo, a mesma função hash "crypt ()" baseada em DES original era strong na época, mas é considerada totalmente fraca nos dias de hoje. (Alguns sistemas ainda usam isso!)

O Linux crypt () agora suporta uma variedade maior de funções hash, como $1$ com base em SHA-1 ou $5$ com base no SHA-256, mas as proteções adicionadas (salt, multiple rodadas ) ainda não são tão boas quanto os desenvolvimentos posteriores de PBKDF2 ou bcrypt, e muitos hashes de senhas curtas ainda podem ser quebrados em um curto período de tempo.

Da mesma forma, o Windows até hoje usa uma função hash fraca very (apenas uma rodada de MD4, sem sal ou quaisquer outros recursos de segurança). Ele não pode ser facilmente atualizado, pois os protocolos de autenticação de rede mais antigos do Windows dependem dele, portanto, o banco de dados precisa ser strongmente protegido até mesmo dos administradores (para evitar que malwares o obtenham).

    
por 04.11.2015 / 07:35
1

Existe uma explicação muito simples para isso. O arquivo passwd tem muitas informações valiosas em que shadow contém a senha encrypted .

O arquivo

**passwd** contém as seguintes informações

  1. Nome de usuário
  2. Senha (x caractere)
  3. UserID (UID)
  4. GroupID (GID)
  5. Informações do ID do usuário
  6. Diretório inicial
  7. User Shell Onde todos os atributos no arquivo shadow contiverem informações sobre a senha do usuário, **shadow** file conterá as seguintes informações:
  8. Nome de usuário
  9. Senha (criptografada)
  10. Última alteração de senha
  11. Mínimo de dias para alteração de senha pelo usuário
  12. Máximo de dias para mudança de senha por usuário
  13. Avisar (dias em que o aviso de alteração de senha é iniciado)
  14. Inativo O número de dias após a expiração da senha que a conta está desativada
  15. Expirar uma data absoluta especificando quando o login não pode mais ser usado

outra diferença é que o arquivo passwd é legível por todos os usuários, onde no caso de shadow somente o root pode.

    
por 05.11.2015 / 09:53