SSH3: shell seguro mais rápido e rico usando HTTP/3
Tornou-se conhecido recentemente o lançamento oficial da primeira versão experimental do servidor e do cliente para o Protocolo SSH3 projetado como complemento ao protocolo HTTP3 e que utiliza QUIC (baseado em UDP), TLS 1.3 que aproveita mecanismos HTTP para autenticação do usuário, bem como para estabelecer um canal de comunicação seguro
SSH3 usa mecanismos de autorização baseados no protocolo HTTP, que permitem novos métodos de autenticação, além da autenticação clássica por meio de senha e par de chaves, e no SSH3 você pode configurar o acesso a um servidor remoto através do provedor de identidade de uma organização ou com uma conta Google ou GitHub. SSH3 é baseado em HTTP/3 e QUIC e, além do encaminhamento TCP normal, também oferece encaminhamento de porta UDP e estabelecimento de sessão mais rápido e seguro.
Sobre SSH3
Os desenvolvedores do projeto mencionam que a criação do SSH3 surgiu como resultado de uma revisão completa do protocolo SSH, realizado por um grupo independente de pesquisadores separados das equipes que trabalham em projetos como OpenSSH e outras implementações do protocolo SSH clássico. Em SSH3, a semântica do protocolo SSH clássico é implementada através de mecanismos HTTP, o que não apenas permite recursos adicionais, mas também garante que as atividades relacionadas ao SSH sejam ocultadas entre outros tráfegos, entre outras coisas, SSH3 permite as seguintes melhorias em relação ao protocolo SSH2 não poderia fornecer, bem como muitos dos recursos populares do OpenSSH:
- Estabelecimento de sessão significativamente mais rápido
- Novos métodos de autenticação HTTP, como OAuth 2.0 e OpenID Connect, além da autenticação SSH clássica.
- Analisando ~/.ssh/authorized_keys no servidor.
Analisa ~/.ssh/config no cliente e lida com as opções Hostname, User e Portconfig IdentityFile (as outras opções são atualmente ignoradas)
Autenticação de servidor baseada em certificado - Robustez contra ataques de varredura de portas: seu servidor SSH3 pode ficar invisÃvel para outros usuários da Internet
- Encaminhamento de porta UDP – Agora você pode acessar seu QUIC, DNS, RTP ou qualquer servidor baseado em UDP que só pode ser acessado a partir de seu host SSH3.
- Certificados X.509: agora você pode usar seus certificados HTTPS clássicos para autenticar seu servidor SSH3. Este mecanismo é mais seguro que o mecanismo clássico de chave de host SSHv2.
- Capacidade de ocultar o servidor atrás de um link secreto.
- Todos os recursos habilitados pelo protocolo QUIC moderno: incluindo migração de conexão e conexões multipath
- Usar automaticamente a autenticação de chave pública do agente ssh
- Encaminhamento de agente SSH para usar suas chaves locais em seu servidor remoto
- Autenticação segura de usuário sem chave usando OpenID Connect.
Para criptografar o canal de comunicação, SSH3 utiliza o protocolo TLS 1.3 e métodos tradicionais baseados em senhas e chaves públicas (RSA e EdDSA/ed25519) podem ser usados. Além disso, o SSH3 oferece a opção de utilizar métodos baseados no protocolo OAuth 2.0, permitindo que a autenticação seja transferida para provedores externos.
Outro dos Os pontos fortes do SSH3 são que ele oferece um estabelecimento de sessão significativamente mais rápido que o SSH2, Por exemplo, estabelecer uma nova sessão com SSH2 pode levar de 5 a 7 iterações de rede (ida e volta), o que o usuário pode perceber facilmente, já que o SSH3 precisa apenas de 3 iterações.
Se você estiver interessado em saber mais sobre isso, saiba que o cliente e o servidor são escritos em Go e distribuÃdos sob a licença Apache 2.0, você pode consultar os detalhes no link a seguir.
Além disso, vale ressaltar que o SSH3 ainda é experimental e seu uso não é recomendado para ambientes de produção ou crÃticos e como tal sua instalação é recomendada apenas para conhecer suas funcionalidades ou para poder testar.
Baixe e instale SSH3
Para os interessado em poder implementar um servidor SSH3 para testes, Você pode fazer isso compilando o código-fonte com Go seguindo as instruções que compartilhamos abaixo.
git clone https://github.com/francoismichel/ssh3 cd ssh3 go build -o ssh3 cmd/ssh3/main.go CGO_ENABLED=1 go build -o ssh3-server cmd/ssh3-server/main.go
Feito isso, vamos adicionar nossa variável de ambiente em .bashrc com:
export PATH=$PATH:/path/to/the/ssh3/directory
Quanto à implementação do servidor, como o SSH3 roda sobre HTTP3, é necessário um certificado que pode ser gerado com o script:
sh ./generate_openssl_selfsigned_certificate.sh
Por fim, convido você a consultar a documentação sobre o uso e implementação de funções adicionais no link a seguir