SSH + servidor de autoridade de certificação?

5

É possível configurar o SSH (via pam, por exemplo) para verificar a chave pública do cliente conectado em um servidor de CA? Eu tentei com gnupg (via gpg-agent --daemon --enable-ssh-support ) e também tentei trabalhar com OpenCA, que provou ser um desafio apenas para instalar. Além disso, a documentação é horrível quando se trata de ambos.

O que eu gostaria de realizar é algo como:

[Client] --SSH--> "Server" <---> [CA Server]

Toda a plataforma é baseada em * nix e estou aberto a sugestões agora porque estou preso a isso há algum tempo.

GnuPG

Configurei o mais simples possível seguindo estes guias:

Meu pensamento inicial foi configurar o meu próprio "servidor de chaves", que gpg pode enviar e checar por chaves, mas não há nenhuma informação sobre isso que possa existir (ou pelo menos nenhuma que eu possa encontrar).

E pelo que eu entendo, eu deveria ser capaz de fazer ssh-add -l para listar todas as minhas chaves, mas isso me dá: The agent has no identities. , o que não é tão estranho porque eu nunca especifiquei onde buscá-las, mas apenas trabalhe "(...?).

O gpg.conf se parece com:

... lots of default ...
personal-digest-preferences SHA512
cert-digest-algo SHA512
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
homedir /etc/gnupg
use-agent

e meu gpg-agent.conf :

pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 10800
default-cache-ttl-ssh 10800
write-env-file /etc/gnupg/.gpg-agent-info
enable-ssh-support

E só para verificar se eu tenho uma chave e o gpg está respondendo:

~]# gpg --list-keys
/etc/gnupg/pubring.gpg
----------------------
pub    4096R/#######2 2013-12-10 [expired: 2014-12-10]
uid                   Anton (...) <mail>
sub    4096R/#######5 2013-12-10 [expires: 2014-12-10]

OpenCA

Quando finalmente tudo estava no lugar e começamos, chego a um site que diz que meu "comprimento de sinal simétrico é muito curto" e não consigo passar por isso.

    
por Torxed 11.12.2013 / 09:44

1 resposta

3

Eu sei que esta é uma questão muito antiga. No entanto, existem duas respostas para sua pergunta.

Como o GPG funciona com o SSH.

Você fez o primeiro passo, habilitando o ssh-support em seu gpg-agent.conf

Mas você não forneceu nenhuma chave PGP para usar. Para usar chaves PGP com ssh, você precisa exportar a chave pública no formato ssh e adicioná-la ao arquivo ~ / .ssh / authorized_keys do seu host remoto. Em seguida, adicione o keygrip da chave privada ao arquivo ~ / .gnupg / sshcontrol.

Para exportar uma chave pública PGP como ssh:

$gpg -a --export-ssh-key [keyid]

Para ver um keygrip de PGP:     $ gpg --with-keygrip --list-secret-keys [keyid]

Eu costumo criar uma subchave adequada para uso com o SSH. Se você estiver usando o GPG 2.2.1, então você pode usar o ED25519.

$gpg --expert --edit-key [keyid]
    gpg> addkey
        Option 11 for ECC
        Option A to add authentication
        Option 1 for Curve 25519
        Expire never
        Create yes
    gpg> save

Em seguida, exporte apenas a subchave de autenticação:

$gpg -a --export-ssh-key [auth subkeyid]!

O ponto de exclamação seleciona apenas a subchave indicada.

Você também precisará garantir que as variáveis de ambiente estejam definidas em seu ~ / .bashrc ... Se você estiver executando um cliente Xwindow, isso geralmente é feito para você via /etc//X11/Xsession.d/90gpg -agent com o seguinte script bash:

agent_sock=$(gpgconf --list-dirs agent-socket)
export GPG_AGENT_INFO=${agent_sock}:0:1
if [ -n "$(gpgconf --list-options gpg-agent | \
      awk -F: '/^enable-ssh-support:/{ print $10 }')" ]; then
    export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
fi

Uma vez que você tenha assegurado que as variáveis de ambiente estão definidas, qualquer keygrip adicionado ao arquivo ~ / .gnupg / sshcontrol aparecerá como chaves de autenticação no ssh-agent quando você listar as identidades disponíveis:

$ssh-add -l

Note que você pode alterar o hash mostrado através da opção -E para mostrar MD5 ou SHA256.

Configurando o SSH para usar certificados

Esta é uma questão bastante complexa. A Red Hat tem um detalhado passo a passo aqui:

Redhat SSH CA Tutorial

Fim

Não está claro se é possível usar chaves PGP como chaves CA SSH. Eu não tentei isso sozinho. No entanto, eu uso chaves PGP no lado do cliente. Eu acho que isso torna a vida muito fácil e é menos complicado gerenciar identidades SSH do que usar chaves geradas por ssh-genkey.

    
por 22.10.2017 / 20:17