Você está na página 1de 21

Configuracin de servidor NFS

NFS (Network File System), es un popular protocolo utilizado para compartir sistemas de archivos de manera transparente entre anfitriones dentro de una red de rea local. Es utilizado para sistemas de archivos distribuido.

Fue desarrollado en 1984 por Sun Microsystems, teniendo en mente la independencia del anfitrin, sistema operativo, protocolo de transporte. Funciona a travs de los protocolos XDR (nivel de presentacin del modelo OSI de TCP/IP) y ONC RPC (nivel de sesin del modelo OSI de TCP/IP).

Es muy popular entre sistemas basados sobre el estndar POSIX y viene incluido en la mayora de stos de modo predeterminado. Es muy fcil de configurar y utilizar, sin embargo cabe sealar que hay quienes denominan cariosamente a NFS como "No File Security", pues carece de soporte para validar usuarios por contraseas, como lo hacen otras alternativas como Samba. Su seguridad se basa sobre listas de de control de acceso compuestas por direcciones IP o nombres de anfitrin. Es por sto que es importante que el administrador de la red de rea local comprenda que un servidor NFS puede ser un serio problema de seguridad, si ste es configurado incorrectamente.

Existen tres versiones de NFS que se utilizan hoy en da:

NFSv2: Es la versin ms antigua y mejor soportada. NFSv3: Tiene ms caractersticas que NFSv2, como el manejo de archivos de tamao variable
y mejores informes de errores. Slo es parcialmente compatible con los clientes para NFSv2.

NFSv4: Es la versin ms moderna, y, entre otras cosas, incluye soporte para seguridad a
travs de Kerberos, soporte para ACL y utiliza operaciones con descripcin del estado.

Salvo que se trate de directorios de acceso pblico, se recomienda utilizar NFS slo dentro de una red de rea local detrs de un muro contrafuegos y que slo se permita el acceso a los anfitriones que integren la red de rea local y evitar compartir sistemas de archivos con informacin sensible a travs de Internet.

Equipamiento lgico necesario.


En CentOS, Fedora y Red Hat Enterprise Linux.

El paquete nfs-utils viene incluido junto con la instalacin estndar de estos sistemas operativos y contiene tanto las herramientas de cliente como las de servidor. De ser necesario, como por ejemplo en el caso de una instalacin mnima, ejecute lo siguiente para instalar todo lo necesario: yum -y install nfs-utils

Si prefiere una herramienta grfica para configurar el servidor NFS, puede instalar tambin el paquete system-config-nfs: yum -y install system-config-nfs

Instalacin en openSUSE y SUSE Linux Enterprise.


En estos sistemas operativos, existen dos paquetes a instalar: nfs-client, que corresponde a las herramientas para clientes NFS y nfs-kernel-server, que corresponde a las herramientas de servidor NFS. Ambos paquetes estn incluidos en la instalacin estndar de openSUSE y SUSE Linux Enterprise. En caso de haber hecho una instalacin mnima, ejecute lo siguiente para instalarlos: yast -i nfs-client nfs-kernel-server

Si prefiere una herramienta, que funciona tanto desde la terminal como desde el escritorio, para configurar el sistema como cliente NFS, puede instalar tambin el paquete yast2-nfs-client. yast -i yast2-nfs-client

Si prefiere una herramienta, que funciona tanto desde la terminal como desde el escritorio, para configurar el sistema como servidor NFS, puede instalar tambin el paquete yast2-nfs-server. yast -i yast2-nfs-server

Definir los puertos utilizados por NFS.


El siguiente paso puede ser omitido en openSUSE y SUSE Linux Enterprise, gracias a que SuSEFirewall2 detecta automticamente los puertos aleatorios utilizados por el servicio nfsserver.

En CentOS, Fedora y Red Hat Enterprise Linux es importante definir los puertos fijos que utilizar NFS, pues el cortafuegos es incapaz de abrir dinmicamente los puertos aleatorios que de modo predeterminado utiliza ste.

Edite el archivo /etc/sysconfig/nfs: vim /etc/sysconfig/nfs

Habilite o bien modifique, los siguientes parmetros, estableciendo los valores mostrados a continuacin: RQUOTAD_PORT=875 LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 STATD_PORT=662

Tambin puede establecer los puertos desde la ventana Configuracin de servidor de la herramienta system-config-nfs.

Configuracin del Servidor en system-config-nfs.

Si el servidor NFS va a trabajar sin muro cortafuegos en una red de rea local, este paso es innecesario.

