NIS viene de Network Information Service, servicio de información de redes. Es un servicio RPC llamado ypserv el cual es usado en conjunto con portmap y otros servicios relacionados, para distribuir mapas de nombres de usuarios, contraseñas y otra información confidencial a cualquier computador dentro de su dominio.
Un servidor NIS esta compuesto de varias aplicaciones. Ellas incluyen las siguientes:
/usr/sbin/rpc.yppasswdd — También llamado el servicio yppasswdd, este demonio permite a los usuarios cambiar sus contraseñas NIS.
/usr/sbin/rpc.ypxfrd — También llamado ypxfrd, es el demonio responsable de las transferencias de mapas NIS sobre la red.
/usr/sbin/yppush — Esta aplicación propaga las bases de datos NIS modificadas a múltiples servidores NIS.
/usr/sbin/ypserv — Este es el demonio del servidor NIS.
NIS es más bien inseguro para los estándares de hoy día. No tiene mecanismos de autenticación y pasa toda la información sobre la red sin encriptación, incluyendo las contraseñas. Como consecuencia, se debe tener extremo cuidado cuando se configure una red que utilice NIS. Para complicar la situación aún más, la configuración por defecto de NIS es insegura en si.
Se recomienda que cualquiera que este planeando implementar un servidor NIS, primero asegure el servicio portmap como se describió en la Sección 5.2, y luego solucione los problemas que siguen.
Debido a que NIS pasa información confidencial sin encriptar sobre la red, es importante que se ejecute el servicio detrás de un cortafuegos y en una red segmentada y segura. Cada vez que se transmite información NIS a través de la red, hay riesgos de que sea interceptada. Un diseño de la red cuidadoso en este aspecto puede ayudar a prevenir violaciones de la seguridad.
Cualquier máquina dentro de un dominio NIS puede usar comandos para extraer información desde el servidor sin necesidad de autenticación, siempre y cuando el usuario conozca el nombre DNS y del dominio del servidor NIS.
Por ejemplo, si alguien conecta una portátil a la red o irrumpe en la red desde afuera (y logra simular una dirección IP interna) el comando siguiente revelará el mapa /etc/passwd:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd |
Si este atacante es un usuario root, podrá obtener el archivo /etc/shadow escribiendo el comando siguiente:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow |
![]() | Nota |
---|---|
Si se utiliza Kerberos, el archivo /etc/shadow no se almacena dentro del mapa NIS. |
Para hacer el acceso a los mapas NIS más difícil para un atacante, cree una cadena de caracteres aleatoria para el nombre DNS de la máquina, tal como o7hfawtgmhwg.domain.com. De la misma manera, cree un nombre aleatorio diferente para el nombre de dominio NIS. Esto hará mucho más difícil a un atacante accesar el servidor NIS.
NIS escuchará a todas las redes si el archivo /var/yp/securenets está en blanco o no existe (como es el caso después de una instalación por defecto). Una de las primeras cosas que debería hacer es colocar los pares máscaras/redes en el archivo para que ypserv sólo responda a las peticiones desde la red adecuada.
Abajo se muestra una entrada de muestra de un archivo /var/yp/securenets:
255.255.255.0 192.168.0.0 |
![]() | Aviso |
---|---|
Nunca arranque el servidor NIS por primera vez sin crear el archivo /var/yp/securenets. |
Esta técnica no proporciona protección ante un ataque de simulación de IP (IP spoofing), pero al menos coloca límites en qué redes servirá el servidor NIS.
A todos los servidores relacionados con NIS se les pueden asignar puertos específicos excepto por rpc.yppasswdd — el demonio que permite a los usuarios cambiar sus contraseñas de conexión. Asignar puertos a los otros dos demonios de servidores NIS, rpc.ypxfrd y ypserv, permite crear reglas de cortafuegos para proteger aún más los demonios del servidor NIS contra los intrusos.
Para hacer esto, añada las líneas siguientes a /etc/sysconfig/network:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835" |
Las siguientes reglas IPTables se pueden emitir para imponer a cual red el servidor escuchará para estos puertos:
iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 835 -j DROP |
![]() | Sugerencia |
---|---|
Consulte el Capítulo 7 para más información sobre la implementación de cortafuegos con comandos IPTables. |
Una de las debilidades inherentes más resaltantes cuando se utiliza NIS para autenticación, es que cada vez que un usuario se conecta a una máquina, se envia el hash de la contraseña desde /etc/shadow a través de la red. Si un intruso obtiene acceso a un dominio NIS y huzmea el tráfico de la red, puede reunir fácilmente los nombres de usuarios y contraseñas. Con tiempo suficiente, un programa de descifrado de contraseñas puede adivinar contraseñas débiles, y el atacante puede obtener acceso a una cuenta válida en la red.
Puesto que Kerberos utiliza criptografía de clave secreta, nunca se envian los hash de las contraseñas sobre la red, haciendo el sistema mucho más seguro. Para obtener más información sobre Kerberos, consulte el capítulo llamado Kerberos en el Manual de referencia de Red Hat Enterprise Linux.