MAGIC-COOKIE, .Xauthority et Xauth

Xwindow est conçu pour fonctionner en réseau, il est ainsi possible de lancer une application sur une machine et de déporter l’affichage sur une autre.

Le moyen sécurisé d’autoriser des connexions à un serveur X (avec des machines sur un LAN sécurisé) est d’utiliser la commande xauth, elle garanti l’authentification entre deux machine via un secret partagé : le MAGIC-COOKIE, qui est une chaîne de 128 bits (la communication reste cependant en clair et le MAGIC-COOKIE peut être récupéré).

Commande xauth

La commande xauth permet de gérer les MAGIC-COOKIES et sont placés dans un fichier $HOME/.Xauthority.

xauth [ -f authfile ] [ -vqibn ] [ command arg ... ] 

Lister les MAGIC-COOKIE contenu dans $HOME/.Xauthority :

$ xauth list
myserver-abc-0123.my.domain.org:13 MIT-MAGIC-COOKIE-1 abcdef0123456789abcdef0123456789
myserver-abc-0123.my.domain.org:15 MIT-MAGIC-COOKIE-1 cdef0123456789abcdef0123456789ab
myserver-abc-0123.my.domain.org:16 MIT-MAGIC-COOKIE-1 ef0123456789abcdef0123456789abcd
myserver-abc-0123.my.domain.org:17 MIT-MAGIC-COOKIE-1 bcdef0123456789abcdef0123456789a
myserver-abc-0123.my.domain.org:11 MIT-MAGIC-COOKIE-1 def0123456789abcdef0123456789abc

Signification du résultat :

  • dpyname : l’hostname
  • protocole : MIT-MAGIC-COOKIE-1
  • valeur du MAGIC-COOKIE

Pour avoir des infos supplémentaires :

$ xauth info
Authority file: /home/john/.Xauthority
File new: no
File locked: no
Number of entries: 5
Changes honored: yes
Changes made: no
Current input: (argv):1

Problèmes

Erreurs rencontrées

Si vous rencontrez une erreur similaire :

Last login: Wed Mar 29 13:39:47 2023 from 10.132.0.27
/usr/bin/xauth: file /home/john/.Xauthority does not exist

Ou

X11 connection rejected because of wrong authentication.
X connection to localhost:10.0 broken (explicit kill or server shutdown)

Manuel SSH

Extrait du manuel SSH :

The DISPLAY value set by ssh will point to the server machine, but with a display number greater than zero. This is normal, and happens because ssh creates a “proxy” X server on the server machine for forwarding the connections over the encrypted channel.
ssh will also automatically set up Xauthority data on the server machine. 
For this purpose, it will generate a random authorization cookie, store it in Xauthority on the server, and verify that any forwarded connections carry this cookie and replace it by the real cookie when the connection is opened. The real authentication cookie is never sent to the server machine (and no cookies are sent in the plain).

Il faut dans un 1er temps vérifier la valeur de la variable $DISPLAY :

$ echo $DISPLAY
localhost:11.0

Il faut donc ajouter la ligne correspondant au display 11 :

$ xauth add myserver-abc-0123.my.domain.org:11  MIT-MAGIC-COOKIE-1  def0123456789abcdef0123456789abc

Securiser les connexions

Sur le client, dans ssh_config :

ForwardX11 yes

Sur le serveur, dans sshd_config :

X11Forwarding yes
X11UseLocalhost no

Paquets nécessaires

Paquets :

$ yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-utils -y 

Documentation

https://www.x.org/archive/X11R6.7.0/doc/xauth.1.html
http://okki666.free.fr/docmaster/articles/linux121.htm
https://unix.stackexchange.com/questions/139038/x11-connection-established-but-magic-cookie-value-different

> Partager <