Guacamole sur un plateau épisode 5 sur 5

Vous pouvez reprendre une activité normale !

Guacamole sur un plateau (5/5) : on passe à deux facteurs, et c‘est terminé !

Guacamole sur un plateau épisode 5 sur 5

Abonnez-vous pour tout dévorer et ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

Après une semaine de préparatif, on arrive à la fin de notre tuto pour installer Guacamole. Il ne reste plus qu’à ajouter un second facteur, qui passe tant qu’à faire par un second canal, afin de renforcer la sécurité.

Notre dossier sur Guacamole :

Mettons deux facteurs dans la boîte

Nous vous conseillons grandement d’utiliser une solution permettant de sécuriser l’authentification à votre application Guacamole, vu qu’on pourra accéder à vos serveurs depuis le web.

Parmi les options possibles proposées, vous avez du TOTP (mot de passe à usage unique basé sur le temps, Time based One Time Password en anglais) ou la solution Duo. Pour le TOTP, il y a bien évidemment Google Authenticator, mais si cela réalise un second facteur, cela ne passe pas par un second canal, c’est-à-dire un canal déconnecté du premier.

En effet, quand vous saisissez le code à 6 chiffres du TOTP, vous l’entrez dans la même interface sur le même serveur que le mot de passe (qui est le premier facteur d’authentification). Cela vous protège du vol de mot de passe, ce qui est toujours bon à prendre, mais cela ne va pas contrecarrer un keylogger qui pourra rejouer le même code TOTP s’il agit dans la minute

Certes, cette menace est peu probable, ce qui explique qu’un TOTP suffise en général, mais les banques (par exemple) savent bien que le TOTP n’est pas infaillible et que le passage par un second canal apporte un niveau supplémentaire de sécurité (nous disons bien “supplémentaire”, pas “absolu”).

Illustrons ici avec Duo, qu’on peut utiliser gratuitement tant qu’on reste dans le cadre limité d’une utilisation personnelle avec peu de machines à sécuriser et qui nous permettra d’avoir une authentification multicanale.

root@r:/# cd /guacd
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-duo-1.5.3.tar.gz.asc
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-duo-1.5.3.tar.gz
root@r:/guacd# gpg -v guacamole-auth-duo-1.5.3.tar.gz.asc
root@r:/guacd# tar -xf guacamole-auth-duo-1.5.3.tar.gz
root@r:/guacd# cd guacamole-auth-duo-1.5.3/
root@r:/guacd/guacamole-auth-duo-1.5.3# cp guacamole-auth-duo-1.5.3.jar /etc/guacamole/extensions/
root@r:/guacd/guacamole-auth-duo-1.5.3# systemctl restart tomcat9

Pour le fichier propriétés, il faut adapter les valeurs :

root@r:/etc/guacamole# cat guacamole.properties
# Hostname and Guacamole server port
guacd-hostname: localhost
guacd-port: 4822
 
# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacd
mysql-username: guacd_user
mysql-password: un_bon_mot_de_passe
 
# DUO
duo-api-hostname=api-xxxxx.duosecurity.com
duo-integration-key=xxxxxxxxxxxxxxxxxxxx
duo-secret-key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
duo-application-key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Comment obtenir les valeurs de clé nécessaires pour l’utilisation de Duo ? En allant sur duo.com, en créant son petit compte perso et en joutant une application de type « Web SDK ».

Recopiez et mémorisez les valeurs fournies dans l’écran suivant (qu’il faut valider).

Pour la dernière valeur (duo-application-key), mettez une valeur aléatoire. Pour en obtenir une en Python, vous pouvez par exemple essayer çà :

import os, hashlib
print(hashlib.sha1(os.urandom(32)).hexdigest())

Puis, on redémarre tout !

root@r:/etc/letsencrypt# systemctl restart tomcat9 guacd

Il ne reste qu’à ajouter vos serveurs, en fonction des types de connexions que vous souhaitez utiliser, avec “Nouvelle Connexion” dans le menu Paramètres puis Connexions.

N’oubliez pas des paramètres tels que « Agencement clavier » ou « nombre de couleurs », à ajuster selon vos goûts et vos contraintes (lissage des polices, affichage du fond d’écran, etc.).

Vous obtiendrez finalement un écran similaire à celui-ci :

Vous profiterez ainsi de vos machines distantes de façon efficace, en utilisant les caractéristiques et les avancées proposées par HTML 5 !

Sources

Commentaires (8)



print(hashlib.sha1(os.urandom(32)).hexdigest())


Pourquoi se limiter à seulement 32 bits d’entropie ? os.urandom(128) et Au diable l’avarice !
L'exemple est fourni par DUO, donc je suppose que ça leur suffit ! Je ne connais pas l'usage exact de ce paramètre donc je leur fais confiance...
Modifié le 16/12/2023 à 21h03
ce qui est toujours bon à prendre, mais cela ne va pas contrecarrer un keylogger qui pourra rejouer le même code TOTP s’il agit dans la minute


