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
# Cantidad de servidores a iniciar RPCNFSDCOUNT=8 # Prioridad de ejecición del servidor (revise nice(1)) RPCNFSDPRIORITY=0 # Opciones para rpc.mountd. # Si tiene un firewall basado en puertos, podría desear configurar # un puerto fijo aquí con la opción --port. Para más información # revise rpc.mountd(8) o http://wiki.debian.org/SecuringNFS # Para desactivar NFSv4 en el servidor, especifique aquí # '--no-nfs-version 4' RPCMOUNTDOPTS="--manage-gids --port 2048" # ¿Desea iniciar el demonio svcgssd? Sólo es necesario para exportaciones # Kerberos. Las alternativas válidas son "yes" y "no" (predeterminado). NEED_SVCGSSD= # Opciones para rpc.svcgssd. RPCSVCGSSDOPTS=
Ejemplo 11.23. El archivo /etc/default/nfs-common
# Si no configura las opciones NEED_, se intentará autodetectarlas; esto # debería ser suficiente para la mayoría. Las alternativas válidas para # las opciones NEED_ son "yes" y "no". # ¿Desea iniciar el demonio statd? No es necesario para NFSv4. NEED_STATD= # Opciones para rpc.statd. # ¿rpc.statd debe escuchar en un puerto específico? Esto es especialmente # útil cuando tiene un firewall basado en puertos. Para utilizar un puerto # fijo, configure en esta variable los parámetros para statd, como: # "--port 4000 --outgoing-port 4001". Para más información revise # rpc.statd(8) o http://wiki.debian.org/SecuringNFS STATDOPTS="--port 2046 --outgoing-port 2047" # ¿Desea iniciar el demonio idmapd? Sólo es necesario para NFSv4. NEED_IDMAPD= # ¿Desea iniciar el demonio gssd? Es necesario para puntos de montaje Kerberos. 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:
/directorio/a/compartir maquina1(opcion1,opcion2,...) maquina2(...) ...
*.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.