Apache Guacamole, c'est quoi?

Comme j'en ai parlé dans le billet précédent, je maintiens une image docker pour Apache Guacamole. Mais Apache Guacamole, c'est quoi? Selon le site officiel:

Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.

We call it clientless because no plugins or client software are required.

Thanks to HTML5, once Guacamole is installed on a server, all you need to access your desktops is a web browser.

Et en vidéo, c'est ça:

En gros, Apache Guacamole permet d'accéder, depuis un navigateur web, à des machines. Pour les gens qui travaillent en entreprise, vous êtes certainement familiers avec Remote Desktop sous Windows (ce qu'utilise les service informatique pour réparer votre machine, ou installer des logiciels). C'est aussi cela que le service IT utilise pour gérer à distance les serveurs Windows Server. Pour ceux qui ont des serveurs sous unix/linux, vous connaissez forcément ssh, et Apache Guacamole vous permet de vous connecter à un serveur ssh.

Pourquoi utiliser Apache Guacamole?

Pour mon utilisation, je cherchais un moyen de me connecter à mon serveur depuis mon travail. Malheureusement, le firewall utilisé par mon employeur (ou plutôt le système de filtre de paquets je pense), bloque toute possibilité d'utiliser le protocole SSH. J'étais marron! Je cherchais des méthodes pour faire du ssh-over-http, mais je n'arrivais à rien de concluant. Jusqu'à ce que je tombe sur une vidéo de l'excellent Network Chuck.

Cette vidéo a été une révélation pour moi! Il m'était enfin possible de bypasser le packet filter de mon boulot! J'allais enfin pouvoir me connecter à mon serveur à distance depuis le pc de mon travail!! Youhou!!

