La autenticación por máquina cliente (host authentication) es el
mecanismo más simple, pero la seguridad que proporciona es muy limitada; es
útil en entornos donde los clientes X se ejecutan o bien en estaciones
monousuarios o bien en equipos donde todos los usuarios son confiables
([Vic94]). Además, en sistemas antiguos es el único modelo de
seguridad disponible, por lo que en ocasiones no queda más remedio que
limitarse a él. Funciona configurando el servidor para permitir conexiones
a él provenientes de una lista de máquinas, por ejemplo con la orden xhosts:
anita:~# xhost +luisa
luisa being added to access control list
anita:~#
Si ejecutamos la sentencia anterior en la máquina donde se ejecuta el
servidor, cualquier usuario del sistema remoto estará autorizado a
lanzar aplicaciones contra él15.4:
luisa:~# xterm -display anita:0.0 &
[1] 11974
luisa:~#
La orden xhost sin opciones nos dará una lista de los clientes que
pueden lanzar aplicaciones contra el servidor, mientras que la opción
especial `+' deshabilitará este control de acceso, algo que
evidentemente no es recomendable: cualquier usuario de cualquier sistema
podrá utilizar nuestro servidor:
anita:~# xhost
access control enabled, only authorized clients can connect
LOCAL:
INET:anita
INET:localhost
INET:luisa
anita:~# xhost +
access control disabled, clients can connect from any host
anita:~# xhost
access control disabled, clients can connect from any host
LOCAL:
INET:anita
INET:localhost
INET:luisa
anita:~#
Una medida de seguridad básica utilizando este modelo es habilitar la
máquina en nuestra lista de hosts sólo el tiempo necesario para que
el cliente arranque, y deshabilitarla después; así la ejecución de
la aplicación cliente funcionará normalmente, pero no se podrán lanzar
nuevas peticiones al servidor. También para eliminar una dirección de la
lista utilizamos la orden xhost:
anita:~# xhost
access control enabled, only authorized clients can connect
LOCAL:
INET:anita
INET:localhost
INET:luisa
anita:~# xhost -luisa
luisa being removed from access control list
anita:~# xhost
access control enabled, only authorized clients can connect
LOCAL:
INET:anita
INET:localhost
anita:~#
De esta forma, cuando alguien intente lanzar una aplicación contra nuestro
servidor desde un sistema no autorizado verá un mensaje de error similar al
siguiente:
luisa:~# xterm -display anita:0.0
Xlib: connection to "anita:0.0" refused by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: anita:0.0
luisa:~#
Como hemos dicho, este modelo de seguridad es demasiado vulnerable; por un lado,
estamos autenticando clientes en base a una dirección o a un nombre de
máquina, algo fácilmente falsificable por un atacante. Por otro, aunque
los usuarios de los sistemas a los que permitimos utilizar nuestro servidor sean
conocidos, fiables, y amantes de la naturaleza, nada nos demuestra que sus
sistemas sean seguros, por lo que si sus equipos se ven comprometidos, nuestro
servidor también.
© 2002 Antonio Villalón Huerta