Iniciar servicio y aadir el servicio al inicio del sistema.

En CentOS, Fedora y Red Hat Enterprise Linux.


Si se realiz una instalacin estndar, los servicios requeridos por nfs, es decir rpcbind y nfslock, estarn activos y funcionando. Slo en el caso de haber realizado una instalacin mnima, es necesario iniciar primero estos dos servicios, ejecutando lo siguiente: service rpcbind start service nfslock start

De modo predeterminado los servicios rpcbind y nfslock estarn activos en los niveles de ejecucin 3, 4 y 5.

De modo predeterminado el servicio nfs estar inactivo. Para activar este servicio en los niveles de ejecucin 3 y 5, es decir los niveles recomendados, ejecute lo siguiente: chkconfig --level 35 nfs on

El mtodo estndar para detener, iniciar o reiniciar el servicio nfs, es travs del mandato service, el nombre del servicio (nfs) y reload, restart, start o stop como argumentos.

Para iniciar el servicio por primera vez, slo necesita ejecutar: service nfs start

Para volver a leer la configuracin del servicio y aplicar los cambios, sin interrumpir las conexiones existentes, slo se necesita ejecutar: service nfs reload

Para reiniciar el servicio slo se necesita ejecutar: service nfs restart

Para detener el servicio, slo necesita ejecutar:

service nfs stop

Para verificar el estado del servicio, slo necesita ejecutar: service nfs status

En openSUSE y SUSE Linux Enterprise.


El mtodo estndar para agregar el servicio al inicio del sistema es a travs del mandato insserv. Para activar el servicio en los niveles de ejecucin 3 y 5, ejecute lo siguiente: insserv nfsserver

El mtodo estndar para detener, iniciar o reiniciar el servicio, es travs del mandato rcnfsserver.

Para iniciar el servicio por primera vez, slo necesita ejecutar: rcnfsserver start

Para volver a leer la configuracin del servicio y aplicar los cambios, sin interrumpir las conexiones existentes, slo se necesita ejecutar: rcnfsserver reload

Para reiniciar el servicio slo se necesita ejecutar: rcnfsserver restart

Para detener el servicio, slo necesita ejecutar: rcnfsserver stop

Para verificar el estado del servicio, slo necesita ejecutar:

rcnfsserver status

Modificaciones necesarias en los archivos /etc/hosts.allow y /etc/hosts.deny.


Conviene establecer un poco de seguridad extra a travs de tcp_wrapper (tcpd), sobre todo si el servidor NFS slo va a operar en una red de rea local sin muro cortafuegos.

Edite el archivo /etc/hosts.deny: vim /etc/hosts.deny

Aada el siguiente contenido: portmap: ALL lockd: ALL mountd: ALL rquotad: ALL statd: ALL

Edite el archivo /etc/hosts.allow : vim /etc/hosts.allow

Asumiendo que se va a permitir el acceso a las redes 192.168.70.0/25, 172.16.1.0/28 y 10.0.1.0/29, aada el siguiente contenido: portmap: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 lockd: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 mountd: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 rquotad: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29 statd: 192.168.70.0/25, 172.16.1.0/28, 10.0.1.0/29

Los cambios aplican de manera inmediata, sin reiniciar servicio alguno.

Modificaciones necesarias en el muro cortafuegos.


verifique ejecutando el mandato rpcinfo con la opcin -p los puertos y protocolos utilizados por los servicios portmapper, nfs, lockd, mountd, rquotad y statd. rpcinfo -p

La salida debe ser similar a la siguiente.


program vers proto 100000 100000 100000 100000 100000 100000 100011 100011 100011 100011 100003 100003 100003 100227 100227 100003 100003 4 3 2 4 3 2 1 2 1 2 2 3 4 2 3 2 3 tcp tcp tcp udp udp udp udp udp tcp tcp tcp tcp tcp tcp tcp udp udp port 111 111 111 111 111 111 875 875 875 875 2049 2049 2049 2049 2049 2049 2049 service portmapper portmapper portmapper portmapper portmapper portmapper rquotad rquotad rquotad rquotad nfs nfs nfs nfs_acl nfs_acl nfs nfs

100003 100227 100227 100021 100021 100021 100021 100021 100021 100005 100005 100005 100005 100005 100005

4 2 3 1 3 4 1 3 4 1 1 2 2 3 3

udp udp udp udp udp udp tcp tcp tcp udp tcp udp tcp udp tcp

