As permissões de /etc/shadow
são 600, o que significa que não é legível para ninguém, exceto root.
No entanto, como todas as senhas contidas nela não são armazenadas em texto não criptografado, mas como hashes (o que significa que é impossível calcular a senha original a partir do hash), por que ela não pode ser lida por todos?
permissions
files
shadow
Shubhanshu Vishwakarma
fonte
fonte
/etc/shadow
são600
?Respostas:
Para impedir ataques de força bruta offline.
Mesmo que não seja possível reverter um hash, você ainda pode tentar fazer o hash de todas as senhas possíveis até encontrar uma correspondência e pode fazer milhões de tentativas por segundo com um bom hardware e acesso local ao arquivo.
Se o arquivo tiver
644
permissões, qualquer pessoa que faça login no seu sistema, mesmo em uma sessão de convidado, poderá copiar esse arquivo do seu computador (para um dispositivo USB ou via remotascp
) e tentar um ataque de força bruta offline , sem deixar nenhuma evidência disso no seu computador .Observe que as permissões no Ubuntu são
640
, na verdade , não600
:Isso não importa muito, pois ainda não há permissões para outras pessoas e, por padrão, ninguém está no
shadow
grupo.Originalmente, os hashes eram armazenados
/etc/passwd
(e é por isso que é chamadopasswd
), quando o Linux foi criado, quebrar um hash, mesmo os tipos fracos usados na época, era praticamente impossível. Eventualmente, porém, o poder de processamento avançou ao ponto em que quebrar um hash, pelo menos com uma senha relativamente fraca, se tornou viável.Alterar as permissões de
/etc/passwd
para640
ou600
não funcionaria, pois existem muitos motivos legítimos para poder ler/etc/passwd
como um usuário normal (converter UIDs em nomes de usuário, obter o nome completo do usuário, número de telefone etc.), para que os hashes fossem movidos para/etc/shadow
, que recebeu640
permissões. Umx
lugar no campo do hash da senha de um usuário/etc/passwd
é usado para indicar que o hash desse usuário está armazenado/etc/shadow
.fonte
ls
não precisam ser configurados como root para converter de uid em nome.Na verdade, o / etc / shadow foi criado para permitir afastar-se de uma lista publicamente legível de nomes de usuário e senhas.
Espere aí, isso será um pouco de uma lição de história, antes de chegarmos à resposta real. Se você não se importa com a história, basta rolar um pouco para baixo.
Antigamente, os sistemas operacionais do tipo Unix, incluindo Linux, geralmente mantinham as senhas em / etc / passwd. Esse arquivo era legível mundialmente e ainda é, porque contém informações que permitem o mapeamento, por exemplo, entre IDs numéricos e nomes de usuários. Essas informações são altamente úteis, mesmo para usuários comuns, para fins perfeitamente legítimos; portanto, ter o mundo dos arquivos legível foi de grande benefício para a usabilidade.
Mesmo naquela época, as pessoas percebiam que ter as senhas em texto sem formatação em um arquivo em um local conhecido que qualquer pessoa que pudesse fazer login pudesse ler livremente era uma má idéia. Então, as senhas foram hash, em certo sentido. Esse é o antigo mecanismo de hash de senha "crypt", que quase nunca é usado em sistemas modernos, mas geralmente é suportado para fins legados.
Dê uma olhada em / etc / passwd no seu sistema. Veja esse segundo campo, que diz em
x
toda parte? Ele costumava conter a senha com hash da conta em questão.O problema era que as pessoas podiam fazer o download do / etc / passwd ou até mesmo não fazer o download e trabalhar para decifrar as senhas. Este não foi um grande problema, enquanto os computadores não eram particularmente poderosos (Clifford Stoll, em The Cuckoo's Egg , dá, pelo que me lembro, o tempo para colocar uma senha em um sistema de classe de PC IBM em meados da década de 1980, em meados da década de 1980, em cerca de um segundo. ), mas tornou-se um problema à medida que o poder de processamento aumentava. Em algum momento, com uma lista decente de palavras, a quebra dessas senhas se tornou muito fácil. Por razões técnicas, esse esquema também não suporta senhas com mais de oito bytes.
Duas coisas foram feitas para resolver isso:
Esse arquivo é / etc / shadow.
O software que trabalha com / etc / shadow geralmente é muito pequeno, altamente focado e tende a receber algum exame extra nas revisões devido ao potencial de problemas. Também é executado com permissões especiais, o que permite ler e modificar / etc / shadow, mantendo os usuários comuns incapazes de ver esse arquivo.
Então, já está: As permissões no / etc / shadow são restritivas (embora, como já apontado, não sejam tão restritivas quanto você afirma), porque o objetivo desse arquivo é restringir o acesso a dados confidenciais.
Um hash de senha deve ser forte, mas se sua senha estiver entre as 500 principais senhas nas listas da Internet , qualquer pessoa com acesso ao hash ainda poderá encontrar a senha rapidamente. Proteger o hash evita esse ataque simples e eleva a barreira para um ataque bem-sucedido, desde a simples espionagem até a exigência de que você já seja um administrador de sistemas no host ou passe primeiro por um ataque de escalação de privilégios. Especialmente em um sistema multiusuário administrado corretamente, ambos são significativamente mais difíceis do que apenas olhar para um arquivo legível pelo mundo.
fonte
/etc/shadow
não contém "senhas-sombra" (porque isso não é uma coisa). O arquivo inteiro é uma sombra de/etc/passwd
. Veja como a terminologia é usada no Linux Shadow Password HOWTO : Por que sombrear seu arquivo passwd? . Ao contrário de outros usos do termo "Sombra" na computação, no entanto, não é uma cópia de sombra (como sombrear o código do BIOS na RAM, em vez de executar a partir da ROM). O campo em / etc / passwd é um espaço reservado, contendo um caractere especial que significa "o hash da senha real está em / etc / shadow".Quem te disse isso?
Resposta simples: as permissões no Linux são levadas a sério. Não há razão para que "outros" façam alguma coisa com
/etc/shadow
. E não há razão para o grupo "sombra" escrever para ele. E a execução está fora de ordem.Porque não há uma única razão para fazê-lo.
Os hashes são unidirecionais. Conceder acesso de leitura a alguém possibilita que ele use um script para abusar dessa maneira: apenas liste qualquer palavra que você possa imaginar e crie o hash. Em algum momento, pode corresponder à senha. Pode demorar um pouco também.
Esta resposta é interessante e tem algumas estimativas sobre a força bruta.
fonte
Contexto importante:
/etc/shadow
existe apenas com o objetivo de manter os hashes de senha ocultos. Nos primeiros dias do Unix, os hashes de senha eram armazenados/etc/passwd
. À medida que os computadores se tornaram mais poderosos, as conexões de rede mais persistentes e as explorações de segurança mais sofisticadas, as pessoas perceberam que manter os hashes de senha legíveis por palavras estava causando problemas. (Não detalharei as façanhas; já existem boas respostas sobre isso.)Mas
/etc/passwd
não podia ser protegido contra leitura: é usado por todos os tipos de programas para mapear IDs de usuário numéricos para nomes de usuários e procurar diretórios pessoais, shells padrão, o nome completo do usuário (e número do escritório etc. - vejaman finger
) . Portanto, a parte sensível, os hashes da senha, foram movidos para/etc/shadow
o restante, e o restante permaneceu como estava. É por isso que/etc/passwd
, apesar do nome, contém tudo, exceto a senha (com hash).fonte