Qual é o propósito dos arquivos de cache / etc / shadow e shadow no sistema operacional Linux?

7

Qual é o propósito do arquivo / etc / shadow no sistema operacional Linux? Além disso, é o mesmo para os clientes do SUSE? Há um arquivo de cache de sombra é mantido qual é o propósito disso?

    
por Ashitosh 06.02.2011 / 11:51

4 respostas

14

Desde o início, os sistemas operacionais Unix e Unix (incluindo o Linux) sempre armazenaram senhas como hashes criptográficos (1). Esses hashes foram originalmente armazenados em /etc/passwd , mas esse arquivo precisava ser legível para disponibilizar as informações para outros fins - até mesmo um simples ls -l precisa ler /etc/passwd para converter o ID do usuário numérico de cada proprietário de arquivo ao seu nome de usuário para exibição. No entanto, ter as senhas com hash em um arquivo legível para o mundo permitiu que usuários mal-intencionados obtivessem facilmente esses hashes e tentassem gerar senhas úteis (2) para as contas de outros usuários.

Para evitar isso, as senhas hash foram eventualmente movidas para um arquivo legível somente pelo root (e ocasionalmente um grupo privilegiado de administradores), /etc/shadow . Isso oculta os hashes dos usuários normais do sistema, mantendo-os disponíveis para fins de autenticação do usuário.

Notas :

  1. Pedante, eu sei, mas as senhas armazenadas não são criptografadas . Eles são criptografados usando um algoritmo hash criptograficamente seguro (pelo menos a partir do momento em que foi escrito). As principais distinções relevantes aqui são que os hashes são de comprimento fixo (a duração do texto criptografado varia com base na duração do texto que foi criptografado) e não reversível (o texto criptografado pode ser descriptografado; o texto com hash não pode).

  2. Como os hashes são de comprimento fixo, há um número infinito de entradas que corresponderão a qualquer representação com hash. Um invasor pode, portanto, encontrar uma senha de trabalho que não seja necessariamente igual à senha do usuário proprietário - embora isso seja muito improvável, dado o tamanho dos hashes de criptografia modernos.

por 06.02.2011 / 12:19
6

O arquivo /etc/shadow foi criado por motivos de segurança e contém a senha criptografada de cada usuário.

Originalmente, a senha criptografada era armazenada em /etc/passwd . /etc/passwd tinha que ser legível em todo o mundo para que o sistema pudesse mapear userids para nomes de usuário e para que os usuários pudessem descobrir informações um sobre o outro, por exemplo, o diretório pessoal do outro usuário ou seu número de telefone, que era tradicionalmente armazenado no campo "gecos" e exibido pelo utilitário "finger".

Mas as pessoas perceberam que isso era um problema de segurança. Qualquer pessoa com tempo suficiente poderia fazer o que é chamado de ataque de força bruta , gerando senhas criptografadas programaticamente para cada senha possível. Se o invasor fez isso sem realmente tentar efetuar login via telnet ou ssh , o sistema não poderia saber que estava sendo atacado.

Assim, a senha criptografada foi movida para o recém-criado /etc/shadow , que pode ser lido apenas pelo usuário root.

Ele também contém outras informações que o arquivo /etc/passwd não oferece suporte relacionado à conta e senha do usuário, por exemplo, quando a senha foi alterada pela última vez e quando ela expirará.

Veja man 5 shadow ( versão web ) para detalhes completos sobre o formato do arquivo.

Eu não posso dizer se é o mesmo para o SUSE, sem saber com qual versão do SUSE você está lidando. Por exemplo, seu sistema SUSE pode usar Blowfish em vez de MD5.

Você também insinuou que estava mixando seu arquivo /etc/shadow com um sistema executando uma distribuição Linux diferente, mas não disse qual era a outra distribuição.

Veja Problemas ao migrar arquivos shadow do SuSE 9.3 para o Ubuntu Server x86_64 por exemplo.

Para tentar descobrir, abra /etc/shadow e veja se o campo de senha criptografada começa com $1$ ou $2$ . Se contiver $1$ , então é MD5 e compatível com a maioria das outras distribuições. Se ele contém $2$ , então é provavelmente o Blowfish de acordo com arquivos shadow do Blowfish no Debian .