2049 2049 2049 32769 32769 32769 32803 32803 32803 892 892 892 892 892 892

nfs nfs_acl nfs_acl nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr nlockmgr mountd mountd mountd mountd mountd mountd

Para servidores de NFSv4, en realidad slo es necesario abrir en el muro cortafuegos el puerto 2049/TCP (nfs), pues es esta versin dej de depender del servicio de mapa de puertos (portmap). Sin embargo, para poder trabajar con compatibilidad para NFSv2 y NFSv3, es necesario abrir los puertos 111/UDP, 111/TCP, 662/TCP, 662/UDP, 875/TCP, 875/UDP, 892/TCP, 892/UDP, 2029/TCP, 2049/UDP, 32803/TCP y 32769/UDP. Los puertos que se abran para los servicios lockd, mountd, rquotad y statd deben corresponder con los mismo puertos definidos el archivo /etc/sysconfig/nfs.

En CentOS, Fedora y Red Hat Enterprise Linux.


Herramienta system-config-firewall.
Si utiliza el muro cortafuegos predeterminado del sistema, puede ejecutar el siguiente mandato: system-config-firewall

Habilite los puertos 111/UDP, 111/TCP, 662/TCP, 662/UDP, 875/TCP, 875/UDP, 892/TCP, 892/UDP, 2029/TCP, 2049/UDP, 32803/TCP y 32769/UDP y aplique los cambios.

System-config-firewall habilitando puertos para NFS.

Servicio iptables.
Si lo prefiere, tambin puede utilizar directamente el mandato iptables, ejecutando lo siguiente:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT

service iptables save

O bien aada lo siguiente al archivo /etc/sysconfig/iptables:


-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT

Y reinicie el servicio iptables: service iptables restart

Shorewall.
Las reglas para el archivo /etc/shorewall/rules de Shorewall corresponderan a lo siguiente: #ACTION SOURCE # DEST PROTO DEST PORT SOURCE PORT(S)1

ACCEPT ACCEPT

all all

fw fw

tcp udp

111,662,875,892,2049,32803 111,662,875,892,2049,32769

#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Para aplicar los cambios en Shorewall, ejecute lo siguiente: service shorewall restart

En openSUSE y SUSE Linux Enterprise.


Ejecute el mandato yast del siguiente modo: yast firewall

Y habilite NFS Server Service o Servicio de Servidor NFS y aplique los cambios. sto habilitar todos los puertos necesarios.

Mdulo de cortafuegos de YaST, en modo grfico, habilitando el Servicio de Servidor NFS.

Mdulo de cortafuegos de YaST, en modo texto, habilitando NFS Server Service.

Procedimientos.
El archivo /etc/exports.
Es el archivo utilizado para configurar los directorios que se compartirn a travs de NFS. El formato utilizado es el siguiente: /directorio/a/compatir anfitriones(opciones)

Se puede compartir cualquier directorio del sistema y sus respectivos subdirectorios, excepto por aquellos subdirectorios que estn en otros sistemas de archivos.

Los anfitriones se pueden definir por dominios, nombres de anfitrin, direcciones IP o segmentos de bloques de direcciones IP.

Las opciones utilizadas pueden ser las siguientes:

ro y rw : Slo lectura o lectura y escritura, respectivamente. Valor predeterminado es rw.

link_relative y link_absolute: convertir los enlaces simblicos absolutos en enlaces simblicos


relativos o bien dejar los enlaces simblicos como estn, respectivamente. Valor predeterminado es link_absolute.

no_root_squash y root_squash: respeta el uid/gid 0 (root) o bien traslada uid/gid 0 hacia


uid/gid del usuario annimo de NFS. Valor predeterminado es root_squash.

squash_uids y squash_gids: especifica una lista de uids o gids que se trasladarn al usuario
annimo utilizado por NFS. Ejemplo: squash_uids=0-15,20,25-50.

all_squash: traslada todos los uid y gid hacia el uid y gid del usuario annimo utilizado por
NFS. Comnmente utilizado para compartir directorios de acceso pblico, como el directorio /var/ftp/pub.

anonuid y anongid: establecen en forma explcita el uid y gid del usuario annimo utilizado por
NFS. Ejemplo: anonuid=150,anongid=100.

El manual que detalla el formato y opciones del archivo /etc/exports puede consultarse ejecutando lo siguiente: man 5 exports

Para ver la lista de clientes conectados al servidor NFS, se ejecuta el mandato showmount: showmount