Les TOTP sont à usage unique. Donc cela protège aussi des keylogger. Si le mot de passe n'est pas à usage unique, alors ce n'est pas un TOTP.

[edit] la seule fenêtre de vulnérabilité avec un keylogger, c'est le délai entre le moment où le code est saisi, et où on le valide. Soit 5s au max. Donc autant dire que la fenêtre d'exploitation est extrêmement courte, et que les conditions pour y arriver drastiques. En effet, il faudrait un keylogger qui envoie en temps réel les info (en plus d'automatiser toute la chaine d'exploitation), ce qui devrait se faire détecter assez facilement par des outils de surveillance, car une requête envoyée à chaque touche saisie, ça laisse des traces.
Modifié le 16/12/2023 à 10h01
Pas tout à fait : les mots de passe à usage unique sont plutôt des HOTP (basés sur RFC 4226), utilisant un secret et un compteur, et ne sont plus très souvent utilisés, la synchronisation des compteurs étant délicate. On utilise le plus souvent un TOTP (RFC 6238), Time-based OTP, basé sur un secret partagé et une horloge. Google Authenticator utilise ce standard, par exemple. Le code n'est pas à usage unique : il est valable durant un temps limité, qui n'est d'ailleurs pas défini précisément dans le RFC : il est recommandé à 30 secondes, mais il est plus souvent de l'ordre de la minute.

Par ailleurs, il existe des versions (très) améliorées des keyloggers : les proxy locaux ou Man-in-the-Browser. Des malwares utilisant ce type de technique vont intercepter tout ce qui passe à destination d'internet : on va donc "lire" à la fois le mot de passe et l'éventuel code TOTP s'il est fourni par le même canal (d'où l'importance de la distinction entre second facteur et second canal). Quand on cherche à intercepter une connexion, on va écouter tout le temps, intercepter les informations de connexions dans le proxy local, les envoyer vers l'attaquant et rejouer l'authentification ailleurs, immédiatement, puis maintenir la connexion si besoin.

