13.5. Seguridad en el Servidor NIS

NIS solía tener un defecto grave de seguridad: dejaba su fichero de contraseñas legible por prácticamente cualquier persona en toda Internet, lo que suponía un gran número de posibles intrusos. Si un intruso sabía su (de usted) dominio NIS y la dirección de su servidor, simplemente tenía que enviar una consulta al mapa passwd.byname y recibir al instante todas las contraseñas encriptadas del sistema. Con un programa rápido para crackear contraseñas como el crack, y un buen diccionario, averiguar unas cuantas contraseñas de usuario no es problema.

De todo esto trata la opción securenets. Esta opción simplemente restringe el acceso a su servidor NIS a ciertos nodos, basándose en su dirección IP o números de red. La última versión de ypserv implementa esta característica de dos maneras. La primera consta de un fichero de configuración especial llamado /etc/ypserv.securenets y la segunda utiliza convenientemente los ficheros /etc/hosts.allow y /etc/hosts.deny que ya nos encontramos en Capítulo 12.[1] Así, para restringir el acceso a los nodos de dentro de la Cervecera, su administrador de red añadiría esta línea al hosts.allow:
    ypserv: 172.16.2.

Esto permitiría a todos los nodos de la red 172.16.2.0 acceder al servidor NIS. Para denegar el acceso al resto de nodos, la correspondiente línea en el hosts.deny sería:
    ypserv: ALL

Las direcciones IP no son la única manera de especificar nodos y redes en hosts.allow y hosts.deny. Por favor, consulte la página del manual hosts_access(5) de su sistema para más detalles. Sin embargo, advierta que no puede utilizar nombres de nodo o de dominio en la entrada ypserv. Si especifica un nombre de nodo, el servidor tratará de resolver este nombre de nodo—pero el resolvedor a su vez llamará a ypserv, y caerá en un bucle infinito.

Para configurar la seguridad securenets utilizando el método /etc/ypserv.securenets, necesita crear el fichero de configuración, /etc/ypserv.securenets. Este fichero de configuración es simple en su estructura. Cada línea describe un nodo o red de nodos que tendrán permiso de acceso al servidor. Cualquier dirección no descrita con una entrada en este fichero tendrá denegado el acceso. Una línea que comience por # será tratada como comentario. El ejemplo 13-1 muestra cómo sería un sencillo fichero /etc/ypserv.securenets:

Ejemplo 13-1. Fichero ypserv.securenets de Ejemplo

    # permitir conexiones desde el nodo local -- necesario
    host 127.0.0.1
    # lo mismo para 255.255.255.255 127.0.0.1
    #
    # permitir conexiones desde cualquier nodo de la red de la Cervecera Virtual
    255.255.255.0   172.16.1.0
    #

La primera entrada de cada línea es la máscara de red a utilizar, siendo host una palabra clave especial que significa “máscara de red 255.255.255.255”. La segunda entrada de cada línea es la dirección IP a la que aplicar la máscara de red.

Una tercera opción es utilizar el mapeador de puertos (portmapper) seguro en lugar de la opción securenets de ypserv. El mapeador de puertos seguro (portmap-5.0) utiliza también el esquema de hosts.allow, pero ofrece esto a todos los servidores RPC, no sólo a ypserv. [2] Sin embargo, no se debe utilizar la opción securenets y el mapeador de puertos seguro al mismo tiempo, por la sobrecarga que esto supondría.

Notas

[1]

Para habilitar el uso del método /etc/hosts.allow, puede que tenga que recompilar el servidor. Por favor, lea las instrucciones del fichero README incluido en la distribución.

[2]

El mapeador de puertos seguro está disponible vía FTP anónimo en ftp.win.tue.nl en el directorio /pub/security/.