Para ver la lista de clientes conectados al servidor NFS y los directorios utilizados por cada uno, se ejecuta el mandato showmount con la opcin -a: showmount -a

El manual que detalla las opciones del mandato showmount puede consultarse ejecutando lo siguiente: man 8 showmount

Ejemplos de configuracin del archivo /etc/exports.


En el siguiente ejemplo, se comparte el directorio local /home en modo lectura y escritura (rw ) a todos los anfitriones de 172.16.1.0/28, respetando el uid y gid de root (no_root_squash):

/home

172.16.1.0/28(rw,no_root_squash)

En el siguiente ejemplo, se comparte el directorio local /var/www en modo lectura y escritura (rw ) a 172.16.1.2, respetando el uid y gid de root (no_root_squash) y a 172.16.1.3 en modo de slo lectura, trasladando todos los uid y gid al usuario annimo utilizado por NFS (root_squash es el valor por omisin):
/var/www 172.16.1.2(rw,no_root_squash) 172.16.1.3(ro,all_squash)

Herramienta system-config-nfs en CentOS, Fedora y Red Hat Enterprise Linux.


La configuracin de los directorios a exportar, con sus posibles opciones, en el archivo /etc/exports, as como la configuracin de los puertos de NFS en el archivo /etc/sysconfig/nfs, pueden hacer desde la herramienta grfica system-config-nfs.

Herramienta grfica system-config-nfs.

YaST nfs-server en openSUSE y SUSE Linux Enterprise.


La configuracin de los directorios a exportar, con sus posibles opciones, en el archivo /etc/exports, as como la configuracin de opciones del servidor NFS, pueden hacer utilizando el mdulo nfs-server de YaST. Ejecute lo siguiente: yast nfs-server

Mdulo nfs-server de YaST.

Verificacin del servicio.


El mandato rpcinfo se utiliza para verificar el estado de servidores NFS y otros servidores que funcionan sobre RPC.

Para verificar el estado de los servicios en el anfitrin local, ejecute: rpcinfo

Para ver las estadsticas de uso en el anfitrin local, ejecute el mandato rpcinfo con la opcin -m: rpcinfo -m

Para mostrar una lista de todos los programas RPC en el anfitrin local, ejecute el mandato rpcinfo con la opcin -p: rpcinfo -p

Para mostrar una lista ms concisa de todos los programas RPC en el anfitrin local, ejecute el mandato rpcinfo con la opcin -s: rpcinfo -s

Para mostrar los transportes soportados por el anfitrin local, ejecute el mandato rpcinfo con la opcin T, udp, el nombre o direccin IP del anfitrin local y nfs como argumentos. Ejemplo: rpcinfo -T udp localhost nfs

Para verificar el estado de los servicios en un anfitrin remoto, ejecute el mandato rpcinfo con el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo 192.168.1.64

Para ver las estadsticas de uso en un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -m y el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo -m 192.168.1.64

Para mostrar una lista de todos los programas RPC en un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -p y el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo -p 192.168.1.64

Para mostrar una lista ms concisa de todos los programas RPC en un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -s y el nombre o direccin IP de un servidor NFS remoto como argumento. Ejemplo: rpcinfo -s 192.168.1.64

Para mostrar los transportes soportados por un anfitrin remoto, ejecute el mandato rpcinfo con la opcin -T, udp, el nombre o direccin IP de un servidor NFS remoto y nfs como argumentos. Ejemplo:

rpcinfo -T udp 192.168.1.64 nfs

Montaje de sistemas de archivos NFS.


Para montar sistemas de archivos tipo NFS se utiliza el mandato mount con la siguiente sintaxis: mount [-o opciones] servidor:/directorio /punto/montaje

Para hacer permanentes los puntos de montaje, se aaden entradas en el archivo /etc/fstab, utilizando el siguiente formato: servidor:/directorio /punto/montaje nfs4 opciones 0 0

Las posibles opciones para ambos archivos, son las siguientes:

rsize: Define el tamao del bfer para lectura. El valor predeterminado es 1024 bytes. Si se
incrementa a 8192 bytes, mejora considerablemente el rendimiento del servidor NFS al hacer la lectura de datos desde el cliente. Ejemplo: mount -o rsize=8192 servidor:/directorio /mnt/servidor

wsize: Define el tamao del bfer para escrituras. El valor predeterminado es 1024 bytes. Si se
incrementa a 8192 bytes, mejora considerablemente el rendimiento del servidor NFS al hacer la escritura de datos desde el cliente. Ejemplo: mount -o wsize=8192 servidor:/directorio /mnt/servidor

