Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt
Jusqu’ici, tout va bien ?
Hier, nous avons mis en ligne la première partie de notre dossier sur l’installation et la configuration de Guacamole, avec la configuration et la sécurisation d’une machine virtuelle. On passe désormais la seconde avec l’installation de Tomcat et la mise en place d’un certificat Let’s Encrypt.
Le 12 décembre 2023 à 18h41
6 min
Sécurité
Sécurité
Notre dossier sur Guacamole :
- Guacamole sur un plateau (1/5) : on monte un bastion sécurisé
- Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt
Installation des pré-requis
Nous avons tout regroupé pour que cela soit plus simple. Dans la suite, n’installez pas le package libtelnet-dev (bien qu’indiqué dans la documentation) et n’installez le package libwebsockets-dev que si vous en avez besoin (pour Kubernetes). Pour libwebp-dev, à vous de voir, mais cette bibliothèque a été un peu chahutée ces temps-ci et elle n’est que facultative.
root@ubuntu:~# apt install tomcat9
root@ubuntu:~# apt install autoconf gcc make
root@ubuntu:~# apt install libcairo2-dev libjpeg-turbo8-dev libjpeg-dev libpng-dev libpng-dev libtool-bin uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libssl-dev libvorbis-dev
Vous pouvez vérifier le bon fonctionnement du site en allant sur http://votre_ip:8080 (sans oublier de modifier le pare-feu). Ça n’est pas obligatoire : on va passer rapidement en https. N’installez pas les applications d’exemple ni même la partie d’administration, sauf si vous en avez besoin pour autre chose : ici, ça ne servira pas.
Prenons aussi les devants et installons les prérequis pour Guacamole.
La partie simple : créer des certificats Let’s Encrypt
# apt install certbot
Certbot ne sachant pas se dépatouiller avec tomcat (on le comprend), on va le laisser créer les certificats et on va paramétrer ensuite à la mimine tout ce qu’il faut derrière.
# certbot certonly
Pas de consignes spéciales pour les certificats, à part qu’il faut choisir l’option 1 qui permet à l’utilitaire de créer un serveur web temporaire servant à vérifier l’association du certificat et du site.
On peut aussi taper directement :
# certbot certonly --standalone -d domaine
On ne va pas s’appesantir, cette partie est simple et facile, la suite le sera un peu moins. [troll] À cause de ce foutu Java qui vous dit en 60 lignes que vous avez déclaré deux fois le même hôte dans le fichier de configuration, alors qu’en réalité vous n’avez qu'utilisé un paramètre (sans aucun rapport) en voie d’obsolescence (déprécié, comme on dit en mauvais français).[/troll]
Il ne reste plus qu’à ajouter ces fichiers dans la configuration server.xml, en « décommentant » la partie suivante :
Pour rediriger automatiquement le site http (port 8080) vers https (8443), il faut ajouter la section suivante dans web.xml cette fois :
...
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
Avant de redémarrer votre tomcat, il faudra changer les permissions d’un répertoire, positionnées par défaut par certbot, mais qui ne conviendront pas à notre serveur Java.
root@r:/etc# chmod -R 755 /etc/letsencrypt
root@r:/etc/letsencrypt# systemctl restart tomcat9
On récupère les avocats… et on les met de côté pour demain
Notre serveur Tomcat tourne, mais il est bien vide ! Nous allons lui ajouter Guacamole.
On peut en faire une partie via apt et ses packages, mais même sur Ubuntu 22 on n’a droit qu’à une vieille version. Ça vaut donc le coup de faire un petit effort pour disposer de la plus récente, à retrouver sur Apache Guacamole : Release Archive.
Par exemple pour la version 1.5.3, récupérons les packages dans un répertoire dédié à cet usage (par exemple /guacd)
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz.sha256
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz.asc
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-client-1.5.3.tar.gz.asc
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-client-1.5.3.tar.gz
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-client-1.5.3.tar.gz.sha256
On s’assure que tout est en ordre en vérifiant le hash et la signature du fichier. Ajoutons d’abord la clé PGP/GPG du signataire des packages concernés :
root@r:/guacd# gpg --keyserver hkps://keyserver.ubuntu.com --recv-key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: key 5B2977AEE5E4518F: public key "Michael Jumper (CODE SIGNING KEY <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
On vérifie ensuite les deux packages :
root@r:/guacd# gpg -v guacamole-server-1.5.3.tar.gz.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
gpg: assuming signed data in 'guacamole-server-1.5.3.tar.gz'
gpg: Signature made Mon Jul 17 00:11:02 2023 UTC
gpg: using RSA key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: using pgp trust model
gpg: Good signature from "Michael Jumper (CODE SIGNING KEY) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: F467 E54A CC52 F1D2 7788 2686 5B29 77AE E5E4 518F
gpg: binary signature, digest algorithm SHA256, key algorithm rsa4096
root@r:/guacd# gpg -v guacamole-client-1.5.3.tar.gz
gpg: WARNING: no command supplied. Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error
root@r:/guacd# gpg -v guacamole-client-1.5.3.tar.gz.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
gpg: assuming signed data in 'guacamole-client-1.5.3.tar.gz'
gpg: Signature made Wed Jul 26 06:14:39 2023 UTC
gpg: using RSA key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: using pgp trust model
gpg: Good signature from "Michael Jumper (CODE SIGNING KEY) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: F467 E54A CC52 F1D2 7788 2686 5B29 77AE E5E4 518F
gpg: binary signature, digest algorithm SHA256, key algorithm rsa4096
Dans la suite de notre dossier, on passera à l’installation de Guacamole à proprement parler et à la mise en place d’une base de données. Rendez-vous demain !
Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt
-
Installation des pré-requis
-
La partie simple : créer des certificats Let’s Encrypt
-
On récupère les avocats… et on les met de côté pour demain
Commentaires (13)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 13/12/2023 à 10h01
Le 13/12/2023 à 10h56
Cela dit vu la relative complexité du setup je proposerai aussi un tutoriel pour une installation via Docker qui simplifie grandement tout cela!
Le 13/12/2023 à 15h16
Le 13/12/2023 à 15h23
Le 13/12/2023 à 15h25
Le 13/12/2023 à 16h02
Sur les premiers dessins de cette série d'articles (1/5, 2/5), pas trouvé ! A moins qu'ils ne soient pas de lui, pourtant on semble reconnaître sa patte.
Par contre sur cet article "Le poing Dev – Round 8" : trouvé !
Le 13/12/2023 à 17h31
Modifié le 13/12/2023 à 18h02
Modifié le 13/12/2023 à 18h20
On peut en faire un jeu. Le premier qui trouve gagne "à définir", et ça permet de dévoiler la signature.
Celle sur "Le poing Dev – Round 8" était déjà très discrète. Et ça fait quelque temps que je m'amuse à chercher en constatant que c'était pas toujours évident.
Enfin bon, c'est peut-être pas simple à mettre en place, ou trop de boulot.
Je lance l'idée, comme c'est encore la Beta.
Le 13/12/2023 à 18h23
J'ai pour habitude sur les illus de fondre ma signature dans le dessin. Question d'ordre esthétique. Donc on va continuer à jouer !
Le 13/12/2023 à 19h32
Le 14/12/2023 à 14h50
Le 16/12/2023 à 15h47