Yubikey #4 - Openssh com yubikey + ed25519

Yubikey #4 - Openssh com yubikey + ed25519

Usando Yubikey para gerar chaves seguras e logar via SSH

Subscribe to my newsletter and never miss my upcoming articles

Listen to this article

Gerar chave para ssh

No OpenSSH (a partir do 8.2, lançado em 2020), os dispositivos U2F/FIDO são suportados usando os tipos de chave pública "ecdsa-sk" e "ed25519-sk" (FIDO2, YubiKeys com firmware acima da versão 5.2.3) e seus certificados.

O sk é "Security Key".

Para descobrir qual a versão do firmware da sua chave Yubikey:

lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

Acima do 5.2.3 já possui suporte ao FIDO2 =)

A vantagem em usar o Yubikey para gerar suas chaves é que você obterá um par de chaves pública/privada normalmente, porém, o arquivo de chave privada não contém uma chave privada altamente sensível, em vez disso, contém um "identificador de chave" (key handle) que é usado pela Yubikey (chave de segurança) para derivar a chave privada real na hora da assinatura.

Ou seja, além de possuir o usuário, hostname/IP e a chave, ao tentar fazer o login via SSH será necessário informar a passphrase (caso cadastrou alguma quando gerou a chave) e logo após será preciso inserir o token da yubikey para somente depois (caso tudo correto), ter acesso remoto ao host.

ssh user@host.name.ou.ip -i .ssh/id_ed25519_sk [+ passphrase] [+token-yubikey]

Mesmo vazando a chave, não será o suficiente para ter acesso ao host (mesmo que tenha conhecimento de qual o username).

ECDSA (Elliptic Curve Digital Signature Algorithm) possui vulnerabilidades, logo, use o ed25519

O RSA de 4096 bits tem a complexidade comparável ao Ed25519. Mas o Ed25519 ainda é preferido ao RSA devido à preocupação de que o RSA possa ser vulnerável às mesmas preocupações de força do DSA, embora a aplicação desse exploit ao RSA deva ser consideravelmente mais difícil.

Somente mês passado (17/Agosto) a AWS passou a aceitar ed25519 nas EC2. Antes, somente RSA.

ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
# Ou
ssh-keygen -t ed25519-sk -f ~/.ssh/id_ed25519_sk

Peek 05-10-2021 16-58.gif

Depois de gerar as chaves, adicione a chave publica gerada (.pub) no authorized_keys do servidor e/ou adicione a chave via agent do ssh (ssh-agent, ssh-add, ...)

Para forçar o servidor SSH a receber apenas logins usando a chave gerada via Yubikey com a ecdsa e ed25519, adicione no /etc/ssh/sshd_config do servidor:

PubkeyAcceptedKeyTypes sk-ecdsa-sha2-nistp256@openssh.com,sk-ssh-ed25519@openssh.com
# Ou somente ed25519:
# PubkeyAcceptedKeyTypes sk-ssh-ed25519@openssh.com
 
Share this
Proudly part of