Sécurité
Il y a deux façons de restreindre l'accès à un serveur X. La première
ne concerne que les machines sur lesquelles tournent les clients. Elle ne
distingue pas plusieurs utilisateurs d'une même machine. Elle est a donc
très rudimentaire et elle est mise en œuvre par le client
xhost. La seconde concerne vraiment les utilisateurs et offre
plusieurs niveaux de sécurité. Elle utilise le fichier
.Xauthority qui est manipulé par la commande xauth.
Autorisation basée sur les machines
Le serveur X gère une liste de machines à partir desquelles les clients
sont autorisés à se connecter au serveur X. Cette liste est manipulée par
le client xhost qui admet les options suivantes.
- xhost : affiche la liste des machines.
- xhost + : le mécanisme d'autorisation est désactivé et tous
les clients sont autorisés à se connecter.
- xhost - : le mécanisme d'autorisation est activé et seuls
les clients dans la liste sont autorisés à se connecter.
- xhost +machine : ajoute la machine à la liste.
- xhost -machine : supprime la machine de la liste.
Cette méthode offre une sécurité très sommaire car toute personne qui
est connectée sur une machine autorisée peut se connecter.
Autorisation basée sur de l'authentification
Cette méthode est basée sur l'authentification des clients qui doivent
s'identifier en se connectant au serveur X. Elle offre quatre modes de
fonctionnement, dont certains donnent un niveau de sécurité élevé même
s'ils sont lourds à mettre en œuvre. Les certificats d'authorisation
sont stockés dans le fichier .Xauthority qui est manipulé par la
commande xauth. Pour que la sécurité soit effective, ce fichier
doit être protégé avec des droits de lecture restreints au
propriétaire.
Le fichier .Xauthority contient des clés permettant de se
connecter à des serveurs X. Ils peut contenir simultanément des clés
permettant de se connecter à différents serveurs ou à un même serveur. Il
ne doit pas être édité à la main. Le client xauth permet
d'afficher son contenu, d'en extraire des clés et d'en ajouter. Il admet
les options principales suivantes.
- xauth list : liste le contenu du fichier
.Xauthority de manière compréhensible.
- xauth [n]extract file display : extrait du
fichier .Xauthority et place dans le fichier
file les clés correspondantes au serveur
display.
- xauth [n]merge file : ajoute au fichier
.Xauthority les clés contenues dans le fichier
file.
Voici un exemple typique d'utilisation de xauth pour
transférer des clés sur une autre machine.
% xauth extract - $DISPLAY | rsh otherhost xauth merge -
Les modes d'authentification
Il y a les quatre modes d'identifications suivants.
- MIT-MAGIC-COOKIE-1
- Dans ce mode d'identification, le client xdm génère une clé
d'identification pour chaque session. Cette clé est transmise par
xdm au serveur X et stockée dans le fichier .Xauthority
de l'utilisateur. Afin d'être autorisé à se connecter, un client doit
fournir cette clé. La clé circule en clair sur le réseau et ce mode
d'authentification est donc vulnérable à l'écoute du réseau.
- XDM-AUTHORIZATION-1
- Dans ce mode d'identification la clé contenue dans le fichier
.Xauthority est formée d'une clé de session et d'une clé DES
partagée avec le serveur X. Ces deux clés sont générées par xdm
à l'établissement de la session. Pour se connecter, un client envoie au
serveur X un identifiant formée de la date, de l'adresse et du port
TCP/IP et encryptée avec la clé DES. Le serveur X peut alors décrypter
l'identifiant avec la clé DES et vérifier que le client est autorisé à
se connecter. Le système DES n'est normalement pas exportable en dehors
des États-Unis.
- SUN-DES-1
- Ce mode d'authentification utilise les RPC sécurisé et il donc plus sûr
même s'il est plus lourd à mettre en œuvre.
- MIT-KERBEROS-5
- Ce mode d'authentification est basé sur Kerberos V qui est très lourd à mettre en
œuvre.