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.
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.
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
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
.
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
Desmontar
sudo umount ./target-NFS