Ayant travaillé longtemps pour une banque, je t'assure que cette technique est réelle et très efficace. Je n'ai plus le nom du plus virulent (je crois que c'était Dridex) mais la seule véritable parade était (et est toujours) d'utiliser un vrai second canal. A noter que FIDO/FIDO2 permet aussi de créer un second canal "virtuel", sous certaines conditions, en permettant de valider un challenge en dehors du navigateur.

Jean_G

Pas tout à fait : les mots de passe à usage unique sont plutôt des HOTP (basés sur RFC 4226), utilisant un secret et un compteur, et ne sont plus très souvent utilisés, la synchronisation des compteurs étant délicate. On utilise le plus souvent un TOTP (RFC 6238), Time-based OTP, basé sur un secret partagé et une horloge. Google Authenticator utilise ce standard, par exemple. Le code n'est pas à usage unique : il est valable durant un temps limité, qui n'est d'ailleurs pas défini précisément dans le RFC : il est recommandé à 30 secondes, mais il est plus souvent de l'ordre de la minute.

Par ailleurs, il existe des versions (très) améliorées des keyloggers : les proxy locaux ou Man-in-the-Browser. Des malwares utilisant ce type de technique vont intercepter tout ce qui passe à destination d'internet : on va donc "lire" à la fois le mot de passe et l'éventuel code TOTP s'il est fourni par le même canal (d'où l'importance de la distinction entre second facteur et second canal). Quand on cherche à intercepter une connexion, on va écouter tout le temps, intercepter les informations de connexions dans le proxy local, les envoyer vers l'attaquant et rejouer l'authentification ailleurs, immédiatement, puis maintenir la connexion si besoin.

Ayant travaillé longtemps pour une banque, je t'assure que cette technique est réelle et très efficace. Je n'ai plus le nom du plus virulent (je crois que c'était Dridex) mais la seule véritable parade était (et est toujours) d'utiliser un vrai second canal. A noter que FIDO/FIDO2 permet aussi de créer un second canal "virtuel", sous certaines conditions, en permettant de valider un challenge en dehors du navigateur.

Le code n'est pas à usage unique : il est valable durant un temps limité, qui n'est d'ailleurs pas défini précisément dans le RFC : il est recommandé à 30 secondes, mais il est plus souvent de l'ordre de la minute.


Désolé de te contredire, mais non ;)

Extrait de la RFC 6238 :

Note that a prover may send the same OTP inside a given time-step
window multiple times to a verifier. The verifier MUST NOT accept
the second attempt of the OTP after the successful validation has
been issued for the first OTP, which ensures one-time only use of an
OTP.


Que l'on pourrait traduire par :
Notez qu'un "prouveur" peut envoyer le même OTP à l'intérieur d'une fenêtre temporelle plusieurs fois à un "vérifieur". Le "vérifieur" NE DOIT PAS accepter la seconde tentative de l'OTP après une validation réussie du premier essai, ce qui assure un usage unique pour un OTP

Par ailleurs, il existe des versions (très) améliorées des keyloggers : les proxy locaux ou Man-in-the-Browser.


Oui, mais là, on change généralement de catégorie. Ce n'est plus un keylogger si le logiciel scrute le réseau. C'est de l'ordre de l'interception ou d'une attaque par l'homme du milieu.

Un keylogger est un dispositif (il peut être matériel ou logiciel) qui va enregistrer ce que l'utilisateur a saisie au clavier. Là, tu parles de logiciels qui vont examiner les flux réseaux. Si l'objectif recherché est le même (voler les identifiant), les moyens mis en oeuvre les classes dans des catégories très différentes.
Ayant travaillé longtemps pour une banque, je t'assure que cette technique est réelle et très efficace. Je n'ai plus le nom du plus virulent (je crois que c'était Dridex) mais la seule véritable parade était (et est toujours) d'utiliser un vrai second canal. A noter que FIDO/FIDO2 permet aussi de créer un second canal "virtuel", sous certaines conditions, en permettant de valider un challenge en dehors du navigateur.


Je n'ai jamais dis que les TOTP étaient une protection ultime. Dans ton article, c'est toi qui parle de keylogger, et qui dit que le TOTP ne protège pas des keylogger. Ce qui est erroné.

Par contre, je suis d'accord avec toi pour dire que l'OTP ne va pas protéger d'attaques plus poussées comme les attaques de l'homme du milieu, et que séparer les canaux rend les attaques très difficile à mettre en oeuvre, puisqu'il faut alors pouvoir scruter les 2 canaux en même temps, et en temps réel.

fdorin

Le code n'est pas à usage unique : il est valable durant un temps limité, qui n'est d'ailleurs pas défini précisément dans le RFC : il est recommandé à 30 secondes, mais il est plus souvent de l'ordre de la minute.


Désolé de te contredire, mais non ;)

Extrait de la RFC 6238 :

Note that a prover may send the same OTP inside a given time-step
window multiple times to a verifier. The verifier MUST NOT accept
the second attempt of the OTP after the successful validation has
been issued for the first OTP, which ensures one-time only use of an
OTP.


Que l'on pourrait traduire par :
Notez qu'un "prouveur" peut envoyer le même OTP à l'intérieur d'une fenêtre temporelle plusieurs fois à un "vérifieur". Le "vérifieur" NE DOIT PAS accepter la seconde tentative de l'OTP après une validation réussie du premier essai, ce qui assure un usage unique pour un OTP

Par ailleurs, il existe des versions (très) améliorées des keyloggers : les proxy locaux ou Man-in-the-Browser.


Oui, mais là, on change généralement de catégorie. Ce n'est plus un keylogger si le logiciel scrute le réseau. C'est de l'ordre de l'interception ou d'une attaque par l'homme du milieu.

Un keylogger est un dispositif (il peut être matériel ou logiciel) qui va enregistrer ce que l'utilisateur a saisie au clavier. Là, tu parles de logiciels qui vont examiner les flux réseaux. Si l'objectif recherché est le même (voler les identifiant), les moyens mis en oeuvre les classes dans des catégories très différentes.
Ayant travaillé longtemps pour une banque, je t'assure que cette technique est réelle et très efficace. Je n'ai plus le nom du plus virulent (je crois que c'était Dridex) mais la seule véritable parade était (et est toujours) d'utiliser un vrai second canal. A noter que FIDO/FIDO2 permet aussi de créer un second canal "virtuel", sous certaines conditions, en permettant de valider un challenge en dehors du navigateur.


Je n'ai jamais dis que les TOTP étaient une protection ultime. Dans ton article, c'est toi qui parle de keylogger, et qui dit que le TOTP ne protège pas des keylogger. Ce qui est erroné.

Par contre, je suis d'accord avec toi pour dire que l'OTP ne va pas protéger d'attaques plus poussées comme les attaques de l'homme du milieu, et que séparer les canaux rend les attaques très difficile à mettre en oeuvre, puisqu'il faut alors pouvoir scruter les 2 canaux en même temps, et en temps réel.
Je m'incline !
J'ai trouvé ce dossier intéressant mais il semble que Next.ink ne gère pas mieux les dossiers que NextInpact. Sur la cinquième partie, je retrouve bien au premier paragraphe les liens des cinq articles qui constituent le dossier ; c'est parfait.
Mais si je clique sur le premier lien pour commencer la première partie : pouf ! plus de dossier, plus aucun lien pour naviguer vers les autres articles :-(
Le journaliste doit manuellement mettre à jour les liens sur les cinq articles pour qu'ils soient cohérents entre eux... et c'est rarement fait. (par manque de temps j'imagine, ce qui peut se comprendre)
Très bien ce type de série d'articles !
Fermer