En el sistema X Window , los programas se ejecutan como clientes X y, como tales, se conectan al servidor de visualización X , posiblemente a través de una red informática . Dado que la red puede ser accesible para otros usuarios , es necesario un método para prohibir el acceso a programas ejecutados por usuarios distintos del que está conectado.
Existen cinco mecanismos de control de acceso estándar que controlan si una aplicación cliente puede conectarse a un servidor de visualización X. Se pueden agrupar en tres categorías:
Además, como cualquier otra conexión de red, se puede utilizar la tunelización .
El método de acceso basado en host consiste en especificar un conjunto de hosts que están autorizados a conectarse al servidor de visualización X. Este sistema tiene una seguridad inferior, ya que permite que cualquier usuario que tenga acceso a dicho host se conecte a la pantalla. El xhost
programa y tres solicitudes de protocolo básico del sistema X Window se utilizan para activar este mecanismo y para mostrar y cambiar la lista de hosts autorizados. El uso inadecuado de xhost
puede dar inadvertidamente a todos los hosts de Internet acceso completo a un servidor de visualización X.
Los métodos de autorización basados en cookies se basan en elegir una cookie mágica (un fragmento de datos arbitrario) y pasarla al servidor de visualización X cuando se inicia; cada cliente que pueda demostrar que tiene conocimiento de esta cookie queda luego autorizado a conectarse al servidor.
Estas cookies son creadas por un programa independiente y almacenadas en el archivo .Xauthority
del directorio de inicio del usuario, de forma predeterminada. Como resultado, cada programa que ejecute el cliente en el equipo local puede acceder a este archivo y, por lo tanto, a la cookie necesaria para obtener la autorización del servidor. Si el usuario desea ejecutar un programa desde otro equipo de la red, la cookie debe copiarse en ese otro equipo. La forma en que se copia la cookie depende del sistema: por ejemplo, en plataformas tipo Unix , se puede utilizar scp para copiar la cookie.
Los dos sistemas que utilizan este método son MIT-MAGIC-COOKIE-1
y XDM-AUTHORIZATION-1
. En el primer método, el cliente simplemente envía la cookie cuando se le solicita que se autentique. En el segundo método, también se almacena una clave secreta.Xauthority
en el archivo. El cliente crea una cadena concatenando la hora actual, un identificador dependiente del transporte y la cookie, cifra la cadena resultante y la envía al servidor.
La aplicación xauth es una utilidad para acceder al .Xauthority
archivo. La variable de entorno XAUTHORITY
se puede definir para anular el nombre y la ubicación de ese archivo de cookies.
El protocolo de intercambio entre clientes (ICE) implementado por la biblioteca de intercambio entre clientes para la comunicación directa entre clientes X11 utiliza el mismo MIT-MAGIC-COOKIE-1
método de autenticación, pero tiene su propia utilidad iceauth.ICEauthority
para acceder a su propio archivo, cuya ubicación se puede anular con la variable de entorno ICEAUTHORITY
. ICE es utilizado, por ejemplo, por DCOP y el protocolo de administración de sesiones X (XSMP).
Los métodos de acceso basados en usuarios funcionan autorizando a usuarios específicos a conectarse al servidor. Cuando un cliente establece una conexión con un servidor, debe demostrar que está controlado por un usuario autorizado.
Los dos métodos basados en la autenticación de usuarios mediante sistemas de gestión de identidad en red son SUN-DES-1
y MIT-KERBEROS-5
. El primer sistema se basa en un mecanismo seguro del sistema de llamada a procedimiento remoto ONC desarrollado en SunOS . El segundo mecanismo se basa en que tanto el cliente como el servidor confíen en un servidor Kerberos .
Un tercer método se limita a las conexiones locales y utiliza llamadas del sistema para preguntar al núcleo qué usuario se encuentra en el otro extremo de un socket local. El xhost
programa puede utilizarse para agregar o eliminar localuser
entradas localgroup
con este método. [1]
La utilidad SSH-X
(cuando se invoca con la opción o con la opción ForwardX11
) canaliza el tráfico X11 desde los clientes invocados de forma remota al servidor local. Para ello, establece en el sitio remoto la DISPLAY
variable de entorno para que apunte a un socket TCP local abierto allí por sshd, que luego canaliza la comunicación X11 de vuelta a ssh. A continuación, sshd también llama a xauth para agregar en el sitio remoto una cadena MIT-MAGIC-COOKIE-1 .Xauthority
, que luego autoriza a los clientes X11 a acceder al servidor X local del usuario ssh.
Las conexiones X11 entre cliente y servidor a través de una red también se pueden proteger utilizando otros protocolos de canal seguro, como Kerberos / GSSAPI o TLS , aunque dichas opciones ahora se utilizan mucho menos que SSH.