Cet article concerne les utilisateurs de postes de travail Debian ou Ubuntu utilisant des services VDS et Dédiés proposés pas SISalp. Il prend en exemple la façon dont est pré-paramétrée l'option "bureau sécurisé" sur la base d'un VDS SISalp.

Les solutions de sécurité proposées ici ne sont pas accessibles aux autres hébergements disponibles sur le marché, en particulier les abonnements Saas de l'éditeur OpenERP ou autres. Ces solutions ont donc le défaut d'exposer votre interface ERP à la face du web. Il faut noter que ni le recours à https ni à xml-rpc/secure n'empêchent quiconque de tenter de se connecter par essai de mots de passe ni d'utiliser une faille du produit sur les différents protocoles de communication (xml-rpc, net-rpc, ftp, webdav, etc). L'actualité récente a montré qu'OpenERP n'a pas de garantie de résistance. En ce qui concerne les hébergements OpenERP-Online gratuits de SISalp, les modules qui nécessitent l'ouverture de ports de communication non indispensables ne sont pas opérationnels par défaut.

Vous pouvez utiliser xkey aussi si vous disposez de votre propre installation d'OpenERP ou de Tryton. Les utilisateurs de postes de travail sous Windows peuvent s'inspirer de ce fonctionnement mais doivent le transposer. Pour mémoire, l'option "bureau sécurisé" est fondée sur le déport d'un bureau Ubuntu, mais il est utilisable directement depuis Windows, Mac et bien sûr Linux.

Dans cet article la syntaxe sudo indique que la commande peut être éxécutée soit par l'utilisateur root, soit par un utilisateur autorisé disposant de la commande sudo.

Pré-requis

installation de xkey

xkey est une commande shell qui utilise open-ssh. xkey crée des commandes dans /usr/local/bin qui simplifient la syntaxe des connexions ssh. xkey dispose d'un fichier de configuration afin d'automatiser la mise en oeuvre des actions décrites dans cet article. xkey utilise une commande "expect" qui n'est pas installée par défaut :

sudo apt-get install expect

pour installer xkey, il faut le télécharger et le rendre exécutable :

cd /usr/local/bin
sudo wget http://download.sisalp.net/xkey
sudo chmod 755 xkey

la commande suivante permet d'obtenir de la documentation intégrée de xkey :

xkey --help

ssh

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur.

Plus d'information sur wikipedia

première connexion à un serveur

la première fois que vous vous connectez à un serveur distant, ssh vous prévient :

The authenticity of host '[xxxx]:yy ' can't be established.
Are you sure you want to continue connecting (yes/no)? yes

répondre "yes" en toutes lettres.

Utilisation manuelle de la commande xkey

créer manuellement une commande de connexion ssh

xkey vous permet de créer une commande pour vous connecter sans avoir à fournir de paramètres

xkey --command
You must have root priviledge for --command, trying sudo

si vous avez les privilèges pour la commande sudo, le programme se poursuit.

répondre alors aux questions suivantes

Remote user : myuserid
Remote host name : remotehost.domain.com
Connection port, default is <22> : 22

ces informations de connection ssh se trouvent dans votre message d'identifiants,

pour les questions suivantes, vous pouvez souvent vous contenter de réponses vides

IP address for a host on the local network, else dns resolution, default is <-> : 

si vous ne passez pas par un serveur de nom, tapez l'adresse ip du serveur distant

IP address for a host on the local network, else dns resolution is set to default value -

nous ne l'avons pas fait car nous utilisons une résolution DNS dans cet exemple

Command name, default is <remotehost> : 

là aussi nous ne répondons rien car ce nom de commande nous convient

Command name is set to default value remotehost

la nouvelle commande vient d'être créée, et xkey nous imprime sa documentation :

remotehost version samedi 29 octobre 2011, 16:34:38 (UTC+0200) on ionyx generated by xkey version  29 oct 2011-rev 0
Syntax of remotehost command
remotehost -h|help|--help
	Print this documentation
remotehost
	Connect to ssh myuserid@remotehost.domain.com -p 22
remotehost -k|--keys
	Exchange keys for password-less connection
remotehost -r|--root
	Connect to ssh root@remotehost.domain.com -p 22
remotehost -t|--tunnel|tunnel [local_port [remote_port [remote_ip]]]
	Create a tunnel from port local_port to remote_ip:remote_port on connection myuserid@remotehost.domain.com port 22
remotehost -v|--version|version
	Print version of remotehost command

moi@ici:~$ 

échange des clés

pour ne plus avoir à taper de mots de passe, nous allons échanger les clés en utilisant une fonction intégrée à la commande qui vient d'être créée :

remotehost --keys
myuserid@remotehost.domain.com s password :

