Comunicazione client e server

La comunicazione tra due calcolatori avviene solitamente tramite uno schema client / server, ovvero:

Una volta che il client ha contattato il server la comunicazione è bidirezionale, ed entrambe le macchine possono scambiarsi dei pacchetti di dati. Per poter offrire più servizi su una data macchina, si è convenzionalmente deciso di etichettare i pacchetti con un numero intero indicato come porta. Ai software su un computer è permesso di mettersi in "ascolto" dei pacchetti indirizzati ad una determinata porta (diventando un server), ed il sistema operativo automaticamente inoltra a questo servizio i pacchetti in questione.

Non tutte le porte sono uguali per Linux:

Sulle macchine dell'Aula 4 è installato un software di nome nmap, che permette di interrogre tutte le porte di un dato PC, per scoprire quali servizi sono disponibili.

Si provi ad effettuare la scansione delle porte di un'altra macchina in laboratorio tramite il comando nmap labN, dove al solito N indica la macchina che avete scelto. Che servizi sono riportati come disponibili? E su quali porte? Si provi a determinare (anche con una ricerca su Google) a cosa servono i servizi trovati. Una lista delle associazioni fra porte e servizi si trova nel file /etc/services.

Firewall e telnet

Già nelle prime lezioni, si era visto il comando telnet, l'alternativa "antica" ad SSH. Al giorno d'oggi, questo comando è ancora utile come strumento per contattare i vari servizi di rete.

Il servizio telnet in origine non aveva bisogno di alcuna convenzione particolare: tutto quello che l'utente scrive viene spedito così com'è al server, e viceversa. Dunque, se conosciamo le convenzioni di un particolare protocollo, possiamo comunicare con qualsiasi server tramite il comando telnet.

Si provi, tramite il comando telnet, a contattare il server SSH su un'altra macchina del laboratorio, ad esempio con il comando (il numero 22 è la porta su cui è in ascolto il server SSH):
$ telnet lab12 22
e si provi a comunicare con il server. Chiaramente, non conoscendo noi il protocollo di SSH, non riusciremo ad avviare una vera comunicazione. Possiamo però vedere cosa risponde il server alla prima connessione.
Si può notare che il server SSH è disponibile da qualsiasi computer; in effetti, se avete il comando telnet installato sul terminale nel vostro computer, potete provare a contattarlo anche da casa.

Per proteggere i servizi che sono destinati solo all'uso in rete locale, la maggior parte dei computer (inclusi quelli in Aula 4) sono protetti da un firewall, che filtra le connessioni. Il servizio SSH, che serve per connettersi dall'esterno, è disponibile a tutti. Gli altri servizi, che dovreste aver individuato negli esercizi precedenti, non lo sono.

Si provi a collegarsi ad uno dei servizi diversi da SSH utilizzando telnet dalla propria macchina di casa. Cosa succede?

Ormai, quasi tutti i server telnet sono stati spenti. Tuttavia, qualcuno è stato lasciato attivo con uno scopo diverso da quello originale. Ad esempio, esiste un server telnet disponibile all'indirizzo towel.blinkenlights.nl;

Ci si colleghi al sito descritto con il comando
$ telnet towel.blinkenlights.nl
Per uscire da telnet si utilizzi la combinazione di tasti CTRL + ] seguita da CTRL + D quando appare il prompt del telnet.