VoIP and Hacking

Filesystems condivisi e criptati

by admin on Jun.29, 2009, under Hacking, Linux, Sicurezza

Chi deve frequentemente accedere a computers, tipicamente dei servers, da remoto, per operazioni di manutenzione o monitoraggio, lo fa normalmente a linea di comando, tramite ssh.
Si trova spesso dunque a rimpiangere di non poter utilizzare i propri programmi preferiti sui dati di interesse, e se il loro impiego dovesse proprio rivelarsi irrinunciabile, è obbligato a trasferire i files in locale, e successivamente a ritrasferirli in remoto, dopo averli modificati o elaborati.
Una soluzione generale a questo inconveniente sta nel fare in modo che il server remoto metta a disposizione il proprio filesystem, o porzioni di esso, come filesystem di rete, ovviamente senza rinunciare all’elevato standard di sicurezza garantito da ssh.
In questo post esaminerò due metodi: il primo consiste nell’utilizzare NFS, criptandone il traffico, mentre il secondo, molto più comodo da implementare, consiste nell’utilizzo di SSHFS.

Per poter utilizzare il primo metodo occorre disporre di una versione di software NFS in grado di supportare TCP, cosa del resto molto comune.

Supponendo che il server abbia un indirizzo 192.168.1.11, occorre modificarne il file /etc/exports perché contenga una riga del genere:

/home/nfsusers     127.0.0.1(rw,insecure,root_squash)

dove in pratica viene indicato al server di esportare via nfs la directory indicata verso sè stesso, con le opzioni che sono racchiuse tra parentesi.
Dopo aver fatto rileggere al server la propria configurazione, con:

# exportfs -ra

diviene possibile interrogarlo sulla sua mappatura dei servizi RPC:

# rpcinfo -p 192.168.1.11
program vers proto   port
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  54434  status
100024    1   tcp  44565  status
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  60664  nlockmgr
100021    3   udp  60664  nlockmgr
100021    4   udp  60664  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  55390  nlockmgr
100021    3   tcp  55390  nlockmgr
100021    4   tcp  55390  nlockmgr
100005    1   udp  45970  mountd
100005    1   tcp  56778  mountd
100005    2   udp  45970  mountd
100005    2   tcp  56778  mountd
100005    3   udp  45970  mountd
100005    3   tcp  56778  mountd

per poterne ricavare le informazioni necessarie per proseguire con la creazione di due tunnel ssh, uno relativo al servizio TCP nfs e l’altro, sempre TCP, al servizio mountd.
Perciò, sempre a partire dal client, si può dare:

# ssh 192.168.1.11 -L 250:localhost:2049  -f sleep 60m
root@192.168.1.11's password:
# ssh 192.168.1.11 -L 251:localhost:56778  -f sleep 60m
root@192.168.1.11's password:

Il primo comando fa in modo che ssh presente sul client inoltri qualsiasi richiesta diretta alla locale porta 250, attraverso il demone sshd presente sul server, alla porta 2049 (sempre del server). Il secondo comando fa qualcosa di simile per le richieste indirizzate alla locale porta 251, inoltrandole al server sshd, che a sua volta le indirizzerà alla propria porta locale 56778. Il nome localhost è qui relativo al server; ovvero, il forwarding avviene verso il server stesso.

L’ultima opzione, -f sleep 60m, indica al server di attendere per 60 minuti una richiesta di connessione; a questo punto, il forwarding continuerà fino al termine della connessione oppure fino alla scadenza dei 60 minuti.
Se si prevede di collegasi al server con una certa frequenza, i precedenti comandi, opportunamente modificati, potrebbero venire inseriti negli scripts di avviamento del client, subito dopo l’attivazione del networking.

Infine basta impartire:

# mount -t nfs -o tcp -o port=250 -o mountport=251 127.0.0.1:/home/localnfs /mnt

Da questo momento è possibile utilizzare il proprio filemanager preferito per navigare nel filesystem remoto, in tutta sicurezza.

Il secondo metodo, che invece fa uso di SSHFS, è molto più semplice ed immediato, inoltre non necessità di alcun software particolare, sulla macchina remota, che non sia semplicemente il servizio ssh.
SSHFS  (Secure  SHell  FileSystem)  è un file  system  per Linux ed altri sistemi operativi con una propria implementazione di FUSE (Filesystem in Userspace), come Mac OS X o FreeBSD. Sul computer locale, dove SSHFS  viene montato, l’ implementazione fa uso appunto del modulo kernel FUSE, mentre sul computer remoto viene usato il sottosistema SFTP di SSH.
L’effetto pratico è che l’utente può interagire coi files remoti, serviti in modo sicuro attraverso SSH, come se fossero files locali.
Una volta installato sul client il pacchetto sshfs, è sufficiente il comando:

# sshfs 192.168.1.11:/opt /mnt
root@192.168.1.11's password:

per poter navigare nell’albero del filesystem remoto relativo a /opt, semplicemente esplorando il mountpoint locale (/mnt).

Per poter correttamente smontare il filesystem:

# fusermount -u /mnt

Send post as PDF to PDF | PDF Creator | PDF Converter
:, , , , , , , ,

1 Trackback or Pingback for this entry

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...