Se llama socket a la combinación de una dirección de máquina y un
puerto; esta entidad identifica un proceso único en la red ([CZ95]).
Un par de sockets, uno en la máquina receptora y otro en la emisora
definen una conexión en protocolos como TCP; esta conexión también
será única en la red en un instante dado. Como vemos, no entra en juego
ningún nombre de usuario: en TCP/IP se establecen canales de
comunicación entre máquinas, no entre personas; no obstante, en muchas
ocasiones nos puede interesar conocer el nombre de usuario bajo el que cierta
conexión se inicia. Por ejemplo, de esta forma podríamos ofrecer o
denegar un servicio en función del usuario que lo solicita, aparte de la
máquina desde donde viene la petición.
El protocolo auth (puerto 113, TCP) viene a solucionar este
problema con un esquema muy simple: cuando un servidor necesita determinar el
usuario que ha iniciado una conexión contacta con el demonio identd y
le envía los datos necesarios para distinguir dicha conexión (los
componentes de los dos sockets que intervienen) de las
demás. De esta forma, el demonio identifica al usuario en cuestión y
devuelve al servidor información sobre dicho usuario, generalmente su login. Por ejemplo, si utilizamos TCP Wrappers - un programa servidor
que utiliza este mecanismo para determinar nombres de usuario siempre que sea
posible -, se registará el login del usuario remoto que solicita un
servicio en nuestra máquina si el sistema remoto tiene habilitado auth:
luisa:~# tail -2 ~adm/syslog
Apr 24 04:16:19 luisa wu.ftpd[1306]: connect from rosita
Apr 24 04:16:21 luisa ftpd[1306]: ANONYMOUS FTP LOGIN FROM \
rosita [192.168.0.1], toni@
luisa:~#
No obstante, si el sistema desde el que esa persona conecta no tiene habilitado
dicho servicio, el nombre de usuario no se va a poder conseguir:
luisa:~# tail -2 ~adm/syslog
Apr 24 04:19:37 luisa wu.ftpd[1331]: connect from root@anita
Apr 24 04:19:39 luisa ftpd[1331]: ANONYMOUS FTP LOGIN FROM \
root @ anita [192.168.0.3], toni@
luisa:~#
El servicio auth no se debe utilizar nunca con propósitos de
autenticación robusta, ya que dependemos no de nuestros sistemas, sino de la
honestidad de la máquina remota; un atacante con el suficiente nivel de
privilegio en esta puede enviarnos cualquier nombre de usuario que desee.
Incluso en ciertas situaciones, si ident no está habilitado ni siquiera
hacen falta privilegios para devolver un nombre falso: cualquier usuario puede
hacerlo. En cambio, sí que es útil para detectar pequeñas violaciones
de seguridad, por lo que quizás interese
habilitar el servicio en nuestras máquinas (aunque limitemos su uso mediante
TCP Wrappers.
© 2002 Antonio Villalón Huerta