El servicio POP (Post Office Protocol, puertos 109 y 110 en TCP) se
utiliza para que los usuarios puedan acceder a su correo sin necesidad de
montar sistemas de ficheros compartidos mediante NFS: los clientes
utilizan SMTP para enviar correo y POP para recogerlo del servidor,
de forma que el procesamiento se realice en la máquina del usuario. Se trata
de un
servicio que podríamos considerar peligroso, por lo que - como el resto,
pero este especialmente - debemos deshabilitarlo a no ser que sea
estrictamente necesario ofrecerlo; en ese caso debemos restringir al máximo
los lugares desde los que se puede acceder, mediante TCP Wrappers.
En algunos sistemas se utiliza POP simplemente para evitar otorgar
cuentas completas a los usuarios: si sólo van a utilizar la máquina
para leer su correo, >por qué ofrecerles un shell `completo', con
acceso a todo el sistema? Realmente esto es cierto (sería un error
permitir ejecutar ciertas órdenes a aquellos que sólo utilizarán el equipo
para gestionar su correo), pero en muchas ocasiones esta solución no es del
todo conveniente: aparte de los peligros que implica un servicio adicional, que
de otra forma no utilizaríamos - en algunos demonios de POP han
surgido bugs que incluso otorgaban un privilegio de root remoto
sin necesidad de ninguna clave -, estamos generando un tránsito peligroso
de contraseñas a través de la red. POP ofrece tres modelos distintos
de autenticación: uno basado en Kerberos, apenas utilizado, otro basado
en un protocolo desafío-respuesta (APOP, que tampoco se suele
utilizar), y otro basado en un simple nombre de usuario con su password
correspondiente. Este último, el más usado en todo tipo de entornos, es
un excelente objetivo para un pirata con un sniffer: los usuarios suelen
configurar sus clientes para que chequeen el buzón de correo cada pocos
minutos, con lo que a intervalos muy cortos envían su clave a un puerto
conocido de una máquina conocida; al realizar toda esta comunicación en
texto claro, un atacante no tiene más que interceptar la sesión POP
para averiguar nombres de usuario y claves (aparte de poder leer el correo que
baja del servidor al cliente). Si lo que deseamos es que nuestros usuarios no
disfruten de una cuenta completa simplemente para gestionar su correo, podemos
sustituir su shell en /etc/passwd por el nombre de dicho lector:
ircd:x:1001:100:Gestion IRC,,,:/home/ircd:/usr/bin/pine
En este caso hemos de tomar una precaución adicional: la mayoría de
programas de correo (elm, pine...) permiten escapes al shell, procedimientos que tarde o temprano ejecutan con éxito un
intérprete de órdenes; por ejemplo, con elm no tenemos más que
iniciar vi para escribir un mensaje y en el editor ejecutar :!/bin/sh para ejecutar este intérprete. Para evitar estos escapes o bien
podemos modificar el código del gestor de correo - algo no muy habitual - o
utilizar ya versiones modificadas disponibles a través de Internet.
© 2002 Antonio Villalón Huerta