SSH (prima parte)

ssh logoSSH come dice il nome è una shell sicura. Infatti se per collegarsi a un computer remoto si utilizza una normale shell i dati fra il computer e la macchina a distanza, i dati viaggiano in chiaro perciò chiunque durante la tratta potrebbe intercettarli e magari carpire username e password.
Invece con SSH i dati passano cifrati. La codifica dei dati diminuisce il carico utile di ogni pacchetto per cui ci sarà uno spreco di banda, ma quando la sicurezza è importante è opportuno affidarsi alla shell sicura.
SSH è inserito in molti sistemi operativi: GNU/Linux, Mac OS X, Solaris, OpenBSB, FreeBSD.
Per sistemi Windows è necessario ricorrere a un programma di terze parti (PuTTy).

client server ssh

SSH è anche un protocollo che possiede le sue specifiche per avere una connessione sicura.
Ha 3 fasi: autenticazione, cifratura e controllo dell’integrità.
Come protocollo SSH fornisce ai suoi utilizzatori alcune caratteristiche: tutela la privacy (attraverso la cifratura), garantisce l’integrità, controlla l’autenticazione, concede autorizzazioni, gestisce il tunneling.
La riservatezza dei dati viene attuata usando un flusso cifrato di dati tra le macchine che colloquiano; il protocollo usa gli algoritmi di cifratura: AES, ARCFOUR, Blowfish, Twofish, IDEA, DES, e triple-DES (3DES). Adoperado i loro cifratori si possono scongiurare attacchi di sniffing o intercettazione dei dati da parte di qualcun’altro.
Il controllo sull’integrità si basa su algoritmi come MD5 e SHA1 per fare il controllo degli errori o riscontrare delle alterazione dei dati.
L’autenticazione avviene in due fasi: nel momento in cui il client si connette all’host e controlla che la chiave pubblica salvata sul computer locale sia quella del host remoto, mentre la seconda fase prevede che il computer lontano controlli se l’utente con il quale ci si vuole accreditare esiste e che la password immessa sia corretta.
L’autorizzazione concessa così come i privilegi sono esattamente quelli assegnati all’utente autenticato. Per esempio se ci si collega come utente “semplice” non si portanno modificare i file dell’utente root.
Si possono usare ben tre tecniche di tunneling: TCP port forwarding, X forwarding, Agent forwarding.

Collegarsi a un host remoto

Con il comando:

$ ssh -l marie host.example.com
oppure
$ ssh marie@host.example.com

si può stabilire una connessione al computer remoto richiedendo l’account marie.

Se è la prima volta che ci si connette al server verrà inviata la chiave pubblica del server, la quale sarà memorizzata tra i file di configurazione usati da ssh.

The authenticity of host ‘host.example.com (192.168.1.3)’ can’t be established.

RSA key fingerprint is 78:12:b8:b1:2b:ec:40:2e:71:1f:94:b9:8c:e4:ca:3f.

Are you sure you want to continue connecting (yes/no)?

Rispondendo yes, si memorizzerà la chiave e verrà mostrato un messaggio:

Warning: Permanently added ‘host.example.com (192.168.1.3)’ (RSA) to the list of known hosts.

Apparirà poi la richesta della password associata a marie.

marie’s password: ******

Last login: Ven Nov 16 11:12:47 2007 from host.locale.org

You have new mail.

host.example.com>

Spostare file in modo sicuro

Per trasferire dei file in modo sicuro dal computer locale a quello remoto si può adoperare il comando:
$ scp nomefile marie@host.example.com:
Il file nomefile verrà spedito al computer remoto host.example.com usando l’account marie.

Port Forwarding o tunneling

La tecnica dell’inoltro della porta o tunneling consente di forzare una connessione TCP/IP a passare attraverso SSH in modo cifrato.
Per esempio, se si ha bisogno di collegarsi a una porta chiusa presso il computer remoto, il quale però accetta connessioni SSH, si può creare un tunnel da una porta locale alla porta remota desiderata.
$ ssh -L 3332:localhost:110 host.example.com

La porta locale è 3332 mentre la porta remota che si vorrebbe contattare e host.example.com è il computer remoto. Per poter collegarsi al server pop (porta 110) è necessario configurare il client di posta elettronica affinche scarichi i messaggi usando la porta 3332 e collegandosi a localhost (non all’host remoto).

11 pensieri riguardo “SSH (prima parte)

  1. Andrea ha detto:

    Ciao, se volessi crearmi un server in ufficio per fare delle prove, come potrei iniziare?
    Che sistema operativo installare, come collegarlo in rete ecc.

    Sarebbe possibile metterlo online in modo che chiunque possa accedervi?

    Scusa l’ignoranza è tanta, ma la voglia di sapere altrettanza 🙂

  2. valent ha detto:

    Un server per cosa?
    Se vuoi usare il programma SSH, utilizza una distribuzione Linux come Ubuntu o Debian. Per installare Ubuntu puoi seguire questo video: http://www.youtube.com/watch?v=-xjfK62EZyY

  3. Andrea ha detto:

    Mi servirebbe per condividere files con i miei clienti e pubblicare siti in fase di costruzione perchè possano vederli e testarli.
    Sto provando war ftpd daemon, ma riesco ad accedere solo da locale non da remoto.

  4. valent ha detto:

    Forse perchè hai un firewall o un ip privato.

  5. Andrea ha detto:

    Sto facendo delle prove su un pc con cui lavoro, il firewall è disattivato, per quanto riguarda l’ip non saprei…

  6. valent ha detto:

    Se hai installato linuc basta che digiti sul server “ifconfig” con i privilegi di root e vedi l’indirizzo ip del server.
    Se è uno che inizia con 10.x.x.x o 192.168.x.x o da 172.16.x.x fino a 172.31.x.x, hai un ip privato.

  7. Andrea ha detto:

    è un win e comincia con 192.168.x.x. come faccio per modificarlo?
    intanto sto installando linux su un’altra macchina.

  8. valent ha detto:

    Non puoi cambiarlo con uno che ti pare ma devi acquistarne per poter accedere al server da internet. In alternativa ti conviene noleggiare un server o un vps presso qualcuno come NetSons. Un vps è un server con risorse limitare (tipicamente poca ram) e costa poco ad esempio un vps da 256 MB di ram costa meno di 11 euro al mese ed è l’ideale per fare dei test online.
    Noleggiando un vps avrai a disposizione uno o più indirizzi pubblici quindi il tuo vps sarà raggiungibile dall’esterno.

  9. Andrea ha detto:

    Mi sento come un cane che si insegue la coda 🙂
    Ho pensato di farmi un server locale perchè non riuscivo a settarne uno online. :-/

  10. valent ha detto:

    Se vuoi collegarti dall’esterno devi avere un ip pubblico, altrimenti puoi usarlo internamente. Dovresti fare delle prove in locale e poi una volta che riesci a far funzionare tutto (anche tenendo conto la sicurezza) puoi usare un server o un vps esterno.

  11. Andrea ha detto:

    infatti, mi sa che faccio così 🙂
    Grazie molte 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *