NFS
Last updated
Last updated
Network File System
( NFS
) es un sistema de archivos de red desarrollado por Sun Microsystems y tiene la misma finalidad que SMB. Su propósito es acceder a los sistemas de archivos a través de una red como si fueran locales. Sin embargo, utiliza un protocolo completamente diferente. se utiliza entre sistemas Linux y Unix. Esto significa que los clientes NFS no pueden comunicarse directamente con los servidores SMB. NFS es un estándar de Internet que rige los procedimientos en un sistema de archivos distribuido. Si bien la versión 3.0 del protocolo NFS ( NFSv3
), que se ha utilizado durante muchos años, autentica el equipo cliente, esto cambia con NFSv4
. En este caso, al igual que con el protocolo SMB de Windows, el usuario debe autenticarse.
NFS se basa en el protocolo ( ONC-RPC
/ SUN-RPC
) de Open Network Computing, disponible en los puertos TCP
y , que utiliza ( ) para el intercambio de datos independiente del sistema. El protocolo NFS cuenta con un mecanismo para o . En su lugar, la autenticación se traslada completamente a las opciones del protocolo RPC. La autorización se deriva de la información disponible del sistema de archivos. En este proceso, el servidor se encarga de traducir la información de usuario del cliente al formato del sistema de archivos y de convertir los datos de autorización correspondientes a la sintaxis UNIX requerida con la mayor precisión posible.UDP111XDRnoauthenticationauthorization
La autenticación más común se realiza mediante UNIX UID
/ GID
y group memberships
, por lo que es más probable que esta sintaxis se aplique al protocolo NFS. Un problema radica en que el cliente y el servidor no necesariamente tienen que tener las mismas asignaciones de UID/GID a usuarios y grupos, y el servidor no necesita realizar ninguna otra comprobación. El servidor no puede realizar ninguna otra comprobación. Por ello, NFS solo debe utilizarse con este método de autenticación en redes de confianza.
NFS no es difícil de configurar, ya que no ofrece tantas opciones como FTP o SMB. El /etc/exports
archivo contiene una tabla de sistemas de archivos físicos en un servidor NFS accesible para los clientes. La muestra las opciones que acepta y, por lo tanto, las que están disponibles.
El archivo predeterminado exports
también contiene algunos ejemplos de configuración de recursos compartidos NFS. Primero, se especifica la carpeta y se pone a disposición de otros usuarios, y luego se establecen los derechos que tendrán sobre este recurso compartido NFS y se conectan a un host o subred. Finalmente, se pueden agregar opciones adicionales a los hosts o subredes.
Sin embargo, incluso con NFS, algunas configuraciones pueden ser peligrosas para la empresa y su infraestructura. A continuación, se enumeran algunas:
Opción
Descripción
rw
Permisos de lectura y escritura.
insecure
Se utilizarán puertos superiores a 1024.
nohide
Si se montó otro sistema de archivos debajo de un directorio exportado, este directorio se exporta mediante su propia entrada de exportaciones.
no_root_squash
Todos los archivos creados por root se conservan con el UID/GID 0.
Se recomienda encarecidamente crear una máquina virtual local y experimentar con la configuración. Descubriremos métodos que nos mostrarán cómo está configurado el servidor NFS. Para ello, podemos crear varias carpetas y asignar diferentes opciones a cada una. Después, podemos inspeccionarlas y ver qué configuración puede afectar al recurso compartido NFS, sus permisos y el proceso de enumeración.
Podemos revisar esta insecure
opción. Esto es peligroso porque los usuarios pueden usar puertos superiores a 1024. Los primeros 1024 puertos solo pueden ser utilizados por el usuario root. Esto impide que ningún usuario pueda usar sockets superiores al puerto 1024 para el servicio NFS e interactuar con él.
Al realizar la enumeración de NFS, los puertos TCP 111
y 2049
son esenciales. También podemos obtener información sobre el servicio NFS y el host mediante RPC, como se muestra en el ejemplo a continuación.
El rpcinfo
script NSE recupera una lista de todos los servicios RPC actualmente en ejecución, sus nombres, descripciones y los puertos que utilizan. Esto nos permite comprobar si el recurso compartido de destino está conectado a la red en todos los puertos requeridos. Además, para NFS, Nmap cuenta con scripts NSE que pueden usarse para los análisis. Estos nos muestran, por ejemplo, el contents
del recurso compartido y su stats
...
Una vez que hayamos detectado dicho servicio NFS, podemos montarlo en nuestra máquina local. Para ello, podemos crear una nueva carpeta vacía donde se montará el recurso compartido NFS. Una vez montado, podemos navegar por ella y ver su contenido como en nuestro sistema local.
Allí podremos acceder a los permisos, nombres de usuario y grupos a los que pertenecen los archivos mostrados y visibles. Una vez que tengamos los nombres de usuario, nombres de grupo, UID y GUID, podremos crearlos en nuestro sistema y adaptarlos al recurso compartido NFS para ver y modificar los archivos.
Es importante tener en cuenta que si la root_squash
opción está activada, no podremos editar archivos ni siquiera como root
.
También podemos usar NFS para una mayor escalabilidad. Por ejemplo, si accedemos al sistema por SSH y queremos leer archivos de otra carpeta que un usuario específico puede leer, necesitaremos cargar un shell en el recurso compartido NFS que tenga el SUID
usuario de ese usuario y luego ejecutarlo mediante el usuario SSH.
Una vez que hayamos realizado todos los pasos necesarios y obtenido la información que necesitamos, podemos desmontar el recurso compartido NFS.