Thinstation : client leger en mode PXE
Thinstation est une solution Opensource de déploiement d'un client léger, c'est à dire la possibilité d'utiliser un ordinateur (ayant la capacité de booter en PXE) pour lancer une connexion vers un serveur central hébergeant le système que vous souhaitez faire tourner. Ce client léger peut se connecter par exemple à une session Citrix, TSE, ou tout simplement à un poste distant.
Si vous vous posez la question de l'utilité d'un tel système, il a trouvé tout son sens il y a peu de temps chez nous quand s'est posé la question de la pandémie grippale.
Si les utilisateurs sont bloqués chez eux , comment leur permettre de travailler à distance sans prendre de risque. Installer un client VPN sur leur poste personnel est trop compliqué sur un parc de poste privé trop hétérogène (et risque de transfert de virus en local dans le tunnel VPN vers notre LAN d'entreprise). De plus, il devient compliqué de prendre la main à distance sur ces postes pour assister les utilisateurs en cas de problème.
Dans une situation de crise, on peut imaginer que l'ensemble des bureaux sont vides et donc les ordinateurs non utilisés. Grâce à Thinstation (TS), on boot le poste privé en PXE (pas de risque de virus), une authentification est demandée pour monter un tunnel vpn, puis une connexion TSE est initiée entre le poste privé et le poste de travail de cet utilisateur sur le LAN d'entreprise. L'utilisateur retrouve donc son environnement de travail comme si il se trouvait à son bureau. (et le service informatique a accès à l'ensemble des postes pour faire tout le travail de maintenance du parc). Sympa non ?
Preparation de l'environnement
Je suis parti des sources de Thinstation pour modifier cette distribution.
su (saissisez votre mot de passe root)
cd /usr/src
wget http://downloads.sourceforge.net/project/thinstation/thinstation/thinstation-2.2/Thinstation-2.2.2c.tar.gz?use_mirror=freefr
tar zvxf Thinstation-2.2.2c.tar.gz
cd Thinstation-2.2.2c
L'arborescence de ce dossier est en faite la caisse à outil qui va nous permettre de créer le client.
Ce client sera composé de différents fichiers et ne devrait pas faire plus de 20 Mo. A vous de choisir par la suite de fournir ce client sur un fichier ou bien sur un CDrom. Pour la présentation de Thinstation, j'ai préféré le créer sous forme de LiveCD.
Paramétrage du client Thinstation
Tout d’abord, il faut modifier le fichier « build.conf » qui permet de choisir et d’intégrer des pilotes et des fonctionnalités supplémentaires pour le LiveCD.
vim build.conf
J’ai sélectionné l’ensemble des cartes réseaux disponibles ainsi que les drivers vidéos. Ça ne pèse pas bien lourd et permet un maximum de compatibilité avec les postes clients.
J'ai désélectionné les pilotes TokenRing, wireless, PCMCIA, modem, sons et les applications inutiles pour notre projet, puis choisi "Openvpn" pour la gestion du tunnel sécurisé SSL.
module acpi #
module agpgart #
module ali-agp #
module amd64-agp #
module amd-k7-agp #
module ati-agp #
module efficeon-agp #
module intel-agp #
module nvidia-agp #
module sis-agp #
module via-agp #
module yenta_socket #
module i82365 #
module tcic #
module 3c501 #
module 3c503 #
module 3c505 #
module 3c507 #
module 3c509 #
module 3c515 #
module 3c59x #
module 8139too #
module 8139cp #
module ac3200 #
module amd8111e #
module at1700 #
module b44 #
module cs89x0 #
module de4x5 #
module de2104x #
module depca #
module dgrs #
module dmfe #
module hp100 #
module e100 #
module e2100 #
module eepro #
module eepro100 #
module eexpress #
module epic100 #
module eth16i #
module ewrk3 #
module fealnx #
module forcedeth #
module hp-plus #
module hp #
module lp486e #
module lance #
module ne io=0x300 #
module ne2k-pci #
module natsemi #
module ni5010 #
module ni52 #
module ni65 #
module pcnet32 #
module sis900 #
module smc-ultra #
module smc9194 #
module starfire #
module sundance #
module tlan #
module typhoon #
module tulip #
module via-rhine #
module wd #
module winbond-840 #
module xircom_cb #
module xircom_tulip_cb #
module acenic #
module bnx2 #
module dl2k #
module e1000 #
module ns83820 #
module hamachi #
module yellowfin #
module r8169 #
module sis190 #
module skge #
module sk98lin #
module sky2 #
module tg3 #
module via-velocity #
module cxgb #
module ixgb #
module s2io #
module usb-hid #
module usb-cdrom #
module ide-cd #
module ahci #
module ata_piix #
module sata_nv #
module sata_promise #
module sata_sil #
module sata_sil24 #
module sata_sis #
module sata_via #
module isofs #
module vfat #
module ntfs #
module ext2 #
module ext3 #
module supermount #
package hwclock #
package rdate #
package xorg6-tinyx #
package xf3-svga #
package xf3-s3 #
package xf3-vmware #
package xorg6vnc #
package xorg6-apm #
package xorg6-ark #
package xorg6-ati #
package xorg6-chips #
package xorg6-cirrus #
package xorg6-cyrix #
package xorg6-glint #
package xorg6-i740 #
package xorg6-i810 #
package xorg6-mga #
package xorg6-neomagic #
package xorg6-nsc #
package xorg6-nv #
package xorg6-r128 #
package xorg6-radeon #
package xorg6-rendition #
package xorg6-s3 #
package xorg6-s3virge #
package xorg6-savage #
package xorg6-siliconmotion #
package xorg6-sis #
package xorg6-tdfx #
package xorg6-tga #
package xorg6-trident #
package xorg6-tseng #
package xorg6-vesa #
package xorg6-via #
package xorg6-vmware #
package keymaps-fr #
package rdesktop #
package icewm #
package xtdesk #
package openvpn #
package e3 #
Dans la seconde partie de ce fichier de configuration, soyez vigilent et modifiez les mots de passe selon vos besoins. Vous pouvez aussi définir la résolution par défaut ainsi que le nom de votre client (pour faire pro :p).
param rootpasswd motdepasseroot#
param xorgvncpasswd motdepassevnc#
param storagepasswd motdepassestorage#
param dialuppasswd motdepassedialup#
param sambapasswd motdepassesamba#
param bootlogo true #
param bootresolution 1024x768 #
param defaultconfig thinstation.conf.buildtime #
param basename Nomdevotreclient#
param basepath . #
param localpkgs false #
param fulllocales false #
param icaencryption false #
param bootverbosity 3 #
param icaurl file://var/www/TSoM/installs/en.linuxx86.tar.gz #
param firefoxurl file://var/www/TSoM/installs/2.3/firefox-2.x-current.tar.gz #
param flashurl file://var/www/TSoM/installs/flashplayer/current/install_flash_player_9_linux.tar.gz #
param nxurl file://var/www/TSoM/installs/nxclient-3.x-current.i386.tar.gz #
param 2xurl file://var/www/TSoM/installs/2xApplicationServerClient3.tar.bz2 #
param javaurl file://var/www/TSoM/installs/jre-1_5_0_06-linux-i586.bin #
param tarantellaurl file://var/www/TSoM/installs/tnci3li.tar #
Puis on modifie le fichier de configuration fonctionnel « thinstation.conf.buildtime », c'est à dire la façon dont le LiveCD va démarrer.
vim thinstation.conf.buildtime
Dans ce fichier se trouve la première partie de la configuration, la seconde se trouvant dans un autre dossier que nous étudierons plus loin pour la personnalisation du client.
AUDIO_LEVEL=67
KEYBOARD_MAP=fr
TIME_ZONE="UTC+1"
SYSLOG_SERVER=local
USB_ENABLED=On
DAILY_REBOOT=On
CUSTOM_CONFIG=Off
RECONNECT_PROMPT=AUTO
SCREEN=0
WORKSPACE=1
AUTOSTART=On
ICONMODE=AUTOSCREEN_RESOLUTION="1280x1024"
SCREEN_COLOR_DEPTH="16"
SCREEN_BLANK_TIME=100
SCREEN_STANDBY_TIME=200
SCREEN_SUSPEND_TIME=300
SCREEN_OFF_TIME=600
MOUSE_RESOLUTION=100
X_DRIVER_OPTION1="swcursor On"
NET_HOSTNAME=Client
STORAGE_CONFIG2=/mnt/cdrom
Modification des parametres openvn
Nous avons activé un module pour intégrer openvpn dans le LiveCD. Malheureusement, ce module est pré-paramétré pour ne fonctionner qu'en mode tap (bridge). Il faut donc modifier les paramètres de openvpn pour pouvoir l'utiliser en mode tun (tunnel).
Pourquoi ce choix du mode tun ? Dans le cadre de ce projet, nous sommes en train de préparer le client sou la forme d'un LiveCD. Mais il faut aussi prévoir l'autre "bout" du tunnel. Le choix s'est porté sur un Ipcop associé au module "Zérina" permettant d'administrer un openvpn. C'est donc l'Ipcop qui créera le certificat client ainsi que le mot de passe associé. Le seul hic est que ce module Zérina, à l'inverse du module Thinstation, ne peut fonctionner qu'en mode tun !!!
Nous allons donc jusqu'au fichier de configuration de Openvpn.
vim packages/openvpn/etc/openvpn/client.tpl
Les paramètres actuelles sont les suivants.
Remplacez la totalité de cette configuration par la suivante.
auth-user-pass
tls-client
client
dev tun
proto $OPENVPN_PROTO
tun-mtu 1400
remote $OPENVPN_SERVER
port $OPENVPN_PORT
pkcs12 client.p12
cipher BF-CBC
comp-lzo
verb 3
ns-cert-type server
Ce module Openvon se lance durant le runlevel rc0, c'est-à-dire parmi les tous premiers scripts au démarrage du LiveCD, et notamment avant le chargement du clavier français (Ce qui créé comme effet de bord que la demande des identifiants de connexion se fait avec un clavier qwerty… beurk…).
En passant le chargement du script d’authentification Openvpn sur le runlevel rc5 (chargement de l’interface graphique), le script de gestion du clavier azerty est déjà chargé donc il n’y a plus de problème. Pour cela, il suffit de renommer le dossier "rc0.d" en "rc5.d".
cd packages/openvpn/etc
mv rc0.d rc5.d
Vous pouvez fouiller dans cette arborescence pour changer par exemple la page de Splash Screen mais c'est un détail. Votre client est terminé et vous pouvez créer l'iso.
cd /usr/src/Thinstation-2.2.2c
./build
Le résultat est dans le dossier suivant.
cd boot-images/iso
Personnalisation de l'archive
En l’état, cet iso peut être gravé mais il manque les paramètres de connexion d’Openvpn (adresse IP de connexion, port, protocole) ainsi que l’adresse IP du poste à accéder en RDP sur notre domaine. Faire les derniers réglages s'avérer extrêmement simple sous Windows avec la boite à outils rebuild.
Récupérez cette boite à outils ainsi que le fichier iso que nous avons créé dans l'étape précédente. Décompressez ces fichiers.
Le fichier iso contient 5 fichiers.
Copiez-les dans dans le répertoire cd-files du rebuild-iso.
On modifie le fichier isolinux.cfg car de nombreux postes un peu anciens réagissent mal à la gestion d’énergie (acpi). On le désactive donc durant le chargement du LiveCD en ajoutant la commande "acpi=off".
timeout 0
default vmlinuz
append initrd=initrd load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=524288 console=ttyS3 acpi=off splash=silent vga=791
La personnalisation du LiveCD se fait en intégrant un dossier « thinstation.profile » au même endroit que les 5 fichiers de l'iso.
Ce dossier doit contenir le certificat utilisé pour la connexion Openvpn : LE NOM DE CE CERTIFICAT DOIT OBLIGATOIREMENT ETRE « CLIENT.P12 »
Vous pouvez remarquer qu'il est nécessaire d'ajouter un second fichier nommé thinstation.conf.user. On y trouve les informations du poste distant en RDP ainsi que les valeurs des variables du fichier de configuration Openvpn.
SESSION_0_TITLE="remoteRDP0 "
SESSION_0_TYPE=rdesktop
SESSION_0_RDESKTOP_SERVER=adresse-ip-du-poste-dentreprise cible
SESSION_0_SCREEN=0
SESSION_0_RDESKTOP_OPTIONS="-u 'compte-utilisateur-domaine-windows' -d "nom-du-domaine""
OPENVPN_SERVER="adresse-ip-public-du-serveur-ipcop"
OPENVPN_PORT="443"
OPENVPN_PROTO="tcp-client"
La personnalisation du CD est terminée et il faut maintenant créer l’iso. Pour cela, il suffit de cliquer sur « rebuild-iso.bat » qui va créer l’iso dans la seconde.
Conclusion
Le fonctionnement de ce LiveCD est limité à un fonctionnement sur un poste fixe (pas de portable car nous avons enlevé les drivers Wireless). De plus, le poste cible doit se trouver sur un réseau local non routé (donc bridgé) de façon à ce que l’ensemble du flux aille vers ce poste.
Enfin, il peut s’avérer, suivant l’ancienneté du poste, que la carte réseau ne soit pas reconnue.
Mots clefs : client leger, deploiement, pxe, thinclient, tseAucun trackbacks pour l'instant





27 mai 2010
Bonjour,
Pas mal, Pour ma part j’ essaie de faire du Rdesktop et je galère pas mal.
Je ne sais plus ou donner de la tête…
Je pense être près du but mais je ne vois pas ou cela coince.
Pouvez vous m’aider?
28 mai 2010
Je dois avouer ne pas avoir utilisé rdesktop mais plutôt le vncviewer.