ssh e permissões do diretório inicial

5

sshd se recusará a aceitar a autenticação de chave pública se o diretório pessoal do usuário for acessível por grupo, mesmo que ~/.ssh esteja definido como 700? Se as permissões em ~/.ssh forem aceitáveis, por que as permissões em ~ importam?

    
por Blacklight Shining 25.08.2012 / 07:45

2 respostas

6

Eu acho que a razão é que se o seu diretório home é gravável por outra pessoa, então um usuário mal-intencionado pode criar ~/.ssh , adicionar as chaves desejadas e depois alterar as permissões para 700.

Mesmo que você já tenha um ~/.ssh , ele pode simplesmente ser renomeado para outra e criado um novo.

No entanto, em sistemas modernos, esse truque geralmente não é possível devido a chown funcionando apenas para o superusuário, isso nem sempre tem sido o caso:

In earlier versions of UNIX, all users could run the chown command to change the ownership of a file that they owned to that of any other user on the system. (http://www.diablotin.com/librairie/networking/puis/ch05_07.htm)

Se o chmod se comporta de uma forma ou de outra, depende das opções de compilação da libc , e por razões de segurança, o servidor OpenSSH é um pouco paranóico.

    
por 25.08.2012 / 08:39
6

Ok, para corrigir isso, você pode seguir a rota insegura e definir StrictModes no no seu /etc/ssh/sshd_config , como já mencionado, ou você pode seguir o caminho complicado e armazenar as chaves ssh para todos os usuários em um diretório acessível para raiz só. Aqui estão os passos para o último:

  1. Crie um diretório para guardar as novas chaves. Aqui vamos usar /usr/share/sshkeys , que pode não ser o melhor lugar, mas o melhor que consigo pensar fora da minha cabeça.

    sudo mkdir /usr/share/sshkeys
    
  2. Edite /etc/ssh/sshd_config para incluir a linha

    AuthorizedKeysFile /usr/share/sshkeys/%u
    
  3. Copie o antigo arquivo de chave autorizado do seu usuário (aqui chamado "exampleuser") para o novo diretório

    mv /home/exampleuser/.ssh/authorized_keys /usr/share/sshkeys/exampleuser
    
  4. (Opcional, mas recomendado, já que exampleuser espera poder adicionar chaves da maneira usual) Vincule o novo arquivo de chaves ao local do antigo e dê ao usuário acesso ao novo arquivo de chave

    sudo chown exampleuser /usr/share/sshkeys/exampleuser
    sudo chmod 600 /usr/share/sshkeys/exampleuser
    ln -s /usr/share/sshkeys/exampleuser /home/exampleuser/.ssh/authorized_keys
    
  5. Reinicie o daemon ssh

    sudo service sshd restart
    
por 24.01.2013 / 19:42