>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C

Waarmee OpenSSH vervangen op apparaten met laag stroomverbruik en routers

Wanneer je een minimalistische image bouwt voor een microcontroller, router of Docker-container, wordt elke megabyte aan geheugen een luxe. De volledige OpenSSH werkt prima op servers, maar voor embedded systemen lijkt het op een vrachtwagen die voor een buurtwinkel stopt. Het sleept een hele reeks afhankelijkheden mee, en RAM verdwijnt letterlijk voor je ogen.

In situaties zoals deze schakelen mensen over naar Dropbear. Het is een compacte SSH-server en -client geschreven door Matt Johnston. Het project verscheen meer dan twintig jaar geleden, maar wordt nog steeds actief onderhouden en fungeert als de standaard in OpenWrt en netwerkapparaat-firmware.

Wat erin zit en hoe de besparing wordt bereikt

Dropbear lost één specifieke taak op: disk space en RAM besparen terwijl de basisbeveiliging van het SSH-2 protocol behouden blijft. Als je het project compileert met de juiste flags, neemt het resulterende binaire bestand slechts een paar honderd kilobytes in beslag.

De ontwikkelaar paste het concept van één multifunctioneel binair bestand toe, vergelijkbaar met hoe het BusyBox-hulpprogramma werkt. In deze modus verwerkt één bestand de functies van de server, client dbclient, key generator dropbearkey en converter dropbearconvert. Je maakt symbolische links met de vereiste namen die naar één binair bestand verwijzen, en het programma bepaalt zijn werkingsmodus op basis van de naam van het opgeroepen bestand.

Hier zijn nog een paar trucs om de grootte te reduceren:

  • De ingebouwde client scp wordt standaard gecompileerd zonder voortgangsbalk voor bestandsoverdracht. Als je een indicator nodig hebt, moet je expliciet de SCPPROGRESS=1 parameter doorgeven tijdens het compileren.
  • In het options.h bestand kun je ongebruikte encryptie-algoritmen, poortdoorsturing of ondersteuning voor wachtwoordauthenticatie handmatig uitschakelen, waardoor de uiteindelijke bestandsgrootte verder afneemt.

Nuances bij sleutelbeheer

Als je gewend bent aan standaard OpenSSH-tools, zal het project je een paar verrassingen voorschotelen. Aan de serverkant is alles vertrouwd: het ~/.ssh/authorized_keys bestand werkt op de standaard manier. Je voegt daar publieke sleutels toe in ssh-rsa of ssh-ed25519 formaat. Het belangrijkste is ervoor te zorgen dat je editor de sleutelstring niet over meerdere regels splitst, en dat de machtigingen op de .ssh directory alleen schrijftoegang voor de eigenaar toestaan.

Aan de clientkant en bij het genereren van host-sleutels beginnen de eigenaardigheden. Het hulpprogramma gebruikt zijn eigen formaat voor privésleutels. Om je vertrouwde ~/.ssh/id_rsa sleutel te gebruiken in de dbclient client, moet je deze eerst converteren:

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

Als je een nieuwe sleutel maakt via het native dropbearkey hulpprogramma, worden de private en public delen direct naar de console uitgevoerd. Je kunt de publieke sleutel voor toevoeging aan een andere server extraheren met eenvoudig filteren:

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

De server starten en valkuilen

Meestal moet je, voordat je de SSH-server start, handmatig host-sleutels genereren:

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

Dropbear heeft een handige hack voor snel systeem opstarten. In plaats van sleutels te genereren bij het opstarten (wat het opstarten op zwakkere processors vertraagt), geef je de -R flag aan de server door. In dit geval worden sleutels automatisch aangemaakt in de /etc/dropbear/ directory, maar alleen bij de eerste inkomende verbinding.

Houd bij het opereren rekening met de eigenaardigheden van het project:

  • De server draaien als gewone gebruiker is zwaar beperkt. Je kunt geen pseudo-terminal (pty) toewijzen, naar een ander account schakelen of shadow-wachtwoorden gebruiken.
  • Met wachtwoord versleutelde host-sleutels worden niet direct ondersteund, hoewel de client wel kan verbinden met een draaiende ssh-agent.
  • Het project heeft weinig gedetailleerde documentatie. De belangrijkste instructies zijn verspreid over de tekstbestanden INSTALL.md, MULTI.md en SMALL.md in de repository-root.

Voor wie is dit hulpmiddel nuttig

Dropbear komt van pas als je aangepaste router-firmware maakt, een Linux-apparaat ontwikkelt met beperkt flash-geheugen, of een compacte initramfs-image bouwt. Op een volledige server met tientallen gigabytes aan geheugen merk je nauwelijks verschil met OpenSSH. Maar waar elke kilobyte telt, bespaart dit hulpmiddel beter resources dan de meeste alternatieven.

Gerelateerde projecten