NFS SSH · 3 min read · Feb 08, 2026
[Debian-Sarge] Tunnel NFS su SSH
[Debian-Sarge] Tunnel NFS su SSH
Ultimo aggiornamento: 27-09-2006 @ ~21:40
Motivo: Aggiunti porte fisse per il server nfs per semplificare la vita :)
Benvenuto
L’obiettivo di questo howto è costruire un server NFS che funzioni su un tunnel SSH. In questo modo tutto il traffico tra i tuoi host e il server di file è crittografato e quindi più sicuro :)
Normalmente dovresti inserire una password ogni volta che cerchi di stabilire una connessione SSH, ma poiché potremmo montare all’avvio, utilizzeremo ssh-keygen per creare una coppia di chiavi in modo da poter accedere senza inserire una password. Tuttavia, limiteremo quella sessione di accesso all’esecuzione di solo 1 comando ;)
Utilizzeremo una nuova installazione pulita di Debian Sarge per iniziare.
In questo howto utilizzerò il dominio fittizio “linux.lan”.
Installazione del Software
Iniziamo con il server NFS.
apt-get -y install nfs-kernel-serverPrima configurarlo per funzionare su porte fisse, questo renderà molto più facile costruire un firewall, ma altrettanto importante aiuta in montaggi client più semplici.
echo “STATDOPTS=–port 2231” > /etc/default/nfs-common
echo “options lockd nlm_udpport=2232 nlm_tcpport=2232” >> /etc/modules.conf
echo “RPCNFSDCOUNT=8 RPCMOUNTDOPTS=’-p 2233’” > /etc/default/nfs-kernel-server
Ecco fatto, ora possiamo usare la porta 2233 più tardi quando montiamo le condivisioni :) controlla se ha funzionato con rpcinfo -p.
Se nlockmgr utilizza ancora porte casuali, è un’impostazione compilata. Configura questo in grub/lilo come parametri del kernel:
“lockd.udpport=2232 lockd.tcpport=2232”.
Crea un nuovo utente chiamato sleeper da utilizzare per impostare il tunnel ssh da altri host. Genereremo una chiave per questo account in modo da poter accedere con un file di chiave invece di digitare la tua password ogni volta. L’account sarà anche limitato ad eseguire ‘sleep’ in questo modo. Altri comandi falliranno semplicemente.
adduser sleeper
su sleeper
Ora passa a un client che utilizzerà il nostro file server.
Prima abbiamo bisogno di una chiave:
ssh-keygen -t rsa -b 2048(usa le impostazioni predefinite e NESSUNA passphrase!)
Ora copia il file .pub nella home directory di sleeper sul server:
scp -P 12345 ~/.ssh/id_rsa.pub [email protected]:~/Ora torna al server:
Come utente ‘sleeper’ dobbiamo configurare/installare la chiave:
mkdir ~/.ssh
cd ~/.ssh
mv ../id_rsa.pub ./id_rsa.pub
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
Aggiungi questo all’inizio di authorized_keys (prima di ssh-rsa […]):
client="client.linux.lan",command="/bin/sleep 600d"sostituisci “client” con il nome host corretto del tuo client, o usa numeri IP.
(ma assicurati che ogni voce rimanga su 1 riga!)
Ogni client che ha bisogno di accesso al file server deve memorizzare i propri dati di sicurezza (dal file id_rsa.pub) nel file authorized_keys, quindi dovresti ripetere questo per ogni host.
Montare NFS su SSH sui tuoi client
Emetti questi comandi per avviare i tunnel per nfs e mountd:
(sintassi: ssh -f -c crittografia -L porta_locale:nfsserver:nfsport -l nome_utente nfsserver comando_remoto)
Nota anche che il numero di porta per mountd è diverso ad ogni riavvio del server NFS… Tienilo a mente.
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 61001:10.0.0.241:2049 -l sleeper 10.0.0.241 sleep 600d
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 62001:10.0.0.241:2233 -l sleeper 10.0.0.241 sleep 600d
Questo crea una connessione che rimarrà attiva per quasi 2 anni… :)
Ora modifica il tuo fstab e monta: echo “localhost:/export/data /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto” >> /etc/fstab mount /mnt
Certo, abbiamo bisogno di alcune cartelle montabili (condivisioni) definite sul server NFS:
mkdir /export
mkdir /export/data
mkdir /export/www-virtual
mkdir /export/www-conf
mkdir /export/mail-virtual
mkdir /export/mail-conf
Aggiungile a /etc/exports:
/home/export/data 10.0.0.241(rw,root_squash,sync)Nota che l’indirizzo IP è lo stesso del server nfs? È perché li monterai da localhost quando hai stabilito il tunnel ssh.
Alcune impostazioni di sicurezza poiché non vogliamo che nessuno al di fuori della nostra rete acceda al server: echo “portmap: ALL” > /etc/hosts.deny
echo “portmap: 10.0.0.0/255.255.255.0” > /etc/hosts.allow
Riavvia NFS: /etc/init.d/nfs-kernel-server restart
Ecco fatto! Ora puoi montare il filesystem sui tuoi client senza la necessità di fornire una password. E naturalmente tutto il traffico sarà crittografato :)
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.