Bien entendu, cette vidéo n'était qu'une introduction. le process utilisé (avec une machine virtuelle sous Linode, etc..), ce n'était pas pour moi. Moi, je n'avais besoin que d'installer Guacamole, et on verra ça en-dessous. Cependant, après l'avoir installé, vous vous rendrez compte de l'étendue des capacités de Guacamole. Dans une seule application, vous pouvez vous connecter à:

  • RDP (MS Remote Desktop)
  • Kubernetes (pour manager des cluster de containers)
  • VNC (l'équivalent RDP sous Linux)
  • Telnet (un vieux protocole mais qui a fait ses preuves)
  • SSH (pour tout le reste)

Donc si vous avez besoin de vous connecter à une machine avec l'un des ces protocoles, Apache Guacamole est fait pour vous! Et encore plus si vous avez plusieurs machines!

Comment installer Apache Guacamole?

Installer Guacamole peut être simple, et peut être compliqué. Tout d'abord, il vous faut une machine qui servira de serveur. Cette machine sera idéalement sous Linux, même si cela doit être possible, comme on le verra plus bas, de faire tourner Guacamole sous Windows en utilisant Docker. Et il vous faut un serveur HTTP capable d'exécuter des servlets java (par exemple Apache Tomcat). Et n'ayez pas peur, la méthode facile viendra!

Guacamole vient en plusieurs morceaux: le serveur, le client, et les extensions.
Normalement, il faut:

  • installer les dépendances (Guacamole a besoin de pas mal de choses pour marcher)
  • télécharger le code source
  • compiler le serveur
  • l'installer
  • télécharger le client
  • rendre le client disponible à Tomcat
  • télécharger les extensions
  • les rendre disponibles au client
  • démarrer le tout en croisant les doigts.

C'est long. Pas dur, mais relativement long. Rien que pour les dépendances, selon ls système d'exploitation que vous utilisez, vous pouvez passer quelques heures à trouver les bon paquets. Heureusement que des gens biens (comme moi...), ont prémaché le travail...
Tiens, rien que pour les dépendances, voila ce qu'il faut sous Debian:

libcairo2-dev libjpeg62-turbo-dev libpng-dev libossp-uuid-dev libavcodec-dev libavutil-dev 
libswscale-dev freerdp2-dev libfreerdp-client2-2 libpango1.0-dev libssh2-1-dev libtelnet-dev
libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev libwebsockets-dev 
ghostscript postgresql-${PG_MAJOR} make libjpeg-dev libtool-bin libavformat-dev

Si vous voulez prendre le long chemin, rendez-vous sur la documentation officielle. Les fainéants, restez avec moi, on va prendre un raccourci.

La méthode courte: docker

Vous n'avez besoin que de 2 choses:

  • docker (avec docker-compose de préférence)
  • un dossier pour stocker les fichiers de configuration (par exemple /opt/guacamole)

Si Docker n'est pas installé, installez-le. La méthode change selon votre système. Le plus simple, comme toujours est de suivre la voie officielle. Allez-y, et on se retrouve après.

C'est fait? Cool. Vous n'avez pas oublié docker-compose j'espère?

C'est tout bon? Alors on ouvre un terminal et on tape docker run -p 8080:8080 -v /opt/guacamole:/config abesnier/guacamole

  • docker run : on va créer et lancer un nouveau container
  • -p 8080:8080 : on expose le port 8080 du container, et on le lie au port 8080 de l'hôte. Vous pouvez changer le premier, mais pas le second
  • -v /opt/guacamole:/config : on dit au container que le dossier /opt/guacamole de l'hôte correspond au dossier /config du container. Faites attention à bien avoir les droits de lecture/écriture sur ce dossier.
  • abesnier/guacamole : l'image docker qu'on va utiliser.

Si comme moi vous préférez utiliser docker-compose, il vous suffit de créer un fichier docker-compose.yml, et d'y mettre ceci dedans:

version: '3'
services:
    guacamole:
        image: abesnier/guacamole:latest
        restart: always
        container_name: guacamole
        user: root
        environment:
            - TZ=Europe/Paris
            - "EXTENSIONS=auth-totp"
        volumes:
            - "/opt/guacamole:/config"
        ports:
            - "8080:8080"

On reviendra sur la section environment plus tard. La ligne user: root n'est pas forcément nécessaire, mais je l'utilise personnellement.

Est-ce que ça marche? Ca devrait… Ouvrez un navigateur sur n'importe quelle machine sur le même réseau, et dans la barre d'adresse, tapez http://ip.du.serveur:8080/, et si tout va bien, vous tombez sur ça:

guac%20acceuil

Mais, mais, mais... vous ne connaissez pas votre login? bande de boulets... Quoi? vous n'en avez pas encore défini? ha oui, c'est vrai, on n'a pas encore fait ça. Alors on va jouer aux hackers, et essayer, à tout hasard, guacadmin comme utilisateur et comme mot de passe, juste comme ça, pour voir. Quoi? Ca marche? Noooooon, ça alors!

Y'a quoi dans cette image?

Vous êtes bien curieux, vous! Mais puisque vous insistez, je vais vous le dire. Il y a tout ce qu'il faut pour commencer avec Apache Guacamole: un serveur web (Apache Tomcat), Guacamole Serveur, Guacamole Client, et toutes les extensions officielles. En outre, il y a aussi PostgreSQL, pour donner un backend à notre application, pour enregistrer les comptes utilisateurs, les connexions, les logs, etc...

A la base, cette image a été créée par Oznu. Malheureusement, il a arrêté de la maintenir, et depuis, de nombreuses personnes, dont moi, ont forké son projet. On compte 272 forks sur Github, sans compter les gens qui ont customisé son image sans la mettre sur Github.

Vous retrouverez le Dockerfile sur ma page Github, et les images sur Docker hub.

Comment gérer Apache Guacamole?

On verra ça demain, ok?

Gravatar

papycasu est un quadra qui n'y connait pas grand chose au jeux video mais qui s'y met quand même.

0 Comments:

Ajouter un commentaire