Primeiro, o RedHat (e variantes) têm um patch suportado para o OpenSSH que adiciona as opções AuthorizedKeysCommand
e AuthorizedKeysCommandRunAs
. O patch foi mesclado a montante no openssh 6.2. Para citar a partir da página de manual :
AuthorizedKeysCommand
Especifica um programa a ser usado para procurar as chaves públicas do usuário. O programa será chamado com seu primeiro argumento, o nome do usuário que está sendo autorizado, e deve produzir nas linhas AuthorizedKeys de saída padrão (consulte AUTHORIZED_KEYS no sshd (8)). Por padrão (ou quando definido como a sequência vazia), não há execução de AuthorizedKeysCommand. Se o AuthorizedKeysCommand não autorizar o usuário com êxito, a autorização recairá no AuthorizedKeysFile. Observe que essa opção tem efeito apenas com o PubkeyAuthentication ativado.
AuthorizedKeysCommandRunAs
Especifica o usuário em cuja conta o AuthorizedKeysCommand é executado. String vazia (o valor padrão) significa que o usuário que está sendo autorizado é usado.
Em meus experimentos hoje à noite, descobri que, fora da caixa, isso não funciona devido às políticas padrão do SELinux. Você pode contornar isso desativando a aplicação do SELinux com setenforce 0
. Como a desativação do SELinux provavelmente é uma má idéia, você pode gerar a política correta. No meu caso, isso foi tão simples quanto tentar fazer login com a AuthorizedKeysCommand
opção configurada /etc/ssh/sshd_config
e depois usá-la audit2allow -a -M local && semodule -i local.pp
. Basicamente, ele examina os logs de auditoria e encontra coisas que foram impedidas e gera exceções para eles. Se é provável que você tenha outras coisas que possam ser incluídas na lista de permissões, você provavelmente deve aprender mais sobre audit2allow
como obter as novas políticas corretamente.