Enumeración NFS

Si tenemos algunos servidores conectados a internet es posible que nos interese compartir entre ellos algunos archivos mediante NFS. El problema viene que al crear el servidor conectado directamente a internet cualquiera puede consultar los directorios compartidos.

Esto es lo que se conoce como enumeración NFS y no hay solución vinculada al protocolo.

La solución que propongo consiste en tener en cada servidor dos interfaces de red, una de ellas la configuraremos como privada, la otra quedará expuesta a internet. Ahora cuando algún usuario no autorizado escanee nuestros puertos verá algo así:

# nmap -sS servidor.com

Starting Nmap 5.21 ( http://nmap.org ) at 2011-07-25 20:35 CEST
Nmap scan report for servidor.com (xxx.xxx.xxx.xxx)
Host is up (0.060s latency).
Not shown: 990 closed ports
PORT     STATE    SERVICE
***
2049/tcp open     nfs
***

Nmap done: 1 IP address (1 host up) scanned in 5.92 seconds

Mostrando el servidor NFS corriendo y abierto. Así podría crear una enumeración como la que sigue

# showmount --all servidor.com
All mount points on servidor.com:
192.168.8.2:/path/to/share
192.168.8.3:/path/to/share
192.168.8.4:/path/to/share
192.168.8.5:/path/to/share
192.168.8.6:/path/to/share
...

En el listado vemos las distintas máquinas que están conectadas al servidor y el directorio que tienen montado.

Para resolver esto usaremos los ficheros /etc/hosts.allow y /etc/hosts.deny para evitar conexiones sólo desde máquinas de confianza.

El contenido de /etc/hosts.allow sería:

portmap: 192.168.8.0/24
nfsd: 192.168.8.0/24

y para el caso de /etc/hosts.deny

nfsd: ALL
portmap:ALL

El software de NMap seguiré mostrando el puerto abierto, pero ahora cuando intenten obtener un listado de lo compartido por NFS obtendrán esto:

# showmount --all servidor.com
clnt_create: RPC: Program not registered

Desde la red privada podremos seguir consultando las comparticiones con showmount, las opciones que le podemos pasar al comando son:

       -a or --all
              List both the client hostname or IP address and mounted directory in host:dir format. This 
              info should not be considered reliable. See the notes on rmtab in rpc.mountd(8).

       -d or --directories
              List only the directories mounted by some client.

       -e or --exports
              Show the NFS server's export list.
This entry was posted in Linux, Seguridad, Tips and tagged , , , , . Bookmark the permalink.