Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Installiamo un network file system

Link copiato negli appunti

Poco tempo fa vi abbiamo parlato di SAMBA, un progetto nato per poter garantire le condivisioni di file su moltissime piattaforme e la compatibilità con il protocollo SMB. Vi avevamo accennato a NFS, sconsigliandovene l'uso su sistemi operativi non Unix Like. In questo articolo approfondiremo l'argomento, spiegandovi come configurare un server NFS (Network File System) e come accedervi dal lato client.

Sul perché evitare di utilizzare NFS su sistemi operativi non UNIX vi abbiamo già parlato in precedenza, comunque ribadiamo il concetto citando dall'NFS-HOWTO: «NFS ha un problema di sicurezza di base per cui il client, se non specificato altrimenti, si fida del server NFS e viceversa. Questo può essere negativo. Significa che se la shell di root viene compromessa sul server, viene compromessa anche quella di tutti i client. E viceversa».

Sistemi di protezione per NFS vengono dati dall'autenticazione richiesta per poter accedere a un sistema operativo Unix. In sistemi dove questo non avviene, NFS si tramuta in una gigantesca falla di sicurezza. Oltre a questo NFS crea tutta una serie di problemi legati alla sicurezza che affronteremo in seguito. Prima di tutto è bene introdurre brevemente il funzionamento di NFS. NFS (Network File System) è un protocollo ideato da Sun Microsystems.

Come avrete intuito si basa su una struttura del tipo client-server e per funzionare si appoggia a RPC (Remote Procedure Call), tramite portmap, un demone che ha il compito di gestire le richieste e la trasmissione dei dati. Se non è presente nella vostra distribuzione, occorre quindi installarlo. Altra cosa di cui avrete bisogno è il supporto a NFS all'interno del kernel, solitamente è presente con i kernel forniti di default dalle distribuzioni, ma tenetelo presente qualora decidiate di ricompilare.

In particolare prestate attenzione al menu "File systems", sottomenu "Network File Systems" (le voci sono "NFS file system support", "Provide NFSv3 client support", "NFS server support", "Provide NFSv3 server support", a seconda se vogliate configurare il vostro PC come server o come client). È anche possibile utilizzare una versione di nfs-server che gira in user-space a scapito di prestazioni, ma può risultare molto più comoda. In questo caso ci riferiremo alla versione che gira in kernel space (che è supportato a partire dal kernel 2.1.12).

Se la vostra distribuzione è Debian dovrete installare i pacchetti chiamati nfs-server (o nfs-kernel-server a seconda della versione che avete), portmap, nfs-common, libwrap0. Se utilizzate Red Hat avrete bisogno di installare i pacchetti portmap e nfs-utils. Una volta installati possiamo passare alla configurazione di NFS vera e propria.

Dal lato server avete bisogno di definire le directory che vorrete condividere con gli altri computer. Potrete definire questo nel file /etc/exports. La sintassi è del tipo:

/directorydacondividere 192.168.0.XXX(opzioni)

al posto di /directorydacondividere dovrete mettere la directory scelta, al posto di 192.168.0.XXX l'IP (o la classe di IP) abilitata a utilizzare la risorsa presente sul vostro PC. Se ad esempio volessimo "esportare" la directory /usr/local/nfs, rendendola disponibile a tutti i PC appartenenti alla nostra classe C (192.168.0.0/24) in lettura e scrittura potremmo scrivere:

/usr/local/nfs 192.168.0.0/24(rw)

Ovviamente è anche possibile inserire più righe e quindi rendere disponibili più directory. L'opzione rw assegna il permesso di lettura e scrittura per la condivisa in questione.

Un'opzione che viene messa di default ma è risulta interessante parlarne è root_squash. Con questa opzione si fa in modo di rendere inaccessibile la condivisa all'utente root dal lato client. Probabilmente vi starete chiedendo il perché di questa opzione. La risposta è semplice: l'utente root sul lato client non per forza corrisponde alla stesso amministratore sul lato server. In questo modo non si rende possibile che l'utente root sul lato client possa interferire con i file dell'utente root sul server. Questa opzione sull'implementazione di NFS su Linux è inserita di default. È bene lasciarla stare, ma se doveste avere la necessità di toglierla potrete inserire come opzione no_root_squash.

È anche possibile impostare una condivisa in sola lettura sostituendo rw con ro. Le possibilità non finiscono qui. Esistono infatti tantissime opzioni disponibili per il files /etc/exports. Vi rimando quindi alla pagina del manuale per ulteriori dettagli (man exports). Una volta editato il file /etc/exports dovrete avviare i server nfs e portmap con:

lnxbox1:~# /etc/init.d/portmap startlnxbox1:~# /etc/init.d/nfs start

Qualora vorreste aggiungere o modificare le condivise non sarà necessario riavviare i demoni ma basterà eseguire il seguente comando:

lnxbox1:~# exportfs -a

Potrete testare che tutto sia a posto scrivendo:

lnxbox1:~# showmount -e

Se otterrete un output del tipo:

Export list for lnxbox1:/usr/local/nfs 192.168.0.0/24

Allora è tutto ok.

A questo punto non vi rimane altro che configurare la macchina dal lato client. Per far questo basterà caricare portmap come abbiamo già visto nella configurazione del server (/etc/init.d/portmap start) e "montare" la partizione esportata in un modo simile a quello già visto per SAMBA. In particolare la sintassi è:

lnxbox1:~# mount -t nfs -o wsize=8192,rsize=8192 ipdelserver:/usr/local/nfs/mnt/condivisa

Al posto di "ipdelserver" inserite l'IP relativo al computer sul quale risiede la partizione esportata. L'opzione -o wsize=8192,rsize=8192 fa in modo di impostare il buffer di lettura e scrittura a 8192 byte. Questo permette di aumentare sensibilmente le prestazioni. È necessario che la directory /mnt/condivisa sia realmente presente sul nostro PC. È anche possibile fare in modo di "montare" al boot in maniera automatica le condivise inserendo un'apposita riga nel file /etc/fstab. Nel nostro caso ad esempio sarà simile a questa:

192.168.0.6:/usr/local/nfs /mnt/condivisa nfs wsize=8192,osize=8192 1 1

Configurare una condivisa con NFS non è un'impresa titanica. I passi da compiere sono relativamente pochi. Bisogna a questo punto fare attenzione al lato riguardante la sicurezza. È importante impostare le proprie condivise in modo da essere accessibili solo dalla rete locale (modificando opportunamente il file /etc/exports). Un altro accorgimento da prendere (dal lato server ovviamente) è indicare esplicitamente nel file /etc/hosts.allow le macchine "fidate". La sintassi in questo caso è:

portmap: IP

Sostituendo ad IP l'IP numerico appartenente al PC che vogliamo "abilitare". Oppure se volessimo consentire a tutti i PC appartenenti alla rete locale di accedere alla condivisa appena creata possiamo scrivere:

portmap: LOCAL

Inoltre potrebbe essere conveniente chiudere con un firewall la porta relativa al portmapper nei confronti del traffico proveniente dall'esterno. In particolar modo portmap è in ascolto sulla porta 111 sia su protocollo TCP che UDP. Tenete in conto anche di questo quando configurate un firewall. Se volete avere maggiori delucidazioni su come configurare un firewall con IPTABLES potete consultare un nostro articolo.

Ti consigliamo anche