9.5. Asegurar NFS

NFS trabaja muy bien compartiendo sistemas de archivos enteros con un gran número de hosts conocidos de una manera muy transparente. Sin embargo, esta facilidad de uso trae una variedad de problemas potenciales de seguridad.

Los puntos siguientes deberían ser considerados cuando se exporte sistemas de archivos NFS en un servidor o cuando se monten en un cliente. Haciendo esto reducirá los riesgos de seguridad NFS y protegerá mejor los datos en el servidor.

Para una lista concisa de los pasos que los administradores deben seguir al asegurar servidores NFS, consulte el capítulo titulado Seguridad del servidor en el Manual de seguridad de Red Hat Enterprise Linux.

9.5.1. Acceso al sistema

NFS controla quien puede montar y exportar sistemas de archivos basados en la máquina que hace la petición, no el usuario que utiliza el sistema de archivos. Los hosts tienen que tener los derechos para montar los sistemas de archivos exportados explícitamente. El control de acceso no es posible para usuarios, aparte de los permisos de archivos y directorios. En otras palabras, una vez que un sistema de archivos es exportado vía NFS, cualquier usuario en cualquier máquina remota conectada al servidor NFS puede acceder a los datos compartidos. Para limitar estos riesgos potenciales, los administradores sólo pueden permitir acceso de sólo-lectura o reducir a los usuarios a un usuario común y groupid. Pero estas soluciones pueden impedir que la compartición NFS sea usada de la forma en que originalmente se pensó.

Adicionalmente, si un atacante gana el control del servidor DSN usado por el sistema que exporta el sistema de archivos NFS, el sistema asociado con un nombre de host concreto o nombre de dominio totalmente cualificado, puede ser dirigido a una máquina sin autorización. En este punto, la máquina desautorizada es el sistema que tiene permitido montar la compartición NFS, ya que no hay intercambio de información de nombre de usuario o contraseña para proporcional seguridad adicional al montaje NFS.

Los comodines o metacaracteres deben ser usados lo menos posible cuando garantizamos el acceso a una compartición NFS. El uso de los comodines puede incluir más sistemas de los que se desean.

También es posible restringir el acceso al servicio portmap a través de los TCP wrappers. El acceso a los puertos usados por portmap, rpc.mountd y rpc.nfsd se puede limitar creando reglas de cortafuegos con iptables.

Para más información sobre la seguridad en NFS y portmap, consulte el capítulo llamado Seguridad del servidor en el Manual de seguridad de Red Hat Enterprise Linux. Se puede encontrar información adicional sobre los cortafuegos en Capítulo 17.

9.5.2. Permisos de archivos

Una vez que el sistema de archivos es montado como lectura/escritura por un host remoto, la única protección que tiene cada archivo compartido son sus permisos. Si dos usuarios que comparten el mismo valor de userid montan el mismo NFS, ellos podran modificar sus archivos mutuamente. Adicionalmente, cualquiera con acceso root en el sistema cliente puede usar el comando su - para volverse un usuario que tenga acceso a determinados archivos a través de la compartición NFS. Para más detalles sobre los conflictos entre NFS y ID de usuarios, consulte el capítulo llamado Administración de cuentas de usuario y acceso a recursos en el Introducción a la administración de sistemas de Red Hat Enterprise Linux.

Por defecto, las listas de control de acceso (ACLs) son soportados por NFS bajo Red Hat Enterprise Linux. No se recomienda desactivar esta funcionalidad. Para más detalles sobre esta funcionalidad, consulte el capítulo llamado Sistema de archivos de red (NFS) en el Manual de administración del sistema de Red Hat Enterprise Linux.

El comportamiento predeterminado cuando se está exportando un sistema de archivos a través NFS es usar aplastamiento de root. Esto coloca el userid de cualquiera que esté accesando la compartición NFS como el usuario root en su máquina local a un valor de la cuenta de nfsnobody. Nunca desactive el aplastamiento (squashing) de root.

Si se está exportando una compartición NFS como de sólo lectura, considere usar la opción all_squash, la cual hace que todos los usuarios accesando el sistema de archivos exportado tomen el ID de usuario del usuario nfsnobody.