rpc.mountd
, rpc.statd
y lockd
. Sin embargo, de forma predeterminada estos servicios utilizan un puerto aleatorio (asignado por el portmapper), lo que dificulta filtrar el tráfico a los mismos. Los administradores de Falcot Corp lograron evitar este problema de la forma descripta a continuación.
/etc/init.d/nfs-kernel-server
y /etc/init.d/nfs-common
. Ambos proveen opciones de configuración para forzar puertos, los archivos relevantes que debe modificar para siempre utilizar estas opciones son /etc/default/nfs-kernel-server
y /etc/default/nfs-common
.
Ejemplo 11.22. El archivo /etc/default/nfs-kernel-server
# Number of servers to start up RPCNFSDCOUNT=8 # Runtime priority of server (see nice(1)) RPCNFSDPRIORITY=0 # Options for rpc.mountd. # If you have a port-based firewall, you might want to set up # a fixed port here using the --port option. For more information, # see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS # To disable NFSv4 on the server, specify '--no-nfs-version 4' here RPCMOUNTDOPTS="--manage-gids --port 2048" # Do you want to start the svcgssd daemon? It is only required for Kerberos # exports. Valid alternatives are "yes" and "no"; the default is "no". NEED_SVCGSSD= # Options for rpc.svcgssd. RPCSVCGSSDOPTS=
Ejemplo 11.23. El archivo /etc/default/nfs-common
# If you do not set values for the NEED_ options, they will be attempted # autodetected; this should be sufficient for most people. Valid alternatives # for the NEED_ options are "yes" and "no". # Do you want to start the statd daemon? It is not needed for NFSv4. NEED_STATD= # Options for rpc.statd. # Should rpc.statd listen on a specific port? This is especially useful # when you have a port-based firewall. To use a fixed port, set this # this variable to a statd argument like: "--port 4000 --outgoing-port 4001". # For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS STATDOPTS="--port 2046 --outgoing-port 2047" # Do you want to start the idmapd daemon? It is only needed for NFSv4. NEED_IDMAPD= # Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=
rpc.mountd
utilizará el puerto 2048; rpc.statd
escuchará en el puerto 2046 y utilizará el puerto 2047 para conexiones salientes.
lockd
es gestionado por un hilo de núcleo (proceso liviano); esta funcionalidad está compilada como un módulo en los núcleos Debian. El módulo tiene dos opciones que permiten utilizar siempre el mismo puerto: nlm_udpport
y nlm_tcpport
. Para que se utilicen siempre estas opciones, debe existir un archivo /etc/modprobe.d/lockd
como el siguiente:
/etc/exports
, enumera los directorios que estarán disponibles en la red (exportados). Para cada espacio compartido NFS, sólo tendrán acceso las máquinas especificadas. Puede obtener un control más detallado con unas pocas opciones. La sintaxis para este archivo es bastante simple:
/directory/to/share machine1(option1,option2,...) machine2(...) ...
*.falcot.com
o un rango de direcciones IP 192.168.0.0/255.255.255.0
o 192.168.0.0/24
.
ro
), los directorios están disponibles sólo para lectura. La opción rw
permite acceso de lectura y escritura. Los clientes NFS típicamente se conectan desde un puerto restringido sólo a root (en otras palabras, menor a 1024); puede eliminar esta restricción con la opción insecure
(la opción secure
es implícita, pero puede hacerla explícita para más claridad).
sync
); puede desactivar esto con la opción async
. Las escrituras asíncronas aumentarán un poco el rendimiento pero disminuirán la fiabilidad debido al riesgo de pérdida de datos en caso de un cierre inesperado del servidor entre que recibió el pedido de escritura y los datos sean escritos realmente en el disco. Debido a que el valor predeterminado cambió recientemente (comparado con el valor histórico de NFS), se recomienda configurarlo explícitamente.
nobody
. Este comportamiento corresponde a la opción root_squash
y está activado de forma predeterminada. La opción no_root_squash
, que desactiva este comportamiento, es riesgosa y sólo debe ser utilizada en entornos controlados. Las opciones anonuid=uid
y anongid=gid
permiten especificar otro usuario falso que será utilizado en lugar deñ UID/GID 65534 (que corresponden al usuario nobody
y al grupo nogroup
).
mount
y en el archivo /etc/fstab
.
Ejemplo 11.25. Montaje manual con el programa mount
#
mount -t nfs -o rw,nosuid arrakis.internal.falcot.com:/srv/shared /shared
Ejemplo 11.26. Elemento NFS en el archivo /etc/fstab
arrakis.internal.falcot.com:/srv/shared /shared nfs rw,nosuid 0 0
/srv/shared/
en el servidor arrakis
en el directorio local /shared/
. Necesita acceso de lectura y escritura (de allí el parámetro rw
). La opción nosuid
es una medida de protección que elimina cualquier bit setuid
o setgid
de los programas almacenados en el espacio compartido. Si el espacio compartido NFS está destinado sólo a almacenar documentos, también se recomienda utilizar la opción noexec
que evita la ejecución de programas almacenados en el espacio compartido.