rpc.mountd
, rpc.statd
e lockd
. Questi servizi usano in maniera predefinita una porta casuale (assegnata dal portmapper): questo rende difficoltoso filtrare il traffico indirizzato a questi servizi. Gli amministratori della Falcot Corporation hanno trovato una soluzione a questo problema, di seguito descritta.
/etc/init.d/nfs-kernel-server
e /etc/init.d/nfs-common
. Forniscono opzioni di configurazione per forzare le porte: i file importanti da modificare per utilizzare sempre queste opzioni sono /etc/default/nfs-kernel-server
e /etc/default/nfs-common
.
Esempio 11.23. Il file /etc/default/nfs-kernel-server
# Numero dei server da avviare RPCNFSDCOUNT=8 # Opzioni per rpc.mountd RPCMOUNTDOPTS="-p 2048"
Esempio 11.24. Il file /etc/default/nfs-common
# Opzioni per rpc.statd. # rpc.statd deve ascoltare su una porta specifica? # Se sì, impostare questa variabile ad un argomento di statd # come: "--port 1000". STATDOPTS="-p 2046 -o 2047" # Sei _sicuro_ che il tuo kernel richieda o non richieda un demone lockd? # Se è così imposta questa variabile a "yes" o "no". NEED_LOCKD=
rpc.mountd
utilizzerà la porta 2048 mentre rpc.statd
si porrà in ascolto sulla porta 2046 ed utilizzerà la porta 2047 per le connessioni in uscita.
lockd
è gestito da un thread del kernel (processo leggero): questa funzionalità è compilata come modulo nei kernel Debian. Il modulo ha due opzioni che permettono di scegliere sempre la stessa porta: nlm_udpport
e nlm_tcpport
. Per far sì che queste opzioni siano usate sistematicamente dev'esserci un file /etc/modprobe.d/lockd
simile a quello che segue:
/etc/exports
, elenca le directory che vengono rese disponibili attraverso la rete (esportate). Per ogni condivisione NFS l'accesso è garantito solo alla lista di macchine fornita. Un controllo degli accessi più accurato può essere ottenuto con qualche opzione. La sintassi di questo file è piuttosto semplice:
/directory/da/condividere macchina1(opzione1,opzione2,...) macchina2(...) ...
*.falcot.com
o un intervallo di indirizzi IP come 192.168.0.0/255.255.255.0
o 192.168.0.0/24
.
ro
). L'opzione rw
permette l'accesso in lettura e scrittura. I client NFS si connettono tipicamente da una porta riservata a root (in altre parole inferiore a 1024): questa restrizione può essere sospesa con l'opzione insecure
(l'opzione secure
è implicita ma può essere resa esplicita, se necessario, per rendere le cose più chiare).
sync
): questo comportamento può essere disabilitato con l'opzione async
. La scrittura asincrona può aumentare un po' le prestazioni ma diminuisce l'affidabilità poiché c'è il rischio di perdere dati nel caso in cui il server subisca un crash tra la conferma di scrittura e la reale scrittura sul disco. Poiché il valore predefinito è cambiato recentemente (rispetto al valore storico di NFS) è raccomandato di rendere esplicita questa impostazione.
anonymous
. Questo comportamento corrisponde all'opzione root_squash
ed è abilitato in via predefinita. L'opzione no_root_squash
che disabilita questo comportamento è rischiosa e dovrebbe essere usata solo in ambienti controllati. Le opzioni anonuid=uid
e anongid=gid
permettono di specificare un altro falso utente da utilizzare al posto di anonymous
.
/etc/fstab
e alla sintassi del comando mount
.
Esempio 11.26. Montare manualmente con il comando mount
#
mount -t nfs -o rw,nosuid arrakis.interne.falcot.com:/srv/shared /shared
Esempio 11.27. Condivisione NFS nel file /etc/fstab
arrakis.interne.falcot.com:/srv/shared /shared nfs rw,nosuid 0 0
/srv/shared/
dal server arrakis
nella directory locale /shared/
. L'accesso in lettura-scrittura è richiesto (da qui il parametro rw
). L'opzione nosuid
è una misura di protezione che rimuove qualsiasi bit setuid
o setgit
dai programmi contenuti nella condivisione. Se la condivisione NFS è pensata unicamente per conservare documenti, un'altra opzione raccomandata è noexec
che previene l'esecuzione di eventuali programmi conservati nella condivisione.