Si quiere configurar su sitio para recibir llamadas tendrá que permitir conexiones por su puerto serie y personalizar algunos ficheros del sistema para ofrecer cuentas UUCP, lo que cubriremos en esta sección.
A continuación tiene que configurar las cuentas de usuarios que permiten a sistemas remotos entrar en su sistema y establecer una conexión de UUCP. Generalmente tendrá que suministrar un nombre de usuario para cada sistema que se conecte con usted. Cuando configura una cuenta para el sistema pablo, puede darle el nombre de usuario Upablo. No hay ninguna política sobre los nombres de entrada; pueden ser cualquier cosa, pero le convendrá que el nombre de entrada pueda relacionarse fácilmente con el nombre del sitio remoto.
Para los sistemas que se conectan con el suyo a través de puerto serie, normalmente tendrá que añadir estas cuentas al fichero de contraseñas del sistema /etc/passwd. Una buena práctica es poner todas las entradas de UUCP en un grupo especial como uuguest. El directorio principal de la cuenta debería configurarse como el directorio público de la cola /var/spool/uucppublic ; su intérprete de órdenes de entrada debe ser uucico.
Para servir a sistemas UUCP que se conecten con su sitio sobre TPC, tendrá que configurar inetd de forma que gestione las conexiones entrantes por el puerto uucp añadiendo la siguiente línea a su /etc/inetd.conf :[1]
uucp stream tcp nowait root /usr/sbin/tcpd /usr/lib/uucp/uucico -l |
La opción –l hace que uucico lleve a cabo su propia autorización de entrada. Solicitará un nombre de entrada y una contraseña igual que el programa login estándar, pero basándose en su propia base de datos privada con las claves en vez de en /etc/passwd. Este fichero privado de contraseñas se conoce como /etc/uucp/passwd y contiene pares de nombres de entrada y contraseñas:
Upablo IslaNegra Ulorca co'rdoba |
Este fichero tiene que ser propiedad de uucp y tener 600 como permiso.
¿Le parece esta base de datos una idea tan buena que le gustaría en las entradas al sistema por serie también? Bien, en algunos casos puede hacerlo. Lo que necesita es un programa getty al que pueda pedirle que invoque a uucico en vez de a /bin/login para sus usuarios UUCP. [2] La invocación de uucico sería de esta forma:
/usr/lib/uucp/uucico -l -u usuario |
Para proteger a sus usuarios de UUCP de otros que den un nombre de sistema falso y les lean todo el correo, tiene que añadir órdenes called-login a cada entrada de sistema en el fichero sys. Esto se describe en la sección siguiente.
Uno de los mayores problemas con UUCP es que el sistema que nos llama puede mentir acerca de su nombre; comunica su nombre al sistema que llama después de entrar, pero el servidor no tiene manera de comprobarlo. Por consiguiente, un atacante podría entrar con su propia cuenta de UUCP, pretender ser otra persona, y coger el correo de esa otra persona. Esto representa un grave problema, especialmente si usted ofrece entrada mediante UUCP anónimo, que tiene una clave pública.
Usted debe protegerse de estos impostores. La cura de esta enfermedad va a requerir que cada sistema un nombre de entrada en particular especificando un called-login en sys. Una entrada de sistema de ejemplo sería algo así:
system pablo ... usual options ... called-login Upablo |
La ventaja es que cuando un sistema entre y finja ser pablo, uucico comprobará si ha entrado como Upablo. De no ser así, se desconectará al sistema que haya llamado. Debería acostumbrarse a añadir la orden called-login a cada entrada de sistema que añada a su fichero sys. Es importante que haga esto en todos los sistemas de su fichero sys, independientemente de si van a llamar a su sistema o no. Para los sitios que nunca le llamen, probablemente debería asignar called-login a algún nombre de usuario totalmente ficticio, como nuncaentras.
Otra manera de detectar y rechazar a los impostores es usar comprobaciones de la secuencia de llamada. Éstas le ayudan a protegerse de intrusos que hayan logrado averiguar de alguna manera una contraseña con la que entrar a su sistema UUCP.
Cuando usa comprobación de secuencia de llamadas, ambas máquinas mantienen una cuenta del número de conexiones establecidas hasta el momento. Se incrementa con cada conexión. Después de entrar, el llamador envía su número de secuencia de llamadas y el sistema llamado lo comprueba con su propio número. Si no son iguales, el intento de conexión es rechazado. Si el número inicial se elige aleatoriamente, los atacantes lo tendrán más dificil para adivinar el número de secuencia de llamadas correcto.
Pero la comprobación de la secuencia de llamada sirve para más que esto: aunque una persona muy inteligente descubriese su número de secuencia de llamada así como su clave, usted sabrá que esto ha ocurrido. Cuando el atacante llama al sistema de UUCP que le provee el correo a usted y roba su correo, esto incrementa el número de secuencia de llamada en uno. La siguiente vez que usted se conecte con su proveedor de correo e intenta entrar, el uucico remoto le rechazará, porque los números de secuencia ya no son iguales.
Si ha activado la comprobación de las secuencias de llamadas, debería mirar sus ficheros de registro de manera regular en busca de mensajes de error que apunten a posibles ataques. Si su sistema rechaza el número de secuencias de llamadas que le ofrece el sistema que llama, uucico pondrá un mensaje en el fichero de registro diciendo algo como “Out of sequence call rejected.” (Llamada fuera de secuencia rechazada). Si su sistema es rechazado por quien le suministra porque los números de la secuencia no están sincronizados, pondrá un mensaje diciendo “Handshake failed (RBADSEQ)” (Negociación fallida (RBADSEQ)).
Para activar la comprobación de secuencias de llamada, añada la siguiente orden a la entrada del sistema:
# activar comprobación de secuencias de llamada sequence true |
Además, tiene que crear el fichero que contiene el número de secuencias en sí. Taylor UUCP guarda el número de secuenciasen un fichero llamado .Sequence en el directorio de cola del sitio remoto. Debe ser propiedad de uucp y debe estar en modo 600 (esto es, sólo uucp puede leerlo y modificarlo). Lo mejor es inicializar este fichero con un valor que ambas partes hayan acordado previamente. Una manera sencilla de crear este fichero es:
# cd /var/spool/uucp/pablo # echo 94316 > .Sequence # chmod 600 .Sequence # chown uucp.uucp .Sequence |
Evidentemente, el sitio remoto tiene que habilitar igualmente la comprobación de secuencias de llamadas y comenzar usando exactamente el mismo número de secuencia.
Si quiere ofrecer acceso a su sistema por UUCP anónimo primero tendrá que configurar una cuenta especial para ello como se describe anteriormente. Una práctica común es proporcionar a la cuenta anónima uucp como nombre de entrada y contraseña.
Además, tiene que configurar unas pocas opciones de seguridad para sistemas desconocidos. Por ejemplo, puede querer prohibir que ejecuten cualquier orden en su sistema. De todas maneras, no puede ajustar estas variables en una entrada del fichero sys porque la orden system requiere el nombre del sistema, que usted no tiene. Taylor UUCP resuelve este dilema mediante la orden unknown. unknown puede usarse en el fichero config para especificar cualquier orden que pueda aparecer de manera habitual en una entrada de sistema:
unknown remote-receive ~/incoming unknown remote-send ~/pub unknown max-remote-debug none unknown command-path /usr/lib/uucp/anon-bin unknown commands rmail |
Esto restringirá la descarga de ficheros desde sistemas desconocidos bajo el directorio pub y la carga de ficheros en el directorio incoming bajo /var/spool/uucppublic. La próxima línea hará que uucico ignore cualquier petición desde el sistema remoto para activar la depuración localmente. Las dos últimas líneas permiten a sistemas descnocidos ejecutar rmail ; pero la ruta especificada hace que uucico busque la orden rmail únicamente en un directoro privado llamado anon-bin. Esta restricción le permite ofrecer un rmail que, por ejemplo, reenvíe todo el correo al superusuario para que lo examine. Esto permite a los usuarios anónimos ponerse en contacto con el administrador del sistema previniéndoles al mismo tiempo de inyectar correo en otros sitios.
Para habilitar el UUCP anónimo debe especificar al menos una sentencia unknown en config. De otra manera uucico rechazará todos los sistemas desconocidos.
[1] | Tenga en cuenta que tcpd normalmente tiene el modo 700, por lo que debe invocarlo como usuario root, no uucp. tcpd se discute con mayor detalle en Capítulo 12. |
[2] | El mgetty de Gert Doering es una bestia de esa calaña. Corre sobre varias plataformas, incluyendo SCO Unix, AIX, SunOS, HP-UX y GNU/Linux. |
[3] | Esta opción no se encuentra presente en la versión 1.04. |