Após quatro meses de desenvolvimento Lançamento do OpenSSH 8.4, uma implementação aberta de cliente e servidor para operação com os protocolos SSH 2.0 e SFTP.
Principais mudanças:
- Mudanças relacionadas à segurança:
- No ssh-agent, ao usar chaves FIDO que não foram criadas para autenticação via SSH (o identificador da chave não começa com a string «ssh:»), agora é verificado que a mensagem será assinada usando os métodos aplicados no protocolo SSH. Essa alteração impedirá o redirecionamento do ssh-agent para hosts remotos que possuem chaves FIDO, bloqueando a possibilidade de usar essas chaves para gerar assinaturas de solicitações de autenticação web (o caso inverso, onde o navegador pode assinar uma solicitação SSH, foi inicialmente excluído pela aplicação do prefixo «ssh:» no identificador da chave).
- No ssh-keygen, ao gerar uma chave residente, foi adicionada a compatibilidade com a extensão credProtect, descrita na especificação FIDO 2.1, que fornece proteção adicional para chaves através da exigência obrigatória de inserção de PIN antes de qualquer operação que possa levar à extração da chave residente do token.
- Mudanças que podem interromper a compatibilidade:
- Para suporte a FIDO/U2F, é recomendado usar a biblioteca libfido2 na versão 1.5.0 ou superior. Foi parcialmente implementada a capacidade de usar versões anteriores, mas nesse caso, recursos como chaves residentes, solicitação de PIN e conexão de múltiplos tokens estarão indisponíveis.
- No ssh-keygen, o formato da informação de confirmação, opcionalmente salva ao gerar a chave FIDO, agora inclui dados do autenticador necessários para verificar as assinaturas digitais de confirmação.
- A API utilizada na interação do OpenSSH com a camada de acesso aos tokens FIDO foi alterada.
- Ao compilar a versão portátil do OpenSSH, agora é necessário o automake para formar o script configure e os arquivos de compilação associados (se a compilação for feita a partir de um arquivo tar publicado com o código, a regeneração do configure não é necessária).
- No ssh e ssh-keygen, foi adicionada a compatibilidade com chaves FIDO que requerem confirmação por meio de um PIN. Para gerar chaves com PIN no ssh-keygen, foi adicionada a opção «verify-required». Ao usar essas chaves, antes de realizar a operação de criação de assinatura, o usuário é solicitado a confirmar sua ação através da inserção do PIN.
- No sshd, a opção «verify-required» foi implementada na configuração authorized_keys, exigindo a verificação da presença do usuário durante as operações com o token. O padrão FIDO prevê várias opções para essa verificação, mas atualmente, no OpenSSH, apenas a verificação baseada em PIN é suportada.
- O sshd e o ssh-keygen agora suportam a verificação de assinaturas digitais que estão em conformidade com o padrão FIDO Webauthn, permitindo o uso de chaves FIDO em navegadores da web.
- No ssh, nas configurações CertificateFile,
ControlPath, IdentityAgent, IdentityFile, LocalForward e
RemoteForward, a substituição de valores de variáveis de ambiente, no formato «${ENV}», é permitida. - No ssh e ssh-agent, foi adicionada a variável de ambiente $SSH_ASKPASS_REQUIRE, que pode ser usada para habilitar ou desabilitar a chamada do ssh-askpass.
- No ssh, na configuração ssh_config, na diretiva AddKeysToAgent, foi adicionada a possibilidade de limitar a duração da chave. Após o prazo definido, as chaves são automaticamente removidas do ssh-agent.
- No scp e sftp, agora é possível explicitamente permitir o redirecionamento no scp e sftp usando o ssh-agent com a flag «-A» (por padrão, o redirecionamento é proibido).
- Nas configurações do ssh, foi adicionada a opção de substituição ‘%k’, que define o nome da chave do host. Essa funcionalidade pode ser utilizada para distribuir chaves em arquivos separados (por exemplo, «UserKnownHostsFile ~/.ssh/known_hosts.d/%k»).
- É permitida a operação «ssh-add -d -» para ler do stdin as chaves que devem ser removidas.
- No sshd, foi implementado o registro em log do início e término do processo de limitação de conexões, controlado pelo parâmetro MaxStartups.
Os desenvolvedores do OpenSSH também lembraram sobre a iminente descontinuação dos algoritmos que utilizam hashes SHA-1, devido a da eficiência de ataques de colisão com um prefixo determinado (o custo para encontrar uma colisão é estimado em cerca de 45 mil dólares). Em uma das próximas versões, planeja-se desabilitar por padrão a possibilidade de usar o algoritmo de assinatura digital com chave pública «ssh-rsa», que é mencionado no RFC original para o protocolo SSH e continua amplamente difundido na prática (para verificar a aplicação do ssh-rsa em seus sistemas, você pode tentar se conectar via ssh com a opção «-oHostKeyAlgorithms=-ssh-rsa»).
Para suavizar a transição para novos algoritmos no OpenSSH, na próxima versão, a configuração UpdateHostKeys será ativada por padrão, permitindo que os clientes sejam automaticamente migrados para algoritmos mais seguros. Entre os algoritmos recomendados para migração estão rsa-sha2-256/512 baseado na RFC8332 RSA SHA-2 (suportado desde o OpenSSH 7.2 e utilizado por padrão), ssh-ed25519 (suportado desde o OpenSSH 6.5) e ecdsa-sha2-nistp256/384/521 baseado na RFC5656 ECDSA (suportado desde o OpenSSH 5.7).
Fonte: opennet.ru
