AccueilActualités informatiqueFOSDEM : des tunnels réseau intelligents avec RPort

FOSDEM : des tunnels réseau intelligents avec RPort

Comment accéder à un ordinateur du réseau depuis l’extérieur ? Les tunnels inversés, qu’un système client établit activement de lui-même vers un serveur, ne nécessitent pas l’aimable collaboration de l’administrateur réseau avec une redirection de port ni de noms de domaine dynamiques. L’outil open source RPort, présenté lors de la FOSDEM 22, montre une possibilité de faire fonctionner des tunnels inversés de manière stable à travers des pare-feux et NAT, afin d’atteindre en toute sécurité les ordinateurs d’un réseau depuis Internet.

Comme le système cible initie d’abord activement cette connexion de tunnel en tant que client, il n’est pas nécessaire de rediriger les ports sur un routeur ou d’ouvrir les ports entrants d’un pare-feu. Les tunnels inversés fonctionnent donc également avec NAT (Network Address Translation) et même en cas de changement d’adresse IP sur les ordinateurs clients qui accèdent au réseau via des connexions Internet changeantes.

Sommaire

Le concept n’est pas nouveau, il est déjà prévu par SSH pur. La construction et l’exploitation durable d’un tunnel, par exemple avec OpenSSH, nécessitent toutefois des constructions auxiliaires comme Autossh, afin d’absorber les interruptions de connexion. Avec RPort, la construction d’un tunnel est plus simple et plus stable, comme l’a montré Thorsten Kramm, l’un des développeurs du programme Go, dans une discussion FOSDEM axée sur la pratique.

RPort établit des connexions SSH via la méthode HTTP Connect du client au serveur, pour ensuite tunnéliser n’importe quel autre protocole TCP. Pour ce faire, RPort est constitué d’un composant serveur pour Linux (x86 et ARM) et d’un client qui interagit non seulement avec des systèmes de type UNIX comme Linux, macOS et autres, mais aussi avec des systèmes Windows. Le client et le serveur sont écrits en Go, le code source est disponible sous la licence du MIT et sous forme de binaires compacts et précompilés sans dépendances étendues. Les ports qui sont transférés du client au serveur sont laissés à la configuration de chacun. Au lieu d’une configuration étendue, comme l’exigent les solutions VPN telles qu’OpenVPN ou les tunnels SSH avec Autossh, RPort est rapidement mis en service en tant qu’outil de ligne de commande.

Tunnelbohrer : Le client RPort initie une connexion SSH via HTTP CONNECT et tunnélise les protocoles TCP alors utilisés. Les protocoles basés sur UDP devraient suivre dans la prochaine version principale.

(Image : RPort.io, Thorsten Kramm )

La première connexion manuelle entre le client cible et le serveur nécessite bien sûr que quelqu’un soit assis aux commandes. Pour l’établissement automatique et permanent de la connexion, un service Systemd est utilisé sous Linux et un service avec un fichier de configuration minimal sous Windows et macOS. Il n’exige pas non plus de privilèges root ou d’administrateur sur le client, mais fonctionne sous Linux, macOS et Windows avec des comptes d’utilisateur ordinaires.

Le composant serveur de ce projet open source encore jeune exige en revanche Linux et des droits root lors de la première configuration. Toutefois, le service serveur ne fonctionne pas non plus en tant que root, mais comme un démon non privilégié. Les ports ouverts sur le serveur qui sert de relais doivent donc également être des ports non privilégiés au-delà du numéro 1024. Les ports cibles sur le client sont toutefois quelconques et un serveur web ou SSH en cours d’exécution ne doit pas être reconfiguré au préalable. Un client peut ouvrir autant de connexions tunnel que nécessaire vers le serveur afin de rendre accessibles plusieurs ports et différents programmes.

Le serveur RPort se contente déjà d’un Raspberry Pi ou d’une instance cloud bon marché, accessibles de l’extérieur via une adresse IP publique ou un nom d’hôte. L’authentification entre le client et le serveur ne se fait pas seulement par un login préconfiguré avec un nom d’utilisateur et un mot de passe, mais aussi, en option, à l’aide d’une empreinte digitale qui identifie clairement le serveur comme avec SSH. Ceux qui ne disposent pas de leur propre serveur pour l’auto-hébergement peuvent également louer une instance clound auprès de la société de développement derrière RPort. Celle-ci finance le développement par le biais de contrats d’assistance et d’adaptation du logiciel.

En complément de RPort, qui n’est pas open source, une interface web programmée avec Vue.JS peut lister les clients connectés, ouvrir des connexions et afficher des métriques. Avec ce composant, RPort devient une solution de gestion à distance qui, grâce à une interface de script interne, convient également pour le monitoring et le provisioning. Le site web du projet RPort fournit de brèves instructions de démarrage, tandis que le code source est disponible sur Github. L’installation de l’interface web séparée, qui est mise à disposition gratuitement pour une utilisation non commerciale, est expliquée dans la documentation détaillée. Actuellement, RPort ne peut tunnéliser que les protocoles TCP, mais devrait également pouvoir gérer les protocoles UDP dans la prochaine version 0.6.0, selon les déclarations faites dans la partie « Questions » du talk, qui sera disponible ultérieurement sur le site web de FOSDEM.

L’interface web optionnelle : alors que les composants de RPort sont eux-mêmes des programmes en ligne de commande, il existe un frontal web gratuit à installer séparément, qui n’est pas open-source.

(Image : RPort.io )

Plus d'articles