hard y soft: El primero hace que las aplicaciones que estn utilizando el sistema de archivos
remoto entren en pausa cuando falle o se interrumpa la conectividad con el servidor NFS, pudiendo utilizarse en combinacin con la opcin intr para poder interrumpir las aplicaciones pausadas. El segundo permite, despus de un tiempo que se define con la opcin timeo, descartar las conexiones fallidas o interrumpidas hacia un servidor NFS.

intr: Permite interrumpir las aplicaciones y/o los procesos que hayan sido pausados tras la falla
o interrupcin de conectividad con un servidor NFS.

timeo: Se utiliza para establecer el lmite de tiempo en dcimas de segundo usado antes de la
primera retransmisin despus de que ha fallado o se ha interrumpido una conexin a un servidor NFS. El valor por omisin es 7 dcimas de segundo, tras lo cual se duplica por cada

expiracin RPC, hasta un mximo de 60 segundos. Se recomienda aumentar el valor en redes con mucha congestin.

auto y noauto: El primero define si el sistema de archivos remoto se montar automticamente


junto con el inicio del sistema. El segundo impide que se monte automticamente el sistema de archivos remoto. El valor predeterminado es auto.

user: permite a los usuarios regulares poder montar un sistema de archivos NFS.
Automticamente aade las opciones noexec, nosuid y nodev (prohibido ejecutar archivos de este sistema de archivos, prohibido utilizar SUID, prohibido el uso de dispositivos de bloque, respectivamente).

El manual que detalla las opciones de montado para NFS para el archivo /etc/fstab y que tambin son utilizadas por el mandato mount, pueden consultarse ejecutando lo siguiente: man 5 nfs

Modulo nfs de YaST en openSUSE y SUSE Linux Enterprise.


Para configurar los sistemas de archivos remotos para ser montados en el sistema de archivos local, el mtodo preferido es utilizar el mdulo nfs de YaST. Ejecute lo siguiente: yast nfs

Defina los servidores, directorios remotos, puntos de montaje y opciones a utilizar y aplique los cambios.

Mdulo de nfs de YaST, en modo texto.

Ejercicios.
Compartir un volumen NFS para acceso pblico.
Si acaso fuese inexistente, genere el directorio local /var/ftp/pub: test -d /var/ftp/pub || mkdir -p /var/ftp/pub

Copie cualquier contenido de acceso pblico dentro de este directorio.

Para compartir el directorio local /var/ftp/pub en modo de slo lectura (ro), edite el archivo /etc/exports: vim /etc/exports

Asumiendo que se trata del directorio pblico de el servidor FTP del sistema, que ste se compartir en modo de slo lectura (opcin ro) convirtiendo todos los UID y GID de los clientes al usuario annimo de NFS (opcin all_squash), a toda la red de rea local y que sta corresponde a 192.168.70.0/25, aada el siguiente contenido:

/var/ftp/pub

192.168.70.0/25(ro,all_squash)

Si utiliza CentOS, Fedora o Red Hat Enterprise Linux, ejecute lo siguiente para aplicar los cambios: service nfs restart

Si utiliza openSUSE o SUSE Linux Enterprise Server, ejecute lo siguiente para aplicar los cambios: rcnfsserver restart

Acceso desde los clientes NFS.


Como root, desde el anfitrin cliente, ejecute el mandato showmount con la opcin -e para consultar los volmenes exportados por el servidor NFS: showmount -e 192.168.70.2

La salida debe ser similar a la siguiente: Export list for 192.168.70.2: /var/ftp/pub 192.168.70.0/25

Si acaso fuese inexistente, genere el directorio local /var/ftp/pub: test -d /var/ftp/pub || mkdir -p /var/ftp/pub

Monte el directorio remoto 192.168.70.2:/var/ftp/pub en el directorio local /var/ftp/pub: mount -o hard,intr,ro 192.168.70.2:/var/ftp/pub /var/ftp/pub

Verifique con el mandato df que se ha montado con xito el directorio remoto. df -h

Para configurar permanentemente el directorio remoto, edite el archivo /etc/fstab: vim /etc/fstab

Aada el siguiente contenido:


192.168.70.2:/var/ftp/pub /var/ftp/pub nfs4 hard,intr,ro 0 0

Reinicie el sistema y verifique que el directorio remoto mont exitosamente.

Você também pode gostar