Notre blog en mousse \o/ - Mot-clé - webshell2024-03-01T10:31:54+01:00Les Lamas !urn:md5:16d806c26b4faf0eabfff608393c3d26DotclearAjaxterm : un client SSH en weburn:md5:44e5b65be41700496368e40d181294c72011-03-10T21:27:00+01:002017-02-09T14:06:53+01:00RulianeAdministrationajaxtermclientproxyshellSSHwebwebshell <h3>Petite présentation</h3>
<p>J'ai enfin trouvé un client web qui me permette de prendre la main sur mes serveurs quand je n'ai pas de client SSH accessible ou que les ports (généralement le 22) sont bloqués. Son nom : Ajaxterm.<br />
Le site de l'âme charitable qui nous le met à disposition : <a href="http://antony.lesuisse.org/software/ajaxterm/" hreflang="fr" title="Site d'Ajaxterm">http://antony.lesuisse.org/software/ajaxterm/</a><br />
<br /></p>
<h3>Installation</h3>
<p>L'installation sous Debian est très simple, Ajaxterm étant disponible dans les dépôts. On commence donc par un classique "apt-get install ajaxterm" pour installer Ajaxterm et les dépendances qui vont bien, en particulier Apache. Attention toutefois, ceci installe la version 0.7. La dernière version lors de l'écriture de ce billet est la 0.11.<br />
<br /></p>
<h3>Configuration</h3>
<p>Le serveur Ajaxterm est écrit en Python et écoute sur le port 8022 en local. Vous pouvez d'ores et déjà vérifier son fonctionnement en lançant un w3m (ou n'importe quel navigateur) à l'adresse <em>http://localhost:8022/</em>. Si besoin, le port peut être modifié dans <em>/etc/default/ajaxterm</em>.<br />
<br />
Pour activer un accès depuis une autre machine, on peut ajouter un vhost à Apache qui se contentera de rediriger les requêtes vers Ajaxterm, par le biais du module <em>mod_proxy</em>. Évidemment, ce vhost devra être accessible en HTTPS si on veut conserver l'avantage du chiffrement SSL/TLS.<br />
<br />
Cette fonctionnalité nécessite d'activer les modes <em>mod_proxy</em>, <em>mod_proxy_http</em> et <em>mod_ssl</em> :<br />
<code>a2enmod ssl</code><br />
<code>a2enmod proxy</code><br />
<code>a2enmod proxy_http</code><br />
<br /></p>
<h4>Génération d'un certificat auto-signé</h4>
<p>Pour avoir un accès en SSL on peut utiliser un certificat existant ou générer un certificat auto-signé :<br />
<code>make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/ajaxterm.crt</code><br />
Bien évidemment, ce certificat auto-signé lèvera une erreur dans le navigateur. Il est préférable de le signer avec un certificat racine approuvé par le navigateur.<br />
<br /></p>
<h4>Ajout d'un vhost Apache</h4>
<p>On crée donc un <em>/etc/apache2/sites-available/ajaxterm</em> que l'on paramètre pour rediriger les requêtes de <em>/ajaxterm/</em> vers le port 8022 :<br />
<br />
<code><VirtualHost *:443></code><br />
<br />
<code>ServerName localhost</code><br />
<code>SSLEngine On</code><br />
<code>SSLCertificateFile /etc/ssl/ajaxterm.crt</code><br />
<code>ProxyRequests Off</code><br />
<br />
<code><Proxy *></code><br />
<code>Order deny,allow</code><br />
<code>Allow from all</code><br />
<code></Proxy></code><br />
<br />
<code>ProxyPass /ajaxterm/ http://localhost:8022/</code><br />
<code>ProxyPassReverse /ajaxterm/ http://localhost:8022/</code><br />
<br />
<code></VirtualHost></code><br />
<br />
Et on l'active :<br />
<code>a2ensite ajaxterm</code><br />
Et là youpi ! En pointant un navigateur vers <em>https://IP_du_serveur/ajaxterm/</em> on peut ouvrir une session SSH sur le serveur.<br />
<br /></p>
<h4>Augmentation du timeout de la session</h4>
<p>Par défaut, votre session SSH se terminera après deux minutes d'inactivité. Je n'ai pas vraiment compris pourquoi mais ce temps peut être augmenté sans problème. Éditons le fichier <em>/usr/share/ajaxterm/ajaxterm.py</em>. À la ligne 395, on remplace modifie la valeur de INACTIVE_PROCESS_TIMEOUT pour le mettre par exemple à 300 secondes (5 minutes). Après un petit redémarrage d'Ajaxterm (<em>/etc/init.d/ajaxterm restart</em>) le nouveau timeout d'inactivité est pris en compte.<br />
<br /></p>
<h3>Conclusion</h3>
<h4>Les avantages :</h4>
<ul>
<li>Passe les proxy.</li>
<li>Simplicité d'installation ;</li>
</ul>
<h4>Les inconvénients :</h4>
<ul>
<li>Pas de session SSH vers un autre serveur, uniquement en local ;</li>
<li><del>Pas avec compatible IE7 (ok avec IE8)</del> <strong>EDIT 11/03/2011 : en fait si, aujourd'hui ça fonctionne</strong> ;</li>
<li>Reset de la connexion au bout de 2 minutes d'inactivité (modifiable) ;</li>
<li>Nécessite un reverse proxy pour l'atteindre depuis une autre machine. Le paquet <em>ajaxterm</em> dépend d'Apache.</li>
</ul>