Marvin Pascale

[B.Log]

26 Luglio 2022

RustDesk

RustDesk è un progetto opensource che permette di creare una propria rete di controllo remoto sicura e veloce.

“A remote desktop software, the open source TeamViewer alternative, works out of the box, no configuration required. You have full control of your data, with no concerns about security. You can use our public rendezvous/relay server, or self-hosting, or write your own server.”

Tutti noi ci siamo trovati almeno una volta nella condizione di non poter rangiungere in maniera sicura le nostre workstation sparse per il globo. Sono certo che prima di cedere e comprare una licenza dei più blasonati leader del settore le abbiate provate tutte.

RustDesk risponde proprio a questa esigenza. Il client è multipiattaforma ( Windows, Linux, Mac, iOS, Android ) ed è subito pronto all’uso utilizzando i server messi a disposizione dal produttore.

Ma è proprio qui che entra il gioco il punto di forza del progetto; ogni uno di noi puoi mettere in piedi in pochi click un server per offrire banda e risorse ai propri client.

Il tutto è facilmente gestibile con Docker ( e ovviamente con Swarm ).

La nostra infrastruttura

Con Docker

# docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbs -r <relay-server-ip[:port]>
# docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbr

Le porte necessarie al funzionamento sono:

  • TCP (21115, 21117, 21118, 21119)
  • TCP e UDP (21116)

Con Docker compose e Swarm

version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: rustdesk/rustdesk-server:latest-arm64v8
    command: hbbs -r example.com:21117
    volumes:
      - /opt/docker/rustdesk/data:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server:latest-arm64v8
    command: hbbr
    volumes:
      - /opt/docker/rustdesk/data:/root
    networks:
      - rustdesk-net
    restart: unless-stopped

Una volta avviato e gestito il port forward sarà subito possibile collegare i nostri client ed iniziare a controllare da remoto tutto ciò che abbia un monitor.

settings

Cliccare su ID/Relay Server

settings

inserire l’ip o l’fqnd del nostro server.

Sicurezza

E’ possibile ( e caldamente consigliato dal sottoscritto ) cifrare le nostre connessioni con una chiave asimmetrica. Modificando il comando di avvio dei due container in

hbbs -k _

e

hbbr -k _

verranno generate all’avvio le chiavi e sarà necessario ottenere la chiave pubblica da inserire nei client. per ottenere la chiave pubblica basterà lanciare

# cat /opt/docker/rustdesk/hbbs/id_ed25519.pub

settings

nel campo key inseriamo la chiave pubblica ottenuta dal container.

Docker compose e Swarm

version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r fqdn.del.server:21117 -k _
    environment:
      - "ENCRYPTED_ONLY=1"
    volumes:
      - /opt/docker/rustdesk/data:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr

  hbbr:
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server:latest
    command: hbbr -k _
    environment:
      - "ENCRYPTED_ONLY=1"
    volumes:
      - /opt/docker/rustdesk/data:/root
    networks:
      - rustdesk-net

Con il parametro ENCRYPTED_ONLY=1 verranno rifiutate tutte le connessioni che non dispongono della chiave pubblica oppure hanno una chiave pubblica diversa.

Extra

Non dimentichiamoci mai di mettere al sicuro le nostre installazioni esposte con Crowdsec .


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: