INTRODUZIONE
Ormai e´risaputo: l´ era del protocollo ftp utilizzato per il trasferimento di file tra macchine remote sta per tramontare. Cio´e´dovuto sia all´insicurezza nell´ utilizzo di tale strumento, sia alla versatilita´: esso infatti, oltre a trasmettere i dati in chiaro nella rete, non permette di montare in locale una directory remota senza l´utilizzo di un software apposito.
Nel mondo unix le cose sono diverse: viene incontro ssh sia per il trasferimento file, che per la console remota oltre agli altri usi che vedremo.
SSH: SINONIMO DI SICUREZZA
Tale protocollo consiste in uno scambio di chiavi di cifratura dati per consentire di stabilire una connessione criptata, affinche´ il traffico tra due host nella rete non venga sniffato (o meglio puo´ esserlo, ma i dati non sono trasmessi in chiaro). Cio´ permette lo scambio sicuro dei dati. Tale protocollo utilizza vari algoritmi di crittografia, tra cui il robusto RSA.
E´ consigliato utilizzare la versione 2 di tale protocollo, in quanto la 1 presenta notevoli vulnerabilita´.
INSTALLAZIONE DEL SERVER
Supponiamo di avere un server con linux debian installato.
Per l´installazione del server ssh (sshd) digitiamo il comando:
$ sudo apt-get install openssh-server
apt scarichera´ i pacchetti ed automaticamente installera´ il client.
Per le altre distribuzioni (tipo slackware), i pacchetti dovrebbero essere presenti nei cdrom base (quindi installateli con pkgtool), altrimenti scaricate i sorgenti da http://www.openssh.org/, compilateli e configurate tutti i parametri facendo attenzione alla sicurezza (esempio usate il protocollo 2 e se avete un server con dati sensibili disabilitate l´accesso diretto da root).
PRIMA SESSIONE
Ora non rimane che lanciare il server (debian lo fa automaticamente):
da root digitate: root@myserver /]# $(which sshd)
Se non va provate con quest´altro comando:
root@myserver /]# bash /etc/init.d/ssh start
da una macchina remota lanciate (anche da utente normale)
nixw0rm@myclient /home/nixw0rm]$ ssh root@myserver
oppure
nixw0rm@myclient /home/nixw0rm]$ ssh myserver -l root
vi verra´ chiesto di accettare la chiave: digitate yes e inserite la password di root (o dell´ utente specificato dopo -l ).
"Magicamente" vi compare la shell della macchina remota.
E SE USO WINDOWS?
Almeno per la macchina client no problem:
esiste un programmino opensource chiamato putty
http://www.chiark.greenend.org.uk/~sgtatham/putty/
scaricatelo, non necessita di installazione.
ATTENZIONE: NON CONFONDETE PUTTY.EXE CON PUTTYTEL.EXE!!!
A NOI SERVE IL PRIMO.
TRASFERIMENTO FILE
Torniamo al caso in cui il PC client sia equipaggiato con linux,
esiste un comando che permette il trasferimento di file tramite
il protocollo ssh: scp (secure cp). La sintassi del comando e´:
scp [opzioni] sorgente destinazione
dove per indicare la macchina remota (che sia sorgente o destinazione poco importa) usiamo:
utente@server:directory_remota
Giusto per fare un esempio veloce, supponiamo di voler copiare il file pippo.txt, presente nella directory /tmp del client, nella directory /home
del server, richiamo il comando:
nixw0rm@myclient /]$ scp /tmp/pippo.txt root@myserver:/home/
inserendo la password dovrebbe copiarvi il file nella directory home
del server. Il discorso e´ analogo anche se copiate dal server al client:
nixw0rm@myclient /]$ scp root@myserver:/home/pippo.txt ./
in questo caso il file pippo.txt presente sul server in home/ sara´ copiato sul client nella directory in cui vi trovate.
Ora vi viene spontanea una domanda: e se uso windows? Beh anche
per questa situazione abbiamo una scappatella in stile Norton Commander:
WINSCP (http://winscp.net/)
Passiamo ora al montaggio di una directory remota sul client.
IL PROGETTO FUSE
Esiste un progetto che permette agli utenti di scrivere, senza troppa fatica, un filesystem personalizzato per qualunque situazione...
Questo grazie ad un modulo del kernel (fuse.ko) che una volta caricato in memoria (con modprobe o insmod) permette di far montare dispositivi particolari usando il filesystem scritto dall´utente.
Per i dettagli visitate http://fuse.sourceforge.net/.
INSTALLAZIONE DI FUSE E DI SSHFS
Per il nostro caso fuse ci serve per montare una directory remota sul nostro filesystem... Il principio e´ semplice: montiamo la directory remota in un mountpoint locale, mettiamo dentro i file da copiare, e fuse si occupera´ di trasferirli tramite ssh... Infatti sarebbe veramente noioso usare il comando scp per ogni file che dobbiamo copiare... cosi´ montata la directory copiamo i file normalmente come se fosse in locale....
Per debian usiamo synaptic per installare i pacchetti fuse e sshfs (modulo di fuse), per le altre ci sono i sorgenti.
Caricato il modulo fuse (modprobe fuse), dobbiamo montare la directory remota con sshfs sul nostro client. L´uso di sshfs e´ molto semplice:
sshfs utente@hostremoto:directory_remota /mountpoint_locale/
lanciato da root (ovviamente).
esempio
sshfs root@10.0.0.1:/etc /mnt
tale comando monta la directory /etc del server remoto in /mnt della nostra macchina client. Ci ritroveremo i file della directory /etc del server
remoto nella cartella /mnt della nostra macchina locale.
Per smontarla usiamo il classico umount:
umount /mnt
Capito?
CONCLUSIONI
Tale strumento si rivela molto utile per le operazioni aggiornamento dei file su sistemi remoti. Possiamo trasferire file in modo sicuro e semplice.
Se, per esempio dobbiamo aggiornare le pagine web del server remoto,
mountiamo la directory remota /var/www in /mnt del client e lavoriamo sulle pagine web in locale. In questo modo le pagine si aggiorneranno automaticamente ad ogni modifica.
Happy copying.... nixw0rm
domanda?
Come si fa a montare una tedesca sulla proprio macchina con ssh senza entrare in kernel panic??
La natura ama la semplicità (Sir Isaac Newton).
E poiché la costruzione dell'universo è perfetta ed è opera di un Creatore di immensa saggezza, nulla in esso ha luogo in cui non compaia qualche legge di massimo o minimo (Leonhard Euler).
E´ semplice...
Ci sono due modi:
1) Impari il relativo comando in tedesco che corrisponde "Ciao bella, vieni
a casa mia stasera, ti faccio vedere che i würster italiani sono meglio
di quelli tedeschi..."
2) Effettuare la seguente sessione di hacking alla matrix reloaded:
a) identificare la gnocca da montare:
$ host nomedellatedesca.detusch.fig
nomedellatedesca.detusch.fig has ip 359.768.954.258
b) verificare che la gnocca risponda alle nostre chiamate:
$ ping 359.768.954.258
PING 359.768.954.258 56(84) bytes of data.
64 bytes from 359.768.954.258: icmp_seq=1 ttl=52 time=87.7 ms
64 bytes from 359.768.954.258: icmp_seq=2 ttl=52 time=95.6 ms
64 bytes from 359.768.954.258: icmp_seq=3 ttl=52 time=85.4 ms
64 bytes from 359.768.954.258: icmp_seq=4 ttl=52 time=95.8 ms
64 bytes from 359.768.954.258: icmp_seq=5 ttl=52 time=87.0 ms
64 bytes from 359.768.954.258: icmp_seq=6 ttl=52 time=97.6 ms
--- 359.768.954.258 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8998ms
rtt min/avg/max/mdev = 78.162/89.213/97.695/6.836 ms
Sembra che la gnocca si fa rimorchiare (10 packets transmitted, 10 received, 0% packet loss)....
c) ora dobbiamo verificare quali servizi ci offre la gnocca, ed eventuali buchi aperti:
$ nmap 359.768.954.258
Starting nmap V. 4.0 fyodor@insecure.org ( www.insecure.org/nmap/ )
Interesting ports on localhost (359.768.954.258):
(The 1514 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
80/tcp open culo
143/tcp open bocca
515/tcp open altro
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
d) Bene sembra che la gnocca offre servizi a livello professionale...
quindi sicuramente ci fara´ usufruire di tali servizi come ospite
(guest=ospite) quindi cerchiamo di accedere ad essa tramite il
comando
$ sshfs guest@359.768.954.258:/percorsofiga/ /mnt/mypenis
Sicuramente non ci chiedera´ neanche la password (se siamo ospiti)
ATTENZIONE!!! IN ALCUNI CASI POTREBBE NON ANDARE; IN QUANTO
LA VERSIONE DEL KERNEL A DISPOSIZIONE POTREBBE ESSERE
2.6.18-sfigato
CONSIGLIO DI AGGIORNARE TALE VERSIONE::: SENO´SI VERIFICA IL KERNEL PANIC
ciao
http://www.nixworm.co.nr/
nixw0rm@osiris:~$ study --source /dev/book --destination /dev/brain
Device error: You haven't any brain. Install and configure it first.
nixw0rm@osiris:~$ apt-get inst
grazie!!
Ottima spiegazione!! Provo subito :-D
La natura ama la semplicità (Sir Isaac Newton).
E poiché la costruzione dell'universo è perfetta ed è opera di un Creatore di immensa saggezza, nulla in esso ha luogo in cui non compaia qualche legge di massimo o minimo (Leonhard Euler).