NFS (2049)

Network File System (NFS)

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 sistemas de archivos a través de una red como si fueran locales. Sin embargo, utiliza un protocolo totalmente distinto. NFS 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 de un sistema de archivos distribuido. Mientras que el protocolo NFS versión 3.0 (NFSv3), en uso desde hace muchos años, autentica el ordenador cliente, esto cambia con NFSv4. Aquí, al igual que con el protocolo SMB de Windows, el usuario debe autenticarse.

El servicio NFS (Network File System) permite a los sistemas de archivos locales ser accesibles por sistemas remotos a través de una red.

Aspectos claves

  • NFS: Utiliza el puerto 2049 TCP/UDP.
  • Portmapper (rpcbind): Utiliza el puerto 111 TCP/UDP para asignar otros puertos dinámicamente.
  • Mountd: Generalmente usa puertos dinámicos TCP/UDP que son asignados por el Portmapper.
  • Lockd: Utiliza puertos dinámicos para manejar bloqueo de archivos.
  • Statd: Utiliza puertos dinámicos para el servicio de notificación de estado.

Otros Detalles

  • Protocolos: NFSv2 (UDP/TCP), NFSv3 (UDP/TCP), NFSv4 (TCP).
  • Autenticación: Puede usar AUTH_SYS, Kerberos, o autenticación basada en tokens.
  • Seguridad: Puede integrarse con firewalls y sistemas de autenticación para asegurar las conexiones.

Configuración Predeterminada

NFS no es díficil de configurar porque no hay tantas opciones como tienen FTP o SMB. El archivi /etc/exports contiene una tabla de sistemas de archivos físicos NFS accesibles por los clientes. La Tabla de Exportaciones NFS muestra qué opciones acepta y, por lo tanto, indica qué opciones están disponibles para nosotros.

En primer lugar debemos instalar el paquete nfs-kernel-server que nos permite trabajar con NFS.

sudo apt update
sudo apt install nfs-kernel-server

Archivo /etc/exports

El valor predeterminado del archivo exports también contiene algunos ejemplos de configuración de recursos compartidos NFS. Primero, la carpeta se especifica y se pone a disposición de otros, y luego los derechos que tendrán en este recurso compartido NFS se conectan a un host o una subred. Finalmente, se pueden agregar opciones adicionales a los hosts o subredes.

NFS

Opción Descripción
rw Permisos de lectura y escritura.
ro Permisos de solo lectura.
sync Transferencia de datos síncrona. (Un poco más lento)
async Transferencia de datos asíncrona. (Un poco más rápido)
secure No se utilizarán puertos por encima de 1024.
insecure Se utilizarán puertos por encima de 1024.
no_subtree_check Esta opción deshabilita la comprobación de los árboles de subdirectorio.
root_squash Asigna todos los permisos a archivos de root UID/GID 0 al UID/GID de anonymous, lo que impide root desde el acceso a archivos en un montaje NFS.

Creemos dicha entrada para fines de prueba y juguemos con la configuración.

NFS

Configuración Peligrosa

Opción Descripción
rw Permisos de lectura y escritura.
insecure Se utilizarán puertos por encima de 1024.
nohide Si se montó otro sistema de archivos debajo de un directorio exportado, este directorio se exporta por su propia entrada de exportaciones.
no_root_squash Todos los archivos creados por root se mantienen con el UID/GID 0.
### Footprinting del servicio
nmap -sSCV -p111,2049 192.168.1.22

NFS

El script rpcinfo de Nmap recupera una lista de todos los servicios RPC que se ejecutan actualmente, sus nombres y descripciones, y los puertos que utilizan. Esto nos permite verificar si el recurso compartido de destino está conectado a la red en todos los puertos requeridos. Además, para NFS, Nmap tiene algunos scripts NSE que se pueden usar para los escaneos. Estos pueden mostrarnos, por ejemplo, el contents de la parte y su stats.

NFS

Una vez que hayamos descubierto dicho servicio NFS, podemos montarlo en nuestra máquina local. Para esto, podemos crear una nueva carpeta vacía a la que se montará el recurso compartido NFS. Una vez montado, podemos navegar y ver el contenido al igual que nuestro sistema local.

Mostrar las exportaciones del servidor NFS

showmount -e 192.168.1.22

El comando showmount en sistemas Unix/Linux se utiliza para mostrar información sobre las exportaciones NFS y los clientes que están montando esos sistemas de archivos.

Montar un recurso NFS

mkdir target-NFS
mount -t nfs 192.168.1.22:/ ./target-NFS -o nolock
cd target-NFS
tree .
cat mnt/nfs/test.txt

NFS

NFS

Desmontar

sudo umount ./target-NFS