Product SiteDocumentation Site

5.4. Sécurisation de l'accès au système X Window

Actuellement, les terminaux X sont de plus en plus utilisés dans les entreprises où un seul serveur est nécessaire pour un grand nombre de stations de travail. Cela peut être dangereux car vous devez autoriser le serveur de fichiers à se connecter aux clients (le serveur X d'un point de vue X. X intervertit la notion de client et de serveur). Si vous suivez les (très mauvaises) suggestions de nombreuses documentations, vous tapez xhost + sur la machine. Cela autorise tout client X à se connecter au système. Pour une sécurité légèrement meilleure, vous pouvez utiliser la commande xhost +hostname à la place, ce qui permet de n'autoriser les accès que depuis certains hôtes.
Une solution encore meilleure serait d'utiliser un tunnel SSH pour X et de chiffrer toute la session. C'est fait automatiquement lors de l'utilisation de SSH pour se connecter sur une autre machine. Pour que cela fonctionne, vous devez configurer à la fois le client SSH et le serveur SSH. Sur le client SSH, ForwardX11 doit être positionné à yes dans /etc/ssh/ssh_config. Sur le serveur SSH, X11Forwarding doit être positionné à yes dans /etc/ssh/sshd_config et le paquet xbase-clients doit être installé car le serveur SSH utilise /usr/X11R6/bin/xauth (/usr/bin/xauth sur Debian unstable) pour mettre en place le pseudoaffichage X. À l'heure de SSH, vous devriez abandonner complètement le contrôle d'accès basé sur xhost.
Pour une sécurité accrue, si vous n'avez pas besoin d'accéder à X depuis d'autres machines, désactivez l'écoute sur le port TCP 6000 en tapant simplement :
$ startx -- -nolisten tcp
C'est le comportement par défaut dans XFree 4.1.0 (le serveur X fourni dans Debian 3.0 et 3.1). Si vous utilisez XFree 3.3.6 (vous avez donc Debian 2.2 installée), vous pouvez éditer /etc/X11/xinit/xserverrc afin d'avoir quelque chose ressemblant à ceci :
#!/bin/sh
exec /usr/bin/X11/X -dpi 100 -nolisten tcp
Si vous utilisez XDM, mettez /etc/X11/xdm/Xservers à : :0 local /usr/bin/X11/X vt7 -dpi 100 -nolisten tcp. Si vous utilisez GDM, assurez-vous que l'option DisallowTCP=true est positionnée dans /etc/gdm/gdm.conf (qui est par défaut dans Debian). Cela va basiquement ajouter -nolisten tcp à chaque ligne de commande X [44].
Vous pouvez également positionner l'expiration de délai système par défaut pour les blocages xscreensaver. Même si l'utilisateur peut annuler cela, vous devriez éditer le fichier de configuration /etc/X11/app-defaults/XScreenSaver et changer la ligne de blocage :
*lock:                  False
(qui est par défaut dans Debian) à :
*lock:                  True
FIXME : Ajouter des informations sur comment désactiver les économiseurs d'écran qui affichent l'écran de l'utilisateur (qui peuvent avoir des informations sensibles).
Plus de renseignements sur la sécurité X Window dans http://www.linuxdoc.org/HOWTO/XWindow-User-HOWTO.html (/usr/share/doc/HOWTO/en-txt/XWindow-User-HOWTO.txt.gz).
FIXME : Ajouter des informations d'une discussion de debian-security pour avoir les modifications des fichiers de configuration de XFree 3.3.6 pour faire cela.

5.4.1. Vérifiez le gestionnaire d'affichage

Si vous ne voulez un gestionnaire d'affichage installé que pour une utilisation locale (avec une jolie connexion graphique, tout de même), assurez-vous que le XDMCP (X Display Manager Control Protocol) est désactivé. Dans XDM, vous pouvez faire cela avec cette ligne dans /etc/X11/xdm/xdm-config :
DisplayManager.requestPort:     0
Pour GDM, il devrait y avoir dans le fichier gdm.conf :
[xdmcp]
Enable=false
Normalement, tous les gestionnaires d'affichages sont configurés par défaut pour ne pas démarrer les services XDMCP dans Debian.


[44] GDM n'ajoutera pas -nolisten tcp s'il trouve -query ou -indirect sur la ligne de commande car cela ne pourrait pas fonctionner.