authorized_keys para vários usuários chrooted com o mesmo diretório inicial

4

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

Eu tentei adicionar um AuthorizedKeysFile em sshd_config com vários caminhos de arquivo e recebi o erro garbage at end of line .

Eu tentei adicionar um AuthorizedKeysFile em sshd_config no bloco de correspondência 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 é diferente do caminho real para desenvolvimento.

Alguma sugestão de como resolvê-lo? Posso ter que atualizar o OpenSSH para uma versão mais recente que suporte várias entradas para AuthorizedKeysFile (acho que tenho que criá-lo com rpm)? E as atualizações de segurança depois?

    
por hellcode 26.05.2017 / 12:08

1 resposta

11

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

De man sshd_config :

AuthorizedKeysFile

Specifies the file that contains the public keys that can be used for user authentication. The format is described in the AUTHORIZED_KEYS FILE FORMAT section of sshd(8). AuthorizedKeysFile may contain tokens of the form %T which are substituted during connection setup. The following tokens are defined: %% is replaced by a literal %, %h is replaced by the home directory of the user being authenticated, and %u is replaced by the username of that user. After expansion, AuthorizedKeysFile is taken to be an absolute path or one relative to the user's home directory. Multiple files may be listed, separated by whitespace. Alternately this option may be set to none to skip checking for user keys in files. The default is .ssh/authorized_keys .ssh/authorized_keys2.

Ênfase minha.

Então você pode definir:

AuthorizedKeysFile    .ssh/%u_authorized_keys

Em seguida, para o usuário foo , crie um authorized_keys file .ssh/foo_authorized_keys .

Uma nota sobre permissões

Em man sshd :

~/.ssh/authorized_keys
...
If this file, the ~/.ssh directory, or the user's home directory are writable by other users, then the file could be modified or replaced by unauthorized users. In this case, sshd will not allow it to be used unless the StrictModes option has been set to no.

Portanto, pode ser necessário colocar as chaves fora de .ssh/ ou definir StrictModes a no . Se você definir StrictModes para no , verifique se outro usuário não pode criar um authorized_keys para outra pessoa ou exclua as chaves autorizadas do outro usuário. Provavelmente melhor fazer algo como:

AuthorizedKeysFile    .ssh_%u/authorized_keys

Crie um diretório .ssh_foo/ para o usuário foo , que somente foo pode ler / escrever.

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

AuthorizedKeysFile    .ssh/authorized_keys    .ssh_%u/authorized_keys

Isso permitirá que a forma "normal" de authorized_keys continue funcionando, e um arquivo authorized_keys deve ser de propriedade do usuário e ter permissões corretas ou será ignorado. Ainda considere que não deve ser possível criar um arquivo authorized_keys para outro usuário, o que poderia significar tocar o arquivo como raiz, de modo que fique vazio.

    
por 26.05.2017 / 12:56