Ajaxterm : Utiliser un terminal en web

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Ajaxterm permet d'avoir un terminal à travers une page web. Par exemple vous êtes sur un site restreint qui ne vous permet pas de faire du SSH, il y a cependant de fortes chances pour que vous puissiez faire du https. C'est là qu'AjaxTerm est bien pratique puisqu'il permet de se connecter à la machine qui héberge AjaxTerm.

L'inconvénient est la sécurité. Si vous ne paramétrez pas suffisamment correctement ceci, votre serveur peut vite se retrouver dans d'autres mains que les votre. Je vais aborder ici ce point là également pour que ça n'arrive pas.

2 Installation

Pour l'installation j'ai fait simple :

Command
wget http://antony.lesuisse.org/software/ajaxterm/files/Ajaxterm-0.10.tar.gz
tar -xzvf Ajaxterm-0.10.tar.gz
mv Ajaxterm-0.10 /usr/share/ajaxterm

Ensuite je vais vouloir qu'Ajaxterm se lance tout seul au démarrage en tant que démon avec l'utilisateur www-data (ou l'utilisateur web si vous n'êtes pas sur une Debian) qui correspond au PID 33. Je vais donc rajouter cette ligne dans le fichier suivant :

Configuration File /etc/rc.local
...
python /usr/share/ajaxterm/ajaxterm.py -u33 -d
...

Pour les plus courageux, ils peuvent faire un script init, ce qui serait plus propre.

3 Configuration

Il n'y a pas de configuration spéciale à faire pour Ajaxterm, par défaut tout est nickel. Il va falloir par contre configurer un proxy web pour rediriger vers le port 443 vers le 8022 en localhost.

3.1 Lighttpd

Si vous utilisez lighty, on va le configurer pour qu'il charge le module proxy :

Configuration File /etc/lighttpd/conf-available/10-proxy.conf
 ...
 server.modules   += ( "mod_proxy" )
 ...

Puis nous allons créer une configuration pour Ajaxterm qui va nous permettre d'avoir accès si :

  • L'host correspond bien à www.deimos.fr
  • L'url correspond à term our terminal

De plus, quelques points de sécurité ont été apportés comme :

  • Si le port 80 est utilisé, on redirige sur le 443
  • L'utilisateur doit rentrer les bons identifiants par rapport à un htaccess

Voici la configuration :

Configuration File /etc/lighttpd/conf-available/50-ajaxterm.conf
### Ajaxterm
$HTTP["host"] =~ "www\.deimos\.fr" {
    $HTTP["url"] =~ "^/(term|terminal|ajaxterm)" {
        $SERVER["socket"] == ":80" {
            url.redirect = ( "" => "https://www.deimos.fr/ajaxterm/" )
        }
        auth.require = ( "" =>
            (
            "method" => "digest",
            "realm" => "Authorized users only",
            "require" => "valid-user"
            )
        )
        proxy.server = ( "" =>
            (
                ( "host" => "127.0.0.1",
                  "port" => 8022
                )
            )
        ),
    }
}

Donc pour résumer, la sécurité est pas mal, mais on est pas loin du minimum vitale. L'idéale serait de rajouter encore des options de sécurité, mais je ne les aborderais pas plus ici.

Pour terminer, nous allons activer nos nouveaux modules :

Command lighty-enable-mod
lighty-enable-mod proxy
lighty-enable-mod ajaxterm

Il ne reste plus qu'à redémarrer Lighttpd et vous connecter : https://www.deimos.fr/ajaxterm :-)