16 Juin

Outils Web d’Administration – GateOne

Cet article présente l’installation de GateOne, un client SSH écrit 100% en HTML5. Mais quel est l’intérêt? Deux cas de figures sont possibles.

1er cas, on se trouve dans un environnement restrictif, par exemple derrière un proxy avec authent ntlm qui ne laisse passer que le http/https, ou sur un windows sans possibilité d’installer un client SSH. GateOne ne requiert qu’un navigateur en html5 et une connexion https standard, pas besoin de plugin, jvm ou autre.

2ème cas, on souhaite permettre un accès externe à une zone privée (intranet, etc.) sans pour autant ouvrir les accès SSH à travers sa DMZ. On peut monter GateOne derrière un reverse proxy en frontal sans compromettre sa sécurité.

Installation de GateOne

Quelques pré-requis avant de pouvoir commencer l’installation.

Les packages python-pam et python-kerberos servent à l’authentification pam et kerberos si elles sont utilisées. Les packages python-imaging et dtach sont optionnels.

On charge maintenant le tar.gz depuis le github de GateOne. Par défaut, ce dernier sera installé dans le répertoire /opt/gateone lors de la compilation.

Configuration de GateOne

Au premier lancement, le fichier de configuration de GateOne sera créé automatiquement.

Par défaut, la configuration ne marche pas trop mal si une adresse IP sur le port 443 peut être dédiée à Gateone. Mais l’idée est de l’intégrer dans une zone d’admin avec un ensemble d’application partageant la même IP et la même URL. Il faut donc aller modifier les 5 paramètres suivants dans le fichier server.conf :

Le reste des options peuvent être modifiées en fonction de ses besoins. Une explication détaillée des différents paramètres est disponible sur cette page.

Configuration Nginx avec Websocket

Gateone utilise des WebSockets qui permettent des communications bidirectionnelles client/serveur en temps réels . Une configuration « classique » en reverse proxy ne fonctionnera donc pas. Heureusement, Nginx sait gérer les WebSockets.

La directive map doit être placée en dehors du bloc server. Le bloc location lui se place comme d’habitude à l’intérieur de la configuration du serveur. Par contre, il est indispensable d’utiliser un serveur https sous peine de faire passer en clair sur internet ses communications SSH !!

Démarrer le service

Il ne reste plus qu’à démarrer le service Gateone et relancer nginx:

On peut maintenant accéder à GateOne avec https://www.admin-tools.writesthisblog.com/gateone/.
Et là, c’est probablement le drame et on obtient le message suivant :

The WebSocket connection was closed. Will attempt to reconnect every 5 seconds…
NOTE: Some web proxies do not work properly with WebSockets.

Débuguer sa Configuration GateOne/Nginx

Il se trouve que Nginx supporte les WebSockets uniquement depuis la version 1.3 et Debian Wheezy (7.5) ne propose que la 1.2.1. D’une manière ou d’une autre, il faut donc upgrader son serveur. Personnellement, je préfère dotdeb.
Quoiqu’il en soit, GateOne est assez capricieux à configurer. En cas de soucis, mieux vaut arrêter le service et lancer GateOne à la ligne de commande afin de récupérer en direct les messages d’erreur.

Améliorer la Sécurité

Authentification PAM

Par défaut, GateOne ne gère pas d’authentification, ce qui n’est pas forcément un problème puisque la zone d’admin dans lequel il vient d’être placée s’en charge. Par contre, tous les utilisateurs de GateOne sont alors indifférenciés ce qui peut poser problème. Si l’on souhaite activer par exemple le pam, il faut modifier dans le fichier /opt/gateone/server.conf les lignes suivantes :

Le problème est que cette authentification percute celle gérée par nginx. On ne peut utiliser les deux à la fois. Un contournement peut consister à utiliser un certificat SSL client pour l’authentification auprès de Nginx.

Ne pas utiliser GateOne en root

Il s’agit du fonctionnement par défaut de GateOne, ce qui n’est pas très sécurisé. On y remédie en créant un utilisateur gateone avec un gid/uid spécifique, par exemple 120 :

Et en changeant les paramètres suivants dans la configuration de GateOne :

Timeout des Sessions

Les sessions d’un utilisateur peuvent être reprises depuis un autre navigateur sur un autre PC. C’est une fonction sympathique, mais qui présente de gros problèmes de sécurité si par exemple l’accès à GateOne est compromis. Dans tous les cas, un timeout de 5 jours par défaut, c’est trop !

GateOne et Reverse Proxy sur deux serveurs différents

La configuration présentée suppose que GateOne est herbergé sur le même serveur que le Nginx en reverse proxy. Si ce n’est pas le cas, il est impératif de réactiver le SSL sur GateOne et d’adapter sous nginx la directive proxy_pass en conséquence.

Pour Conclure

Dans tous les cas, GateOne est un outil très puissant et bien pratique, vive le html 5 ! N’hésitez pas à l’utiliser, mais soyez bien prudents, toute configuration mal maîtrisée ne pourra que poser de gros problèmes de sécurité.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.