ce mot de passe de connection ssh se trouve dans votre message d'identifiants,

You can connect now to myuserid@remotehost.domain.com  without password

ce que nous vérifions immédiatement par la commande

remotehost

nous sommes maintenant connectes sur le serveur distant, nous mettons fin à cette connexion par la commande

exit

créer manuellement une commande de création d'un tunnel ssh

le principe de fonctionnement est similaire, xkey va créer une commande qui établit un tunnel.
la commande est la suivante :

xkey --tunnel

et les questions posées sont alors :

Remote user
Remote host name
Connection port

qui ont la même signification que précédemment

Local port

le port d'entrée du tunnel, celui qui est utilisé en local

Remote port

le port de sortie du tunnel, celui sur lequel le serveur est en attente de traffic

Remote ip

habituellement la valeur par défaut localhost vous conviendra, sauf si le serveur distant est sur un réseau local distant

IP address for a host on the local network, else dns resolution

comme précédemment, en renseignant cette adresse, vous n'aurez pas besoin de résolution de nom

Command name

c'est le nom de la commande qui établit le tunnel, par exemple tremotehost

Pour obtenir la documentation de la commande tremotehost, on utilise

tremotehost --help

Une fois la commande créée, nous pouvons la tester en la tapant dans un terminal :

tremotehost

le tunnel est établi. En utilisant localement le port d'entrée du tunnel, on utilse le serveur qui répond sur le port de sortie du tunnel. pour fermer ce tunnel, il suffit de mettre fin à la connexion en tapant la commande suivante dans ce terminal :

exit

Configuration pour une utilisation automatique de xkey

automatiser la création des commandes

xkey permet d'automatiser les créations de commandes effectuées aux étapes précédentes, en utilisant un fichier de description dont la syntaxe est précisée par la commande

xkey --help

On remarquera que les créations manuelles précédentes ont déjà créé et peuplé ce fichier de configuration avec les données utilisées. Si on n'a pas effectué de créations manuelles, on crée le fichier de configuration à l'emplacement suivant :

sudo mkdir /usr/local/etc
sudo mkdir /usr/local/etc/xkey
sudo nano /usr/local/etc/xkey/xkey.conf

dans ce fichier, chaque ligne décrit une commande
instruction de création d'une commande de connexion :

server:name:	ssh_user	ssh_ip_address	ssh_port	remote_host_fqdn

où server: est un mot clé, name le nom de la commande et du serveur distant par exemple

server:myremoteserver:	sshuser	10.0.0.100		22	test.exemple.com

créera une commande myremoteserver pour se connecter sur sshuser@test.exemple.com par le port 22

Instruction de création d'une commande de création de tunnel

tunnel:name:	ssh_user	remote_host_ssh_ip|-	ssh_port	remote_host_fqdn	local_port	remote_port	remote_ip|localhost 

où tunnel: est un mot clé et où les autres paramètres ont la signification donnée précédemment

Une fois cette configuration enregistrée, la commande

xkey --auto

crée l'ensemble des commandes décrites dans /usr/local/bin
On obtient le détail des commandes créées par

xkey --list

création des raccourcis sur le bureau

sur un ordinateur de type poste de travail, on peut créer des raccourcis au lieu de taper les commandes

On peut ajouter des définitions pour créer des raccourcis sur le bureau, soit dans le fichier de configuration décrit plus haut, auquel cas, tous les utilisateurs pourront créer ces raccourcis

sudo gedit /usr/local/etc/xkey/xkey.conf

soit dans un fichier de configuration propre à l'utilisateur, et dans ce cas les raccourcis ne seront créées que pour cet utilisateur.

gedit  ~/.xkey.conf

La syntaxe est alors la suivante

shortcut:name:	/shortcut_directory|-	/path_to_icon|-	command_and_parameters

où shortcut: est un mot clé
On pourra tester l'exemple suivant

shortcut:mapomme:	Bureau	/usr/share/pixmaps/apple-red.png	tremotehost  tremoteftp xoe --client -start production

dans lequel le client openerp ou tryton appelé production est démarré par la commande xoe des hébergements SISalp après ouverture des tunnels sécurisés tremotehost et tremoteftp. Le raccourci est sur le Bureau et ressemble à une pomme rouge.
Vous remplacerez xoe --client -start production par la commande de démarrage du client openerp ou tryton correspondant à votre installation.

A noter qu'on peut lister là plusieurs tunnels par la syntaxe tunnel1 tunnel2 commande

La création du reccourci est effectuée par la commande

xkey --shortcuts

Fermeture des accès par internet

Quand cet accès sécurisé est maîtrisé, les abonnés des services SISalp peuvent sur simple demande, faire fermer tous les accès directs depuis le web : http, xml-rpc, net-rpc