rpc.mountd
, rpc.statd
e lockd
. Contudo, esses serviços usam uma porta aleatória (atribuída pelo portmapper) por padrão, o que torna difícil filtrar o tráfego que tem como alvo esses serviços. Os administradores da Falcot Corp encontraram um jeitinho para resolver esse problema, descrito abaixo.
/etc/init.d/nfs-kernel-server
e /etc/init.d/nfs-common
. Eles fornecem opções de configuração para forçar portas; os arquivos relevantes a serem modificados para sempre usar essas opções são /etc/default/nfs-kernel-server
e /etc/default/nfs-common
.
Exemplo 11.22. O arquivo /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=
Exemplo 11.23. O arquivo /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
usa a porta 2048; rpc.statd
ouve na porta 2046 e usa a porta 2047 para conexões de saída (outgoing).
lockd
é manipulado por uma thread do núcleo (processo leve); esse recurso é construído como módulo nos núcleos Debian. O módulo tem duas opções que permitem sempre escolher a mesma porta, nlm_udpport
e nlm_tcpport
. Para que essas opções sejam usadas sistematicamente, é preciso ter um arquivo /etc/modprobe.d/lockd
com o seguinte:
/etc/exports
, lista os diretórios que estão disponíveis através da rede (exported). Para cada compartilhamento NFS, apenas uma determinada lista de máquinas tem acesso permitido. Um controle mais refinado de acesso pode ser obtido com algumas opções. A sintaxe para esse arquivo é bem simples:
/directory/to/share machine1(option1,option2,...) machine2(...) ...
*.falcot.com
ou um intervalo de endereços IP como 192.168.0.0/255.255.255.0
ou 192.168.0.0/24
.
ro
). A opção rw
permite o acesso a leitura-escrita. Os clientes NFS tipicamente fazem a conexão a partir de uma porta restrita ao root (em outras palavras, abaixo da 1024); essa restrição pode ser elevada pela opção insecure
(a opção secure
é implícita, mas pode ser explícita para mais clareza).
sync
); isso pode ser desabilitado com a opção async
. A escrita assíncrona aumenta um pouco a performance, mas ela diminui a confiança já que existe o risco de perda de dados no caso do servidor falhar entre comunicar a escrita e realmente escrever no disco. Como o valor padrão foi alterado recentemente (comparado ao valor histórico do NFS), uma configuração explícita é recomendada.
nobody
. Esse comportamento corresponde à opção root_squash
, e é habilitado por padrão. A opção no_root_squash
, que desabilita esse comportamento, é arriscada e só deveria ser usada em ambientes controlados. As opções anonuid=uid
e anongid=gid
permitem especificar outro usuário falso a ser usado ao invés de UID/GID 65534 (que corresponde ao usuário nobody
e ao grupo nogroup
).
mount
e do arquivo /etc/fstab
.
Exemplo 11.25. Montando manualmente com o comando mount
#
mount -t nfs -o rw,nosuid arrakis.internal.falcot.com:/srv/shared /shared
Exemplo 11.26. Entrada NFS no arquivo /etc/fstab
arrakis.internal.falcot.com:/srv/shared /shared nfs rw,nosuid 0 0
/srv/shared/
no servidor arrakis
dentro do diretório local /shared/
. O acesso de leitura-escrita é requisitado (visto o parâmetro rw
). A opção nosuid
é uma medida de proteção que apaga qualquer bit setuid
ou setgid
de programas armazenados no compartilhamento. Se o compartilhamento NFS é apenas para armazenar documentos, outra opção recomendada é a noexec
, a qual previne a execução de programas armazenados no compartilhamento.