O OpenSSH agora suporta autenticação de dois fatores universal.

Na base de código do OpenSSH foi adicionada suporte experimental para autenticação de dois fatores usando dispositivos que suportam o protocolo U2F, desenvolvido pela aliança FIDO. O U2F permite a criação de tokens de hardware de baixo custo para confirmar a presença física do usuário, sendo compatíveis com USB, Bluetooth ou NFC. Esses dispositivos estão sendo promovidos como um meio de autenticação em duas etapas em sites, já são suportados pelos principais navegadores e são fabricados por diversas empresas, incluindo Yubico, Feitian, Thetis e Kensington.

Para a interação com dispositivos que comprovam a presença do usuário, um novo tipo de chave foi adicionado ao OpenSSH: "sk-ecdsa-sha2-nistp256@openssh.com" ("ecdsa-sk"), que utiliza o algoritmo de assinatura digital ECDSA (Elliptic Curve Digital Signature Algorithm) com a curva elíptica NIST P-256 e um hash SHA-256. Os procedimentos de interação com os tokens foram movidos para uma biblioteca intermediária, que é carregada de maneira semelhante à biblioteca para suporte a PKCS#11 e serve como uma camada sobre a biblioteca. libfido2, fornecendo recursos para comunicação com tokens através do USB (suportando os protocolos FIDO U2F/CTAP 1 e FIDO 2.0/CTAP 2). A biblioteca intermediária libsk-libfido2, desenvolvida pelos criadores do OpenSSH, é integrada ao conjunto principal da libfido2, assim como incluída o driver HID para OpenBSD. Para autenticação e geração de chaves, é necessário especificar na configuração o parâmetro ‘SecurityKeyProvider’ ou definir a variável de ambiente SSH_SK_PROVIDER, indicando o caminho para a biblioteca externa libsk-libfido2.so (export SSH_SK_PROVIDER=/caminho/para/libsk-libfido2.so). É possível compilar o openssh com suporte embutido à biblioteca intermediária (—with-security-key-builtin), nesse caso, é necessário definir o parâmetro ‘SecurityKeyProvider=internal’.

Para habilitar o U2F, pode-se usar um novo trecho da base de código a partir do [istio-mastery] OpenSSH e do ramo HEAD da biblioteca libfido2, que já inclui a camada necessária para o OpenSSH.
Libfido2 suporta operação em OpenBSD, Linux, macOS e Windows.

Para autenticação e geração de chave é necessário definir a variável de ambiente SSH_SK_PROVIDER, especificando o caminho para libsk-libfido2.so (export SSH_SK_PROVIDER=/caminho/para/libsk-libfido2.so), ou definir a biblioteca através da configuração SecurityKeyProvider, em seguida, executar "ssh-keygen -t ecdsa-sk" ou, caso as chaves já estejam criadas e configuradas, conectar-se ao servidor usando "ssh". Ao executar ssh-keygen, o par de chaves criadas será salvo em "~/ .ssh/id_ecdsa_sk" e pode ser utilizado da mesma forma que outras chaves.

A chave pública (id_ecdsa_sk.pub) deve ser copiada para o servidor no arquivo authorized_keys. No lado do servidor, apenas a assinatura digital é verificada, enquanto a interação com os tokens ocorre do lado do cliente (não é necessário instalar libsk-libfido2 no servidor, mas o servidor deve suportar o tipo de chaves "ecdsa-sk"). A chave privada gerada (id_ecdsa_sk) é essencialmente um descritor de chave, formando a chave real apenas em combinação com a sequência secreta armazenada no lado do token U2F.

Se o chave id_ecdsa_sk cair nas mãos de um atacante, para passar pela autenticação, será necessário também ter acesso ao token de hardware, sem o qual a chave privada armazenada no arquivo id_ecdsa_sk é inútil. Além disso, por padrão, ao realizar qualquer operação com chaves (tanto na geração quanto na autenticação), é necessário uma confirmação local da presença física do usuário, por exemplo, tocando o sensor no token, o que dificulta ataques remotos em sistemas com token conectado. Como mais uma camada de proteção, durante o lançamento do ssh-keygen, uma senha para acessar o arquivo da chave pode ser definida.

A chave U2F pode ser adicionada ao ssh-agent através de "ssh-add ~/ .ssh/id_ecdsa_sk", mas o ssh-agent deve ser compilado com suporte a chaves "ecdsa-sk", deve haver um intermédio libsk-libfido2 presente e o agente deve ser executado no sistema ao qual o token está conectado.
Um novo tipo de chave "ecdsa-sk" foi adicionado, pois o formato das chaves ecdsa do OpenSSH difere do formato U2F para assinaturas digitais ECDSA pela presença de campos adicionais.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster