autorizado_keys para vários usuários com chroot com o mesmo diretório inicial

autorizado_keys para vários usuários com chroot com o mesmo diretório inicial

Estamos executando o CentOS 6.9 com OpenSSH_5.3p1 e criamos contas chroot para usuários externos com o mesmo diretório inicial (montado em htdocs). O problema é que o arquivo .ssh/authorized_keys2pertence ao primeiro usuário (e isso já funciona). Como posso fazer isso funcionar para outro usuário?

Tentei adicionar um AuthorizedKeysFilesshd_config com vários caminhos de arquivo e recebi o erro garbage at end of line.

Tentei adicionar um AuthorizedKeysFilein sshd_configno bloco match do segundo usuário e recebi o erro 'AuthorizedKeysFile' is not allowed within a Match block.

Não consigo alterar o diretório inicial porque, caso contrário, o caminho será diferente do caminho real de desenvolvimento.

Alguma sugestão de como resolver isso? Posso ter que atualizar o OpenSSH para uma versão mais recente que suporte múltiplas entradas AuthorizedKeysFile(acho que preciso construí-lo com rpm)? E as atualizações de segurança depois?

Responder1

Uma opção é usar tokens para fornecer a cada usuário um authorized_keysarquivo exclusivo.

Dehomem sshd_config:

AuthorizedKeysFile

Especifica o arquivo que contém as chaves públicas que podem ser usadas para autenticação do usuário. O formato é descrito na seção AUTHORIZED_KEYS FILE FORMAT do arquivo sshd(8). AuthorizedKeysFile pode conter tokens no formato %Tque são substituídos durante a configuração da conexão. Os seguintes tokens são definidos: %%é substituído por um literal %, %hé substituído pelo diretório inicial do usuário que está sendo autenticado e%ué substituído pelo nome de usuário desse usuário. Após a expansão, AuthorizedKeysFileé considerado um caminho absoluto ou relativo ao diretório inicial do usuário. Vários arquivos podem ser listados, separados por espaços em branco. Como alternativa, esta opção pode ser definida para noneignorar a verificação de chaves de usuário nos arquivos. O padrão é .ssh/authorized_keys .ssh/authorized_keys2.

Ênfase minha.

Então você pode definir:

AuthorizedKeysFile    .ssh/%u_authorized_keys

Então, para o usuário, foocrie um authorized_keysarquivo .ssh/foo_authorized_keys.

Uma nota sobre permissões

Decara:

~/.ssh/authorized_keys
...
Se este arquivo, o ~/.sshdiretório ou o diretório inicial do usuário puderem ser gravados por outros usuários, o arquivo poderá ser modificado ou substituído por usuários não autorizados. Neste caso, o sshd não permitirá que ele seja usado, a menos que a StrictModes opção tenha sido definida como no.

Portanto, você pode precisar colocar as chaves do lado de fora .ssh/ou definir StrictModescomo no. Se você definir StrictModespara nogarantir que outro usuário não possa criar um authorized_keyspara outra pessoa ou excluir as chaves autorizadas do outro usuário. Provavelmente é melhor fazer algo como:

AuthorizedKeysFile    .ssh_%u/authorized_keys

Crie um diretório .ssh_foo/para user foo, que só foopossa ler/gravar.


Você pode escolher se deseja permitir também .ssh/authorized_keysusando

AuthorizedKeysFile    .ssh/authorized_keys    .ssh_%u/authorized_keys

Isso permitirá que a forma "normal" authorized_keysainda funcione, e um authorized_keysarquivo deve pertencer ao seu usuário e ter as permissões corretas ou será ignorado. Ainda considere que não deveria ser possível criar um authorized_keysarquivo para outro usuário, o que poderia significar apenas tocar no arquivo como root para que fique vazio.

informação relacionada