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.

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.

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.