Diferença entre as permissões de diretório e arquivo neste cenário específico

1

Recentemente eu estava aprendendo a autenticação baseada em SSH para conectar a um servidor web. A postagem recomendou certas permissões de arquivo. A pasta .ssh do computador local deve ter permissão de diretório 700 e o conteúdo dentro dela, por exemplo, as chaves devem ter arquivo permissão de 640.

O que não faz sentido é se eu estou definindo permissão rwx para o proprietário e nada para o grupo e outros para o diretório, então isso significa que o grupo e outros não podem listar ou cd no diretório. ponto de definir uma permissão de 640 (ou seja, rw para o grupo e nada para os outros) para os arquivos dentro dele? O grupo ou outros não podem ler ou mover para o diretório em primeiro lugar.

    
por Souvik Ray 06.11.2017 / 18:26

1 resposta

2

Você está certo de que as permissões internas são funcionalmente irrelevantes com a estrutura de diretórios e as permissões fornecidas, mas há uma coisa que está faltando. Links rígidos compartilham permissões.

No exemplo acima, se você criar um link físico (não um link simbólico) apontando para ~/.ssh/id_rsa em outro lugar, o arquivo resultante espelhará as permissões de ~/.ssh/id_rsa e, assim, as pessoas poderão acessá-lo se o usuário tiver acesso ao diretório inicial, ou por meio do novo local.

Como resultado, o requisito de SSH é realmente menos rigoroso do que deveria ser tecnicamente (Idealmente, suas chaves privadas nesse diretório precisam ter permissões de 0600, não de 0640), mas a maioria das pessoas não sabe ou se importa links mais (eles não são extremamente úteis em comparação com links simbólicos (que podem cruzar limites do sistema de arquivos) ou reflinks (que dividirão o link em todos os casos quando um dos links for gravado).

Quanto aos outros arquivos, ainda há algum requisito de segurança. Em particular:

  • O arquivo .ssh/authorized_keys contém informações sobre quais outras chaves públicas você também tem acesso.
  • O arquivo .ssh/known_hosts contém informações sobre a quais sistemas você se conectou (o OpenSSH fornece funcionalidade para proteger isso sem permissões usando um hash unidirecional nos nomes de host e endereços IP).
  • As partes públicas de suas chaves podem ser usadas para combinar com .ssh/authorized_keys em outros sistemas para associar contas ou, em teoria, para atacar sua chave privada (embora este segundo caso seja principalmente teórico, a menos que você esteja lidando com um governo adversário nível).

Todos esses arquivos podem ser usados para descobrir outros locais potenciais para roubar suas informações e, portanto, devem ser idealmente protegidos.

    
por 06.11.2017 / 21:07