Se você estiver usando o Ubuntu, o primeiro resultado de pesquisa do Google para o blowfish do Ubuntu pode ser um bom ponto de partida.

    
por 06.02.2011 / 12:00
3

Os usuários estão listados no arquivo /etc/passwd . Este arquivo contém muitas informações usadas pelo systemm, não apenas para permitir que os usuários efetuem login.

Cada linha corresponde a uma entrada do usuário e campos diferentes são separados por dois pontos. O primeiro arquivado é o login, seguido pela senha correspondente.

As senhas criptografadas costumavam ser armazenadas nesse campo. No entanto, o arquivo /etc/passwd precisa ser legível por todos no sistema, portanto, a criptografia não evita ataques de força bruta, como foi dito por @Mikel. A solução foi mover essas senhas criptografadas no arquivo somente legível: /etc/shadow .

Assim, /etc/shadow contém as senhas criptografadas dos usuários do sistema. O sistema sabe que precisa verificar as senhas neste arquivo quando os campos de senha em /etc/passwd contêm um x sozinho (significando " cruz para / etc / shadow")

    
por 06.02.2011 / 11:53
0

Vamos ver se consigo obter todas as votações do mundo, já que escrevi o que se tornou o Linux Shadow Password Suite em 87;)

O arquivo /etc/passwd original continha um hash baseado em DES modificado da senha do texto não criptografado. No momento em que a função crypt() foi criada, acreditava-se (e isso foi declarado pelos criadores do sistema operacional UNIX) que os ataques contra o hash de senha seriam inviáveis, devido ao número de senhas possíveis e ao uso de um 12 bits (4.096 valores possíveis) "sal". Cada senha de texto não criptografado possuía 4.096 possíveis valores com hash, e com 64 bits de resultado com hash, o que dava um total de 2 ^ 72 possíveis hashes de senha.

Como outro pôster mencionado, /etc/passwd também foi usado por vários utilitários para mapear entre nomes de usuário e valores de UID (o arquivo /etc/group fornece a função análoga para grupos) e isso exigia que fosse legível pelo mundo.

Na década de 1980, tornou-se óbvio que ataques de dicionário contra o hash de senhas armazenados no arquivo /etc/passwd estavam se tornando viáveis e /etc/shadow foi introduzido no AT & T UNIX em uma versão anterior do System V. Eu documentava quais manpages eu usado para escrever a biblioteca Shadow original, e desde então eu esqueci, mas foi definitivamente uma versão anterior do System V, provavelmente SVR3.2.

O que a AT & T fez, e o que eu implementei para o SCO Xenix (o SCO Xenix original, em vez do malvado SCO Xenix) em 87 que acabou sendo usado no Linux, simplesmente movi a senha com hash para /etc/shadow . Isso impediu o ataque drive-by, em que um usuário não privilegiado adquiriu uma cópia de /etc/passwd e executou um ataque contra ela. Se você está familiarizado com o porquê eu escrevi o Shadow em primeiro lugar, eu mandei um usuário fazer o download do meu arquivo /etc/passwd via UUCP nos dias em que ainda usamos o UUCP para praticamente tudo.

No momento em que o Linux foi criado e entrou em uso disseminado, havia um grande número de ferramentas para atacar hashes de senha. Reimplementações de alto desempenho de crypt() foram uma avenida, e ataques baseados em dicionário através de ferramentas como Crack e libcrack foram outros. A porta inicial foi feita por Nate Holloway e Floria La Roche (dei-lhes crédito, não sei se alguém fez o trabalho antes deles).

Eventualmente, o uso de hashes baseados em crypt() , mesmo em um arquivo protegido, não era mais seguro e as alterações hash originais baseadas em MD5 foram feitas. MD5 foi considerado muito fraco e novos hashes foram usados.

Em teoria, um hash suficientemente strong poderia ser armazenado em /etc/passwd . Má segurança operacional significa que muitos sistemas têm seus arquivos /etc/shadow disponíveis através de vários vetores de ataque - "Eu roubei os arquivos de backup" é provavelmente o mais fácil.

    
por 21.03.2016 / 18:44

Tags