Dialoghi Platonici: parlare con i demoni Internet

Qualche migliaio di anni fa Platone ascolto' e poi trascrisse una serie di dialoghi che un simpaticone faceva con la gente incontrata per strada. Il simpaticone era Socrate e quella serie di dialoghi sono rimasti una pietra miliare della filosofia ed il principale ricordo che si ha del grande filosofo greco. Veramente io ricordo molto bene anche la moglie Santippe, ma non faccio testo... (NdA ed ancor piu' ora, per vicende molto piu' recenti della scrittura di questa pagina)
Nel tempo e' capitato anche a me di seguire interessanti dialoghi ed ho quindi deciso di raccoglierli a futura memoria. Naturalmente l'importanza di questi dialoghi e' infinitamente inferiore a quelli di Platone, ma forse vale comunque la pena di riportarli.

I dialoghi sono avvenuti tra un sistemista triste che, forse non trovando adeguata compagnia tra gli umani, inizio' a parlare con dei demoni (i demoni sono programmi sempre attivi su un server Unix/Internet). Poiche' i dialoghi di Platone sono ricordati con il nome della persona o dell'argomento trattato, anch'io faro' lo stesso nei titoli.


I dialoghi

In realta' parlare con i demoni non e' poi cosi' strano. E' una cosa che avviene continuamente. Utilizzando i normali programmi per accedere ai servizi di Internet o lavorando normalmente sui sistemi Unix si colloquia continuamente con i demoni. Tuttavia tale dialogo e' nascosto dal programma che stiamo utilizzando ed il protocollo di messaggi scambiato non e' generalmente visibile.

In realta' in qualche caso e' utile conoscere i messaggi scambiati tra i demoni dei servizi ed i programmi client per diagnosticare eventuali fault, per controllare il funzionamento di alcuni servizi, per risolvere problemi particolari o, infine, per capire come funzionano veramente le cose. Infatti quello che effettivamente viene scambiato sulla rete sono i messaggi del protocollo come puo' essere facilmente visto con uno sniffer o simili. Certo ad un non informatico puo' non interessare per nulla... ma spesso anche agli informatici non interessa affatto sapere come funzionano le cose. Non importa: ve lo racconto lo stesso!

Bene, ora che ho finalmente iniziato ad essere serio possiamo cominciare a parlare con i demoni.


telnetd o dell'emulazione

In realta' il dialogo con il demone del protocollo telnet (il telnetd) non e' molto interessante. Il servizio offerto dal telnetd e' semplicemente quello dell'emulazione di terminale (quindi il risultato e' quello di fingere di essere su un terminale direttamente connesso sul sistema): insomma si tratta solo di trasmettere tutto quanto viene digitato sulla tastiera e riportare quanto visualizzare sullo schermo!

In realta' quello che mi interessa riportare e' che il programma client del telnet puo' essere utilizzato per colloquiare con tutti gli altri demoni: basta indicare il numero di porta cui si vuole parlare (eg. 25 per il sendmail: telnet hostname 25). E questo e' quello che si vedra' in tutti gli altri dialoghi.
Il servizio telnetd risponde alla porta 23, per richiamarlo e' sufficiente il comando telnet hostname poiche' e' la porta di default.

La morale di questo dialogo? Perche' deve esserci sempre una morale o una ragione!?
Pero' un'insegnamento forse c'e': chiunque puo' imitarti. Per quanto bravo tu sia, ci sara' sempre un modo per rifare quello che hai fatto. Ma attenzione: la difficolta' sta nel fare le cose la prima volta, per poi capirle e poterle ripetere.


POP o dei messaggi

Il servizio di POP e' uno dei piu' utilizzati su Internet. Si tratta infatti del servizio di posta elettronica. Attraverso tale servizio un mailer (eg. Eudora, Netscape-mail, Outlook, ...) raccoglie le lettere dal mail server e le scarica su nostro "amato" PC. Attenzione: il servizio di invio di posta e' un'altro ed utilizza un altro protocollo (si tratta dell'SMTP che vedremo dopo, forse).
Mi capita in diverse occasioni di parlare direttamente con il demone POP. Ogni tanto qualche buontempone mi manda email di dimensioni galattiche. La cosa mi da fastidio se sono connesso via modem; allora per controllare la casella di posta mi collego direttamente al servizio e, se e' il caso, cancello la posta non desiderata...
Il servizio pop3 (l'ultima e piu' utilizzata versione del servizio POP) risponde alla porta 110.

DialogoCommento
# telnet hostname.domain 110
Trying IPAddress ...
Connected to hostname.
Escape character is '^]'.
+OK POP3 (X.Y.Z-xxxx) at hostname.domain starting.
user username
+OK Password required for username.
pass password
+OK username has 2 messages (220312131 octets).
list
+OK 2 messages (220312131 octets)
1 220311307
2 824
.
dele 1
+OK Message 1 has been deleted.
quit
+OK Pop server at hostname.domain signing off.
Connection closed by foreign host.
#
Mi collego...





Naturalmente si tratta dello username e della password di posta elettronica




Quando lo pesco mi sente! Non si mandano email di queste dimensioni


Altri comandi utili?   RETR m   TOP m n





Capito perche' quando si configura la mail bisogna specificare una user ed una password? Il protocollo lo richiede!


ftpd o dello scambio

Il protocollo ftp serve per scambiarsi dei file. Presenta una complessita' poiche' vengono utilizzate due comunicazioni parallele per i comandi e per la trasmissione dei dati (la cui porta viene definita di comune accordo tra i due processi). Ma anche parlare sulla sola porta di comandi con un demone ftp puo' essere utile (basta dire sul client che si e' passive). Ad esempio si utilizza per riconoscere il sistema operativo o la versione di ftpd.
Il servizio ftpd risponde alla porta 21. Il servizio tftpd (che e' la versione trucida dell'ftp) risponde ovviamente alla porta 69.

DialogoCommento
# telnet hostname 21
Trying IPaddress ...
Connected to localhost.
Escape character is '^]'.
220 hostname FTP server (UNIX(r) ...
user pippo
530 User pippo access denied.
user username
331 Password required for username.
pass password
230 User username logged in.
dele pippo
250 DELE command successful.
help
214-The following commands are recognized:
   USER    PORT    RETR    MSND*   ALLO    DELE    SITE*   XMKD    CDUP
   PASS    PASV    STOR    MSOM*   REST*   CWD     STAT*   RMD     XCUP
   ACCT*   TYPE    APPE    MSAM*   RNFR    XCWD    HELP    XRMD    STOU
   REIN*   STRU    MLFL*   MRSQ*   RNTO    LIST    NOOP    PWD
   QUIT    MODE    MAIL*   MRCP*   ABOR    NLST    MKD     XPWD
214 (*'s => unimplemented)
quit
221 Goodbye.
Connection closed by foreign host.   
#
Mi collego...


Risponde il demone dell'ftp server

Cerco di collegarmi con un utente che non esiste

Mi collego con un utente valido

Serve la password


Ho cancellato il file pippo!!

Ecco il "protocollo" i comandi indicati sono compresi da server ftp







Addio demone dell'ftp



httpd o dell'universo

Internet e' rimasto un mondo sconosciuto a tutti, se non ai pochi "addetti ai lavori", fino a quando non e' nato il demone httpd. Questo servizio consente di pubblicare pagine sul web. Le pagine possono contenere testi, immagini, script, ... e, soprattutto, collegamenti ad altre pagine su qualsiasi altro sito web nel mondo (o dell'universo come dice il titolo). Le pagine sono cosi' "navigabili" utilizzando un comune browser (Netscape, Internet Explorer, Lynx, Mosaic, ...) [NdE beh e' chiaro che questa pagina era un po' vecchiotta; browser piu' comuni adesso sono: Edge, Chrome, Firefox, Safari, Opera, ... Tor, wget, curl]. L'idea di base del protocollo HTTP e' semplicissima: il browser fa una domanda ed il demone risponde. E basta. Nessuna connessione viene tenuta aperta, nessuna altra informazione passata... Ogni volta che si chiede una pagina e' come se fosse la prima volta! In realta' c'e' il modo per avere una memoria, ma questo va al di la' del semplice dialogo riportato.
Mi capita in diverse occasioni di parlare direttamente con un httpd per verificare se sta funzionando o meno. Il servizio httpd risponde alla porta 80 ma e' molto comune trovarlo anche su altre porte.

DialogoCommento
# telnet hostname 80
Trying IPAddress ...
Connected to hostname.
Escape character is '^]'.
GET /
<HTML>
<HEAD>
<TITLE>DEMO HOME PAGE<TITLE>
<HEAD>
<BODY>
<center>
<IMG SRC="/demo.gif">
<br>
<H1><FONT COLOR=Maroon>DEMO Home Page<FONT><H1>
<center>
<BODY>
<HTML>
Connection closed by foreign host.
#
Mi collego...


Chiedo una pagina

Ecco una normale pagina in HTML!











La connessione si chiude da sola. Il servizio e' connectionless


smtp o dell'apparenza

L'smtp (Simple Mail Transfer Protocol) e' il protocollo per inviare la posta elettronica o email. L'SMTP e' un protocollo diffusissimo, ed ha resistito nel tempo nonostante i suoi difetti (ad esempio non usa nessun meccanismo di validazione). Il programma sendmail (la versione Unix del demone che tratta tale protocollo) fa di tutto compreso il caffe': gestisce liste di indirizzi, effettua l'inoltro della corrispondenza, puo' lanciare programmi alla ricezione di un'email... Ma non divaghiamo: con il protocollo SMTP si mandano le e-mail. Si deve dire chi siamo (il servizio si fida ciecamente di noi, quindi si possono tranquillamente mandare email a nome di altri), a chi vogliamo mandare l'email e specificare il testo. Non c'e' controllo quindi si possono tranquillamente mandare email a nome di altri: per questo questo dialogo si chiama dell'apparenza.
Noi siamo quello che diciamo di essere... Non e' forse cosi'? Non siamo in effetti quello che crediamo di essere? La realta' e' la sostanza o quello che noi sentiamo?
Chiusa la ridicola parentesi filosofica le email si mandano generalmente con i mailer (gli stessi del POP: Eudora, Netscape-mail, Outlook, ...) ma nessuno ci puo' togliere il divertimento di "fare il mailer" noi stessi! Per altro il servizio e' uno dei piu' gentili: se lo salutate con HELO username vi saluta a sua volta!
Il servizio smtp risponde alla porta 25. In effetti lo uso di rado ma e' sempre un piacere fare quattro chiacchere (NdT una volta c'era un bellissimo buco di sicurezza nel sendmail: bastava utilizzare il DEBUG per ottenere i diritti di root sul sistema: per questo lo usavi...) (NdA non so nulla: mai parlato con un sendmail!)

DialogoCommento
# telnet hostname 25
Trying IPAddress ...
Connected to hostname.
Escape character is '^]'.
220 hostname.domain ESMTP Sendmail 8...
mail from: billy.clinton@whitehouse.org
250 billy.clinton@whitehouse.org... Sender ok
rcpt to: mail@meo.bogliolo.name
250 mail@meo.bogliolo.name... Recipient ok
data
354 Enter mail, end with "." on a line by itself
Hi Meo, I read Your online documentation and it's great
Keep on writing
Your Billy
.
250 LAA12251 Message accepted for delivery
mail from: billy.gates@microsoft.com
250 billy.gates@microsoft.com... Sender ok
rcpt to: mail@meo.bogliolo.name
250 mail@meo.bogliolo.name... Recipient ok
data
354 Enter mail, end with "." on a line by itself
Hi Meo, Monica and I would like to came and visit You on July
Let me know which are the days You prefer
Your Billy
.
250 LAA12257 Message accepted for delivery
help
214-This is Sendmail version 8.9.1
214-Topics:
214-    HELO    EHLO    MAIL    RCPT    DATA
214-    RSET    NOOP    QUIT    HELP    VRFY
214-    EXPN    VERB    ETRN    DSN
214-For more info use "HELP ".
214-To report bugs in the implementation contact ...
214-For local information send email to Postmaster at your site.
214 End of HELP info                  
quit
221 hostname.domain closing connection
Connection closed by foreign host.
# 





Beh forse nell'esagerare ho confuso qualcosa...


meo o dell'ignoranza

Veramente non si tratta di un demone. Provare per credere...
L'ignoranza (nel senso di non conoscenza e del desiderio di imparare) la posso invece confermare!


Testo: Dialoghi Platonici: parlare con i demoni Internet
Data: 1 Aprile 2000
Versione: 1.0.10 - 31 Giugno 2015
Autore: mail@meo.bogliolo.name