>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
C

O que usar no lugar do OpenSSH em dispositivos de baixo consumo e roteadores

Quando você está construindo uma imagem minimalista para um microcontrolador, roteador ou container Docker, cada megabyte de memória se torna um luxo. O OpenSSH completo funciona muito bem em servidores, mas para sistemas embarcados parece um caminhão parando em uma vendinha. Ele arrasta consigo uma série de dependências, e a RAM literalmente evapora diante dos seus olhos.

Em situações assim, as pessoas recorrem ao Dropbear. É um servidor e cliente SSH compacto escrito por Matt Johnston. O projeto surgiu há mais de vinte anos, mas ainda é mantido ativamente e serve como o padrão padrão no OpenWrt e no firmware de dispositivos de rede.

O que está por dentro e como a economia é alcançada

Dropbear resolve uma tarefa específica: economizar espaço em disco e RAM mantendo a segurança básica do protocolo SSH-2. Se você compilar o projeto com as flags corretas, o binário resultante ocupa apenas algumas centenas de kilobytes.

O desenvolvedor aplicou o conceito de um único binário multiuso, similar ao funcionamento do utilitário BusyBox. Nesse modo, um único arquivo gerencia as funções de servidor, cliente dbclient, gerador de chaves dropbearkey e conversor dropbearconvert. Você cria links simbólicos com os nomes necessários apontando para um único binário, e o programa determina seu modo de operação baseado no nome do arquivo chamado.

Aqui estão mais algumas técnicas para reduzir o tamanho:

  • O cliente embutido scp é compilado sem barra de progresso de transferência de arquivos por padrão. Se você precisar de um indicador, terá que passar explicitamente o parâmetro SCPPROGRESS=1 durante a compilação.
  • No arquivo options.h, você pode desabilitar manualmente algoritmos de criptografia não utilizados, redirecionamento de portas ou suporte a autenticação por senha, reduzindo ainda mais o tamanho final do arquivo.

Nuances do manuseio de chaves

Se você está acostumado com as ferramentas padrão do OpenSSH, o projeto vai apresentar algumas surpresas. No lado do servidor, tudo é familiar: o arquivo ~/.ssh/authorized_keys funciona da maneira padrão. Você adiciona chaves públicas nos formatos ssh-rsa ou ssh-ed25519. O principal é garantir que seu editor não divida a string da chave em várias linhas, e que as permissões no diretório .ssh permitam escrita apenas para o proprietário.

No lado do cliente e ao gerar chaves de host, as peculiaridades começam. O utilitário usa seu próprio formato para chaves privadas. Para usar sua chave ~/.ssh/id_rsa familiar no cliente dbclient, você precisará convertê-la primeiro:

dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db user@remotehost

Se você criar uma nova chave através do utilitário nativo dropbearkey, as partes privada e pública são exibidas diretamente no console. Você pode extrair a chave pública para adicionar a outro servidor com uma filtragem simples:

./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub

Iniciando o servidor e armadilhas

Normalmente, antes de iniciar o servidor SSH, você precisa gerar manualmente as chaves de host:

./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key

Dropbear tem um truque conveniente para inicialização rápida do sistema. Em vez de gerar chaves na inicialização (o que retarda a inicialização em processadores fracos), você passa a flag -R para o servidor. Nesse caso, as chaves serão criadas automaticamente no diretório /etc/dropbear/ apenas na primeira conexão recebida.

Ao operar, tenha em mente as peculiaridades do projeto:

  • Executar o servidor como usuário comum é bastante restrito. Você não poderá alocar um pseudo-terminal (pty), mudar para outra conta ou usar senhas shadow.
  • Chaves de host criptografadas com senha não são suportadas diretamente, embora o cliente possa se conectar a um ssh-agent em execução.
  • O projeto carece de documentação detalhada. As principais instruções estão espalhadas nos arquivos de texto INSTALL.md, MULTI.md e SMALL.md na raiz do repositório.

Quem achará essa ferramenta útil

Dropbear será útil se você estiver criando firmware personalizado para roteadores, desenvolvendo um dispositivo baseado em Linux com memória flash limitada ou construindo uma imagem initramfs compacta. Em um servidor completo com dezenas de gigabytes de memória, você dificilmente notará qualquer diferença em relação ao OpenSSH. Mas onde cada kilobyte conta, essa ferramenta conserva recursos melhor que a maioria das alternativas.

Projetos relacionados