mercoledì 22 gennaio 2014

Phishing: andiamo a pesca!

Ogni tanto mi arrivano email minatorie come questa:

ULTIMI GIORNI DISPONIBILI: dal 21 gennaio 2014 potrai operare online solo
con il nuovo sistema Sicurezza web Postepay.

Gentile Cliente,

Come anticipato in precedenti comunicazioni, il 20 gennaio scorso abbiamo
completato il rinnovamento dei sistemi di sicurezza per eseguire le
operazioni online di ricarica Postepay.

 Tuttavia, avendo rilevato che non hai ancora attivato il nuovo sistema
Sicurezza web Postepay, per evitare di sospenderti il servizio abbiamo
deciso: 
-in via del tutto eccezionale 
-di mantenere ancora attivo il precedente sistema basato sull'utilizzo dei
soli dati della Postepay (numero carta, scadenza, Cvv2) fino al 28 gennaio
2014.

 Dopo il 28 gennaio p.v. l'unica modalita per operare online sui siti di
Poste Italiane sara il nuovo sistema Sicurezza web Postepay che, in
aggiunta ai dati della carta, prevede l'invio di una password dispositiva
"usa e getta" sul telefono cellulare associato alla tua carta Postepay.

Per attivare il sistema Sicurezza web Postepay devi:
-scaricare l'allegato, aprirlo nel browser e seguire i passaggi richiesti;
 -successivamente, abilitare la tua carta al nuovo sistema sui siti di
Poste Italiane, accedendo alla sezione "Sicurezza web" nel menu dedicato
ai servizi online Postepay.

Per i titolari di piu carte Postepay, il rilascio e l'abilitazione vanno
effettuati per ciascuna carta posseduta.

Grazie per aver scelto Postepay
Distinti Saluti,
BancoPosta © Poste Italiane 2014

Se escludiamo la totale assenza di lettere accentate l'italiano è corretto ed è palese che non si tratta di un testo scritto da un pessimo traduttore automatico. Il server di posta del mio provider ha catalogato questa email come SPAM, vediamo un po' perché...

Prima di tutto ha un allegato in formato HTML, poi NON proviene da Poste Italiane ed infine paiono molto interessati ai dati della mia carta di credito Postepay.

Come faccio a dire che non viene da Poste Italiane? Mi è bastato guardare due cose: qual è il Mail Exchanger (MX) per postepay.it e qual è il server da cui è partita questa email. Per il primo basta usare il tool dig:

$dig @62.241.4.240 MX postepay.it

; <<>> DiG 9.9.4-P1 <<>> @62.241.4.240 MX postepay.it
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27375
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;postepay.it.                   IN      MX

;; ANSWER SECTION:
postepay.it.            7200    IN      MX      20 relay-bp.poste.it.

;; AUTHORITY SECTION:
postepay.it.            7200    IN      NS      dns2.poste.it.
postepay.it.            7200    IN      NS      dns.poste.it.

;; ADDITIONAL SECTION:
relay-bp.poste.it.      86400   IN      A       62.241.5.144
dns.poste.it.           86400   IN      A       62.241.4.240
dns2.poste.it.          86400   IN      A       62.241.8.240

;; Query time: 69 msec
;; SERVER: 62.241.4.240#53(62.241.4.240)
;; WHEN: mar gen 21 22:18:21 CET 2014
;; MSG SIZE  rcvd: 156

Come si può intuire dig consente di effettuare richieste direttamente ai server DNS e di vedere la risposta: in questo caso la richiesta è stata fatta direttamente al server dns delle Poste (dns.poste.it) tramite l'uso della clausola "@62.241.4.240". Avremmo potuto chiedere ad un qualsiasi altro dns impostato per la ricerca ricorsiva, ma così siamo più sicuri di aver centrato il bersaglio.

Per sapere l'IP del mittente mi è bastato guardare il sorgente della email stessa (la procedura per leggerlo cambia a seconda del client usato). I campi Received sono impilati (stacked), il che significa che il primo Received che leggete è stato inserito dall'ULTIMO server che ha ricevuto questa email mentre l'ultimo campo Received è stato inserito dal PRIMO server che l'ha ricevuta (ed è anche quello che ci interessa per scoprire chi l'ha mandata):

Received: from unknown (HELO postepay.it) (test@bizmro.com@151.1.70.175)
by mailhosting3 with ESMTPA; 20 Jan 2014 14:17:43 -0000

A casa mia 151.1.70.175 è diverso da 62.241.5.144 e spero che lo sia anche a casa vostra...

A questo punto mi sono incuriosito, ho scaricato l'allegato e l'ho aperto con un editor di testo. Si trattava di un vero e proprio documento HTML 4 che nell'intestazione aveva la riga:

<base href="http://84.246.226.233/files/">

E qui le cose si fanno interessanti... Infatti un whois ci rivela che si tratta di un IP francese:

$ whois 84.246.226.233
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '84.246.225.0 - 84.246.226.255'

% Abuse contact for '84.246.225.0 - 84.246.226.255' is 'pb@netissime.com'

inetnum:        84.246.225.0 - 84.246.226.255
netname:        NETWORK2
descr:          netissime
admin-c:        EMN7-RIPE
country:        FR
admin-c:        BH1182-RIPE
tech-c:         BH1182-RIPE
status:         ASSIGNED PA
mnt-by:         ELB-MNT
mnt-lower:      ELB-MNT
mnt-routes:     ELB-MNT
source:         RIPE # Filtered

role:           ELB MULTIMEDIA NETWORK
address:        17 RUE JEAN BOUREGY VILLEURBANNE FRANCE
admin-c:        Bh1182-RIPE
tech-c:         Bh1182-RIPE
nic-hdl:        EMN7-RIPE
source:         RIPE # Filtered
remarks:        ***************************************************
remarks:        In case of abuse or spam, please use :
remarks:        Web : http://www.netissime.com
remarks:        Email:  abuse@netissime.com
remarks:        ***************************************************
abuse-mailbox:  abuse@netissime.com
mnt-by:         elb-mnt

person:         Boulahbel  hichem
address:        17 rue jean bourgey Villeurbanne 69100
phone:          +33437430037
nic-hdl:        Bh1182-RIPE
source:         RIPE # Filtered

% Information related to '84.246.224.0/21AS34274'

route:          84.246.224.0/21
descr:          Routage ELB MULTIMEDIA HOSTING
origin:         AS34274
mnt-by:         elb-mnt
source:         RIPE # Filtered

% This query was served by the RIPE Database Query Service version 1.70.1
(WHOIS2)

Incuriosito ho provato a collegarmi al sito usando lynx:

                                              Default Parallels Plesk Panel Page
Parallels Plesk Panel

Web Server's Default Page

   This page is generated by Parallels Plesk Panel, the leading hosting
   automation software. You see this page because there is no Web site at
   this address.

   You can do the following:
     * Create domains and set up Web hosting using Parallels Plesk Panel.

   For more information please contact .

Other Parallels Solutions

   Parallels Desktop for Mac

Parallels Desktop® for Mac

   Lets you run Windows on any Intel-based Mac without rebooting! The best
   solution for running Windows, Linux, or any of many other operating
   systems alongside OS X.
   Learn More!
   Parallels Workstation

Parallels® Workstation

   Lets you run Windows, Linux and more side-by-side on a single PC
   without rebooting. The most powerful, stable, easiest-to-use,
   cost-effective desktop virtual PC solution available today.
   Learn More!
     * Parallels Virtuozzo Containers - the most efficient server
       virtualization technology.
     * Parallels Automation - hosting, SaaS, and cloud computing
       automation solution.


Quindi è un VPS e questa è la homepage di default... E la directory "files"? Ecco cosa risponde il web server a chi cerca di accedervi:

                                                                   403 Forbidden
                                   Forbidden

   You don't have permission to access /files/ on this server.
     __________________________________________________________________


    Apache/2.2.9 (Fedora) Server at 84.246.226.233 Port 80


Qualcuno si è ricordato di settare il file .htaccess oppure Apache è stato configurato globalmente per non consentire l'indexing delle directory. Peccato che si sia dimenticato di cambiare la pagina di errore di default rivelandoci che distro usa per fare phishing (a meno che non sia ESTREMAMENTE furbo e non abbia usato la pagina di default di Fedora per sviare le indagini).

Vediamo un pochino cos'altro c'è in quell'allegato HTML:

<form name="neon" method="POST" onsubmit="return gopro()"
action="done.php">

Ok, "neon", vediamo cosa succede se faccio una richiesta vuota a done.php:

$ nc 84.246.226.233 80
GET /files/done.php HTTP/1.1
Host: 84.246.226.233

HTTP/1.1 302 Found
Date: Tue, 21 Jan 2014 13:04:16 GMT
Server: Apache/2.2.9 (Fedora)
X-Powered-By: PHP/5.2.6
Set-Cookie: PHPSESSID=rr7in03smvjrm0bchshqq51v86; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Pragma: no-cache
Location: http://www.postepay.it/
Content-Length: 0
Connection: close
Content-Type: text/html

Questa volta non ho usato lynx ma ho fatto la richiesta direttamente tramite nc (ovvero netcat). Netcat è un programma molto utile installato di default in Debian e disponibile come pacchetto in moltissime distribuzioni che consente di inviare direttamente dati attraverso TCP o UDP. In questo caso io (essere umano) ho finto di essere un browser e ho chiesto al server web di darmi il file corrispondente all'URL "/files/done.php". La risposta del server è stata un redirect al sito postepay.it...

Tipico del "pescatore": quando ha ottenuto i dati che cercava rimanda sempre l'utente nel sito legittimo. Peccato che abbia commesso alcuni errori molto grossolani...

In primo luogo un utente medio che cade vittima del phishing non sa scaricare un allegato ed eseguirlo, molto meglio usare l'HTML nelle email e celare il link alla pagina con il form da compilare anziché allegarlo alla email.

In secondo luogo i campi Received si possono forgiare: avrebbero potuto creare alcuni campi fasulli e celare così la reale origine dell'email (un IP italiano, molto probabilmente assegnato dinamicamente).

Morale della favola: quando una email puzza molto probabilmente c'è del marcio sotto, ma almeno adesso avete qualche strumento in più per controllare.

martedì 21 gennaio 2014

Delirii e BSD - Sesto Episodio

Riepilogo delle puntate precedenti: dopo innumerevoli improperi e numerose ore il nostro ha completato il rimpiazzo e lo ha caricato in auto dirigendosi verso il luogo di lavoro...

Sesto episodio: Epilogo.

In quest'articolo vedrò di fare un po' il punto di questa serie rispondendo ad alcune delle domande che mi sono state poste in merito a questi articoli.

"Perché OpenBSD e non Debian?"

Questa è una bella domanda. Sono un utente Debian da un po' di tempo ormai (ho cominciato con l'amministrare server Debian nel 2004) ed è in assoluto la distribuzione di Linux con cui mi trovo meglio. Ultimamente, però, non è più la distribuzione snella e leggera che era una volta: è molto difficile avere un sistema base usabile con X.org e stare al di sotto dei 500 Mbyte con Debian 7 (si badi che ho scritto difficile, non impossibile).

A proposito di distribuzioni leggere: molti arcieri hanno provato a convertirmi con scarso successo: Arch è TROPPO vicina a Linux From Scratch per le mie esigenze e inoltre anche con Arch stare sotto il limite dei 500 Megabyte ed avere X.org significa spulciare molto attentamente quello che si installa con pacman. C'è differenza tra imparare le cose perché VUOI e imparare le cose perché DEVI e purtroppo ho già il mio bel da fare nella vita di tutti i giorni per potermi permettere il lusso di modificare ogni singolo aspetto della configurazione del mio sistema.

Come ho scritto negli altri articoli OpenBSD è attivamente sviluppato su TUTTE le architetture supportate: comprese vecchie Workstation Sun, ancor più vecchi VAX, relativamente nuovi Mac con processori G4 e perfino appliance di rete basate su processori ARMv5 a 200 MHz. Su ciascuna di queste macchine vengono scaricati i sorgenti e compilato il sistema base per ogni release di OpenBSD (una volta ogni 6 mesi). Questo significa che il Sistema Operativo deve essere abbastanza robusto ed abbastanza leggero da poter girare su queste macchine e da consentire loro di compilare una base di codice vasta quasi un GigaByte. Certamente è vero che alcune di queste macchine ci mettono GIORNI a compiere un tale lavoro, ma se ci fossero dei problemi seri nel codice di OpenBSD questi salterebbero fuori proprio in caso di grosso carico delle macchine stesse. Ed è effettivamente successo più di una volta stando a quanto afferma Theo De Raadt. Lavorando con architetture strane su macchine vecchie e limitate sia in potenza di calcolo che in memoria (sia di massa che RAM) e volendo avere un'esperienza utente il più coerente possibile tra tutte le architetture (in modo tale che uno che sa amministrare OpenBSD su i386 lo sappia fare anche su un Mac G4 o su una Sun Ultra 1 senza cambiare il suo metodo di lavoro) è ovvio che occorra scrivere codice estremamente pulito, portabile e il più snello possibile. tutto questo avendo ben presente che uno dei punti su cui si focalizzano gli sviluppatori di OpenBSD è la sicurezza.

C'è un altro fattore che mi ha spinto a provare OpenBSD nel 2006: sia il kernel che lo userland sono portati avanti assieme dagli sviluppatori di OpenBSD sotto la benevola guida (leggasi: dittatura dal pugno di ferro) di Theo De Raadt.

Lo sviluppo del kernel Linux è molto più anarchico (lo stesso Torvalds ha ammesso che ci sono stati momenti in cui la base di codice di Linux era diventata "bloated and huge", ovvero "stracarica ed enorme") e lo sviluppo dello userland GNU è molto frammentato del punto di vista organizzativo: abbiamo casi in cui ci sono sovrani assoluti (vedi Ulrich Drepper e le glibc) oppure casi in cui ci sono comitati direttivi come nello GNOME project.

La ragione principale però l'ho indicata nel quarto articolo: pf. Trovo che pf sia una soluzione molto funzionale ed elegante per chi deve mettere in piedi un gateway e consiglio l'acquisto (e la lettura) di "The Book of PF" (ISBN: 978-1-59327-274-6) a chiunque fosse interessato ad approfondire i concetti legati alla gestione di reti tramite pf (altro consiglio: se comprate il cartaceo direttamente dall'editore avrete l'ebook in formato PDF ed ePub gratis).

"Perché dovrei installare OpenBSD? Linux fa già tutto quello che mi serve!"

La stessa domanda può essere posta da chi usa Sistemi Operativi proprietarii a chi lo sta cercando di convincere a passare a un Sistema Operativo a codice aperto o ad un Sistema Operativo basato su Software Libero. Per tanto vedrò di rispondere in termini generali cercando di essere il più neutrale possibile (impresa ardua).

Essenzialmente vedo tre ragioni che spingono qualcuno a migrare da un Sistema Operativo ad un altro:

  1. Necessità.
  2. Convenienza.
  3. Scelta personale.
Nel primo caso si ha bisogno di una particolare caratteristica che non presente nel Sistema Operativo che si usa di solito ma che è disponibile per il nuovo Sistema Operativo e questa caratteristica da sola basta a giustificare la migrazione. Di solito chi migra per necessità è un tecnico esperto che sa valutare i pro e i contro e sa come convincere chi sgancia i soldi che la migrazione avrà un impatto positivo sui costi a medio e lungo termine. Costoro sanno (o dovrebbero sapere) benissimo cosa stanno facendo e quindi l'unica maniera per convincerli è mettere a disposizione del pubblico le feature e i benchmark, possibilmente effettuati da terze parti che siano il più possibile neutrali.

Nel secondo caso si tratta di un ragionamento simile ma non identico: il mio attuale Sistema Operativo fa tutto quello che mi serve ma costa mantenerlo/aggiornarlo e sto cercando un'alternativa altrettanto valida ma che mi costi meno. Questo caso era piuttosto comune anni fa in cui parecchi utenti di vari UNIX commerciali vennero a conoscenza delle alternative Open come GNU/Linux e *BSD ai vari HP/UX, AIX, Unixware ecc. ecc. Queste grandi migrazioni hanno fatto la fortuna di Red Hat e hanno definitivamente affossato gli UNIX proprietarii, con la notevole eccezione di Mac OS X.

Il terzo caso è quello che mi interessa maggiormente perché spesso si tratta di smanettoni che vengono a sapere dell'esistenza di un'alternativa e decidono di provarla per curiosità. Altre volte si tratta di persone che non condividono alcune delle scelte operate da chi gestisce il loro attuale Sistema Operativo. A costoro dico che OpenBSD NON è perfetto: richiede che l'utente si informi e si legga la documentazione prima di cominciare e non ha una vasta community di gente amichevole e ben disposta verso chi non ha la più pallida idea di cosa sta facendo. È un Sistema Operativo scritto ad uso e consumo degli sviluppatori dello stesso senza alcuna garanzia implicita od esplicita che funzioni e che faccia quello che voi pensiate che faccia.

Detto questo: a me OpenBSD va bene. Fa quello che gli chiedo di fare, ha dei default che ritengo ragionevoli (attivare solo il minimo indispensabile e lasciare all'amministatore il resto), ha un'ottima documentazione sotto forma di pagine man ricche di esempi, non mi chiede di decidere in fase di installazione ogni singolo software che voglio installare ma non mi riempie il disco rigido con Gigabyte di librerie, linguaggi di scripting, Desktop Environment e chi più ne ha più ne metta. Non mi obbliga a compilare ogni singolo pacchetto software ed ha un sistema d'installazione che non richiede la lettura di otto pagine della Wiki: basta leggere il file INSTALL.* relativo all'architettura del proprio computer (i386, amd64, sparc, ecc. ecc.).

Sono una persona molto conservativa, il mio motto personale è: "la PENULTIMA versione è la migliore perché almeno sai a cosa vai incontro". OpenBSD (e Debian GNU/Linux) rispettano questa mia filosofia cercando di evitare i cambiamenti fatti solo per il gusto di avere roba nuova, quelli fatti solo per ottenere un incremento delle prestazioni oppure quelli che vengono fatti solo perché "così è più bello!".

"Mi consigli di provarlo o mi stai consigliando di starne alla larga?"

Nè l'una, nè l'altra: se siete spinti da una naturale curiosità e volete avere sotto gli occhi un Sistema Operativo che sia abbastanza "semplice" da studiare ma abbastanza funzionale da poter essere usato come server allora potete provare OpenBSD. Se volete essere sempre aggiornati e volete comunque imparare alcuni dei meccanismi sottostanti esiste Arch. Se volete qualcosa che funzioni e che sia ragionevolmente mantenibile sul lungo periodo andate di Debian. Se vi occorre un file server con buone prestazioni e il supporto nativo a ZFS provate FreeBSD. In fin dei conti gli OS sono strumenti: non potete prendere a martellate una vite e pretendere che il risultato finale sia un buon lavoro. In quanto strumenti, i Sistemi Operativi, sono stati forgiati ed adattati per compiti ben precisi: secondo me conoscerli e saperli adoperare arricchisce chi spende tempo per imparare ad usarli, anche se magari non li userà che una o due volte nel corso della sua carriera.

giovedì 16 gennaio 2014

Xfdashboard: un'interfaccia differente per Xfce (o quasi)

Da qualche tempo a questa parte alcuni utenti di Xfce (me compreso) cercano di ottenere una esperienza utente simile a quella introdotta da Gnome Shell, ma senza dover rinunciare alle performance a cui sono abituati. Fino a qualche tempo fa ogni tentativo era praticamente riconducibile alla semplice modifica della disposizione dei pannelli e applet, l'aggiunta di una dock e, quando proprio si voleva esagerare, la configurazione di un programma che simulasse gli hotcorner e uno (tra Telescope e Skippy) che si occupasse di ricreare la funzione exposé.

Xfdashboard è un software creato con lo scopo di evitare questa accozzaglia di trucchetti e fornire alcune delle funzionalità più utili di Gnome Shell anche su Xfce.

Vi ricorda qualcosa?

Come potete vedere dall'immagine qui sopra il design non è dei migliori, ma il lato positivo è che lo sviluppatore ha trascurato questo particolare concentrandosi sulle funzionalità. Eviterò, in questa sede, di riportarvi tutte le potenzialità di xfdashboard per il semplice fatto che lo sviluppatore stesso ha messo insieme un sito web in cui vengono spiegate ampiamente tutte le possibilità che offre questo software.

Allo stato attuale, però, vi sono ancora molti scogli nell'utilizzo quotidiano dell'applicazione. Oggi il design di un'applicazione è molto importante per la maggior parte di coloro che la utilizzano e questo è sicuramente uno dei problemi più notevoli di questo software, ma non l'unico: la ricerca delle applicazioni è lenta, la barra di ricerca trova solamente le applicazioni (un po' come già fa Appfinder di Xfce, risultando dunque molto inferiore all'utilissima search box di Gnome Shell), l'applicazione è lenta nello svolgere le operazioni e vi sono alcuni bug che impediscono il trascinamento delle finestre in altri spazi di lavoro. Va sottolineato, inoltre, che xfdashboard non è una reale interfaccia per Xfce, viene richiamato manualmente e lanciato a schermo intero a comando, ma non sostituisce in alcun modo i classici pannelli.

L'impressione è che xfdashboard sia sulla carta un prodotto eccellente, ma sicuramente ancora molto lontano dall'essere pienamente utilizzabile. Un problema? Ma figuriamoci, ecco il link per contribuire: installate, segnalate i bug e in tempo zero vedrete che anche Xfce riuscirà ad avere un'interfaccia interessante come questa.

Un'ultima indiscrezione: pare che il manutentore della versione Netbook di Manjaro sia molto interessato al progetto, ha già chiesto alcune aggiunte allo sviluppatore (come la possibilità di lanciare xfdashboard come demone all'avvio del sistema) e chissà, forse lo vedremo presto su una delle distribuzioni più chiacchierate e attive del momento.

martedì 14 gennaio 2014

Delirii e BSD - Quinto Episodio

Riepilogo delle puntate precedenti: la SUN Ultra 1 effettua correttamente il NAT tra le due interfacce. Il cielo sta passando dal nero al blu e questo significa che presto sorgerà il sole e con esso sorgerà anche un'orda di utenti che vorranno leggere le loro email e postare i loro gattini su Facebook. Al nostro eroe non rimane molto tempo per configurare anche il DHCP e il DNS...

Quinto episodio: DHCP e DNS.

Agli albori di Internet il numero dei computer connessi (host) era talmente esiguo che essi erano configurati a mano e che un singolo file di testo (chiamato "HOSTS.TXT") conteneva tutto l'elenco dei nomi degli host di tutta la rete Internet. Chiaramente una simile situazione non era destinata a durare a lungo.

Se volete approfondire la storia del DNS vi consiglio la lettura del RFC 882 presso il sito dell'IETF (Internet Engineering Task Force). Il documento ha più che altro un valore storico, ma è una buona introduzione hai motivi che hanno portato alla definizione del DNS.

Per i più pigri l'URL è: http://www.ietf.org/rfc/rfc0882.txt

Sì, la data è esatta: Novembre 1983. Quel documento ha passato i trent'anni d'età e lo potete leggere ancora oggi nel suo formato originale grazie ad ASCII.

Ora che la vostra mente è sconvolta concedetemi un attimo e finirò l'opera: senza il DNS il traffico del World Wide Web e delle email crollerebbe praticamente a zero. BOOM!

"Perché scrivi questo?". Perché è vero: ogni volta che voi cliccate su un link (stavo per scrivere "digitate un indirizzo nel browser", ma poi mi sono reso conto che non lo fa più nessuno) attivate senza saperlo tutta una serie di operazioni che hanno il solo scopo di mettervi in grado di fruire delle informazioni che avevate richiesto. L'intera infrastruttura è concepita per essere trasparente all'utente e ci riesce talmente bene che adesso i quindicenni non "navigano su Internet" ma "usano Facebook e YouTube" totalmente ignari dell'universo oscuro popolato da esseri barbuti e poco socievoli che c'è dietro. Sappiatelo: Internet vista da dentro somiglia molto alle Miniere di Moria.

"Ma quali sono queste operazioni?". Semplificando moltissimo e SENZA scendere al di sotto del livello applicativo dello stack TCP/IP possiamo dire che, in linea di massima, le operazioni solo le seguenti:

  1. Il browser provvede a suddividere l'URL nelle sue parti fondamentali estraendo protocollo, nome host (o indirizzo IP), porta (se presente), percorso della risorsa ed eventuali opzioni (tutto quello che viene dopo il punto di domanda).
  2. Se il protocollo è supportato dal browser questo prosegue a processare la richiesta, altrimenti controlla se ci sono altri programmi di sua conoscenza che possono evadere la richiesta al posto suo. Se entrambe le condizioni non si verificano il browser di solito notifica l'errore all'utente.
  3. Se l'URL contiene un indirizzo IP il browser provvede ad inviare la richiesta per quella risorsa (secondo le regole imposte dal protocollo specificato) direttamente all'IP specificato, altrimenti invia una richiesta al proprio server DNS affinché questo risolva la corrispondenza nome host -> indirizzo IP.
Arrivati a questo punto il browser ha fatto tutto quello che era in suo potere per ottenere la risorsa richiesta e tutto quello che può fare è mettersi in attesa di una risposta dal DNS o dall'IP specificato.

Se la risposta del DNS non arriva, arriva troppo tardi oppure arriva ma è errata l'utente non sarà in grado di collegarsi alla risorsa richiesta e si arrabbierà moltissimo per questo.

Lo stesso discorso vale per le email: la parte dopo la "@" indica il dominio a cui inviare quella email. Il server di posta che riceve l'email dal client provvederà ad interrogare il DNS per sapere chi è il server di posta per quel dominio e quindi provvederà ad inoltrare l'email a quel server.

Quindi per riassumere: levi il DNS e Internet MUORE. Punto. Il server che espone la risorsa può tranquillamente continuare a funzionare, ma se gli utenti non hanno modo di raggiungerlo perché il sistema che associa il nome (che loro conoscono) all'indirizzo IP (che non conoscono e che può anche cambiare tra un accesso e il successivo) non risponde di fatto tale risorsa non è più accessibile.

Come tutti noi sappiamo non esiste catastrofe peggiore al mondo: uragani, terremoti, l'uscita di un nuovo album di Nicki Minaj sono NULLA in confronto alla perdita della connessione ad Internet.

Si suppone che un servizio così fondamentale sia robusto, veloce e sicuro. In effetti gode di una ridondanza che va dal buono all'ottimo, sfrutta tutti i trucchi possibili per ridurre al minimo l'intervallo di tempo tra l'invio della richiesta e la risposta... Però sul lato sicurezza siamo decisamente scadenti.

Non starò ad elencare tutti i problemi di sicurezza del DNS, c'è una nutrita serie di articoli in merito per chi conosce l'inglese e sa usare un motore di ricerca. Mi limiterò ad una considerazione: un sistema sicuro solitamente ha controlli multipli ridondanti che rallentano l'accesso all'informazione e il servizio di risoluzione dei nomi a dominio è pensato per essere veloce perché da esso dipende buona parte della latenza iniziale nella comunicazione. Chiunque chieda sicurezza e velocità, a mio modesto avviso, vuole la botte piena e la moglie ubriaca.

L'approccio degli sviluppatori di OpenBSD al problema del DNS è piuttosto pragmatico: "prendiamo il server DNS con licenza BSD più diffuso (Bind), eliminiamo dal codice tutti i bug che potrebbero minare la sicurezza del software in questione e mandiamo upstream le patch nella speranza che le includano nella versione ufficiale". Tutto questo in attesa che ci si decida a trovare un'alternativa all'attuale sistema che sia condivisa da tutti.

L'alternativa ovviamente tarda ad arrivare, come sta tardando ad arrivare l'utilizzo di massa della versione 6 del protocollo IP. Quando si tratta di mettere TUTTI d'accordo c'è sempre da mettere in conto una notevole resistenza a qualsiasi cambiamento.

L'altro protocollo di cui discuterò è il DHCP (Dynamic Host Configuration Protocol). Anche il DHCP è nato per risolvere un problema dovuto all'aumento degli host connessi ad Internet: il problema della configurazione degli host medesimi.

Quando le reti sono piccole e il numero degli host connessi costante il problema non si pone: li si configura a mano tutti una volta per tutte e poi si provvede a configurare gli host che vengono aggiunti/sostituiti. Ma quando si cominciano ad avere centinaia di macchine e/o un ricambio continuo degli host le cose si complicano di molto. Occorre avere un sistema automatico che consenta ad un host non configurato di ricevere tutti i parametri necessari per collegarsi alla rete di appartenenza.

Come in altri casi il DHCP non è magicamente disceso tra noi in un alone di luce accompagnato da cori angelici ma è frutto dell'evoluzione di RARP in BOOTP e quindi in DHCP. A chi fosse curioso di scoprire tutti i segreti di questi protocolli consiglio la lettura degli RFC 903 (RARP), RFC 951 (BOOTP) e RFC 2131 (DHCP). Per tutti gli altri: continuate a leggere per avere la spiegazione da 30 secondi.

In breve un host connesso tramite scheda di rete Ethernet ha un indirizzo MAC (Media Access Control) salvato in un chip di memoria sulla scheda stessa. I protocolli summenzionati si appoggiano ad Ethernet e al fatto che ogni rete Ethernet ha un indirizzo di broadcast (FF:FF:FF:FF:FF:FF) a cui tutte le schede connesse rispondono. Un server si mette in ascolto per le richieste di configurazione da parte dei client e fornisce loro la configurazione basandosi sul fatto che ogni frame Ethernet contiene sia l'indirizzo MAC del mittente che quello del destinatario. I dettagli sono squisitamente descritti con dovizia di particolari in ciascuno degli RFC che ho elencato precedentemente.

Il DHCP non si limita ad inviare solo l'indirizzo IP, ma può inviare ad un host anche altre informazioni di configurazione come l'indirizzo del default gateway, l'indirizzo del server DNS (o dei server DNS) ed anche dove reperire il file con il kernel e il ramdisk di avvio per il boot da rete tramite TFPT. Oltre a questo il DHCP può essere esteso per fornire altre informazioni di configurazione agli host.

Un'altra cosa che può fare un server DHCP è sfruttare la sua conoscenza degli host connessi per aggiornare dinamicamente un server DNS sulle associazioni tra i nomi degli host e gli indirizzi IP che ha assegnato loro. Come potete immaginare una semplice ricerca per "DHCP DNS update" produrrà una nutrita serie di HOWTO e tutorial in merito.

Quello su cui voglio farvi riflettere adesso è una piccola ed inquietante considerazione: immaginate di essere in un luogo pubblico con una rete WiFi aperta (non criptata) e che qualcuno abbia avviato un server DHCP che indichi agli host che si connettono il suo PC come gateway. Se la sua risposta arriverà PRIMA di quella del DHCP ufficiale sarà presa per buona e la configurazione ricevuta sarà applicata. Costui sarà in grado di intercettare il traffico di quegli host e potrà bloccare loro l'accesso a certi siti e/o intercettare le credenziali con cui si collegano ad altri siti.

Questo genere di attacco informatico si chiama "Man In The Middle" (Uomo Nel Mezzo, abbreviato con MITM) ed è ESTREMAMENTE pericoloso e molto difficile da individuare. Sappiate inoltre che è ILLEGALE attuare un simile attacco e che non mi assumo NESSUNA responsabilità qualora decidiate di infrangere la Legge. Tutto quello che ho scritto in questo articolo è da intendersi come pura speculazione teorica ad uso didattico. Quello che decidete di fare con queste informazioni è affar vostro.

E dopo essermi parato il fondoschiena vi saluto e vi rimando al sesto ed ultimo articolo di questa serie.

giovedì 9 gennaio 2014

Sette domande per domarli: Di Pierro, Farolfi, Gallizia

Oggi vogliamo un po’ farvi conoscere quali menti contorte partoriscono gli articoli che finiscono poi su questo blog. Le prime cavie per questo esperimento sono Federico Di Pierro (che su questi lidi ha scritto di smanettamenti vari e discusso dell’inutilità di alcune distribuzioni), Fanfurlio Farolfi (il nostro uomo-bash dal nome più reale che mai) e Gianfranco Gallizia (noto per riportare su queste pagine digitali le sue esperienze con BSD e che presto ci istruirà e delizierà con articoli sui sistemi UNIX). Come consuetudine abbiamo messo a disposizione l'intervista anche in plaintext, la potete trovare qui.

Sette domande per conoscerli, sette domande per stimarli,
sette domande per capirli e nel buio poi trollarli.

Ok, passiamo subito alle tre cavie scelte per questo esperimento e iniziamo con le domande. Qualche cosa da dichiarare prima di partire?

Federico: Ieri mi si è brasato l’hard disk del portatile…WHY ME?
Gianfranco: Non ho nulla da dichiarare se non questo: “Non mi prenderete vivo!”
Fanfurlio: Ho spostato /bin, ma non ricordo dove, e ora?


Fatevi inquadrare un pochino: quanti anni avete? Che lavoro fate? Che sistema operativo state usando attualmente?

Federico: Ho 21 anni, a breve 22. Sono un laureando in ingegneria informatica al Politecnico di Milano, spero di potermi dichiarare laureato non troppo in là! Al momento (momento che dura 2 anni e più) utilizzo Arch Linux e non penso che mi muoverò mai da questo piccolo paradiso di sistema operativo :)

Gianfranco: Ho 30 anni (veeecchio) faccio il Sysadmin (ovvero quando un mio collega ha un problema con un computer è a me che si rivolge) e al momento uso una piccola collezione di Sistemi Operativi sia a casa che al lavoro: Debian GNU/Linux, OpenBSD, FreeBSD e Windows nelle varianti XP (lo so) e Seven (niente 8 per ora).

Fanfurlio: Ho 31 anni, Sono un programmatore / system administrator, e in questo momento sto scrivendo da una workstation su cui trovano posto Arch Linux e FreeBSD, collegata tramite synergy ad altre due workstation, una con Fedora 19 (presto 20) e una con Windows 7.


L’avvicinamento al mondo dell’informatica come è avvenuto? Anche voi, come molti, partendo dai videogiochi oppure già come enfant prodige a programmare il microonde di mamma?

Federico: Direi... come molti partendo dai videogiochi, ma ho sempre avuto la passione di smanettare un po’ su quel maledetto regedit ad esempio, per ottimizzare l’avvio e le performance generali (da Win 2000ME a Windows 7)

Gianfranco: A sette anni vidi il mio primo computer: un Amstrad CPC 464 (cercatelo col vostro motore di ricerca preferito se osate) e convinsi i miei genitori a comprarlo. A 9 anni ero stanco di aspettare 10 minuti perché il lettore di cassette caricasse un gioco e cominciai a leggere il manuale (ero un bambino strano) ed imparai il BASIC. Il resto è una lunga discesa nell’Abisso...

Fanfurlio: Avevo sei-sette anni quando mio padre portò a casa il mio primo PC: un Olivetti Prodest PC-128, da lì in poi è stata una caduta libera, ho imparato prima a “rubare” il controllo del computer ai miei genitori, poi a crearmi i miei giochi (visto che gli amici col nintendino avevano tutti giochi più belli, e li volevo anche io).


Tutti gli informatici, a un certo punto della loro vita, si scontrano con Windows. Per voi è stato un’incontro piacevole o un’odio a prima vista?

Federico: Piacevole, perché all’epoca non conoscevo ancora il mondo Linux. Ma il vero scontro l’ho avuto più tardi, quando ho aperto la mia mente al pinguino tanto amato. Gloria, gloria, gloria all’ Ipnopinguino.

Gianfranco: Il mio primo incontro con Windows fu con la versione 3.1. Venendo dal mondo testuale dell’interprete BASIC del CPC 464 fu una rivelazione. L’odio è arrivato in seguito: quando fui costretto a far funzionare i computer degli altri perché “tu ne capisci”.

Fanfurlio: Mi scoccia un po’ copiare Gianfranco, ma come dice lui :P
Aggiungo soltanto che il primo impatto io purtroppo l’ho avuto con windows 3.11, già pronto per la rete, e per tutti i problemi che comportava poi.


L’avvicinamento al FOSS: come avete conosciuto questo mondo? Come mai siete ancora immersi in esso?

Federico: Devo ringraziare un amico di famiglia che mi passò una live di Ubuntu 6.06, Compiz che me ne fece innamorare (ahimè!) e un altro mio caro amico che mi spinse a installarlo. Se si è un minimo curiosi, non si potrà mai più lasciare questo mondo... oltre al fatto che rientra nelle mie passioni e nei miei studi in qualche modo!

Gianfranco: è stato un mix di curiosità (“vediamo cos’ha da offrire”) e di disillusione verso i Sistemi Operativi di Redmond (Windows 95 e 98 facevano pena). La mia prima esperienza con SuSE fu abbastanza traumatica (e credo che il trauma dovuto a YaST oramai sia permanente), in seguito passai a Red Hat 7.1 e quindi a Debian che non ho più abbandonato.

Fanfurlio: Colpa in parte di una rivista, attualmente non ricordo quale, che mi fece “provare” Mandrake 6. Certo, ero già smanettone, e formattare il pc della famiglia non fu un problema (finché non se ne accorsero i miei genitori), e iniziando a mettere le mani “sotto il cofano” per far funzionare le mille cavolatine che a quei tempi non erano automatiche, mi ha fatto innamorare di Linux, poi da quello a passare al lato Open Source, il passo è breve, se non avessi avuto la possibilità di leggere il codice di alcuni programmi, non sarei mai riuscito a far funzionare il mio modem (non era una operazione banale all’epoca), e probabilmente non avrei imparato cosa significhi avere a disposizione il codice del software che si sta usando.


Il Free e Open Source Software sta innegabilmente crescendo e si sta diffondendo sempre più anche tra utenti meno “smanettoni”. Pensate che sia una cosa positiva o che a lungo andare si perderà la motivazione principale (e l’aspetto etico) per cui il FOSS è nato?

Federico: Se l’Open Source amplierà il proprio pubblico, sarà senz’altro un bene. Insieme possiamo sconfiggere Apple e Microsoft, due enormi bug. Certo, è un peccato vedere uno strumento così potente e versatile come un sistema Open Source, nelle mani poco curiose di persone disinteressate…

Gianfranco: Per quanto mi piaccia crogiolarmi nell’idea di appartenere ad un’elite di tecnocrati (debolezze umane) sono contento che GNU/Linux sia uscito dalle cantine ed abbia dimostrato che l’apertura premia. Tanto che adesso si sta formando un movimento simile a quello del Software Libero nei confronti dell’hardware (che tutt’ora è una selva di brevetti e di Non Disclosure Agreements). I lati negativi ci sono, le orde di niubbi che non leggono il manuale ne sono un esempio lampante, però in definitiva l’affermazione dell’idea che si possa lavorare assieme e guadagnarci tutti invece che scontrarsi gli uni contro gli altri per il predominio è sicuramente positiva.

Fanfurlio: Potrò sembrare un vecchio nazista, ma sono convinto che la diffusione del FOSS non porti granché “indietro”. Mi spiego: l’utilizzo di software FOSS da parte di utenti “non smanettoni” non porta nulla al software, o al codice, poiché quel tipo di utenti non fa altro che rendersi conto delle limitazioni del “programma nuovo” e lamentarsi che “non è come quello vecchio (e proprietario)”, non lo fa perché non è in grado di farlo, me ne rendo conto, ma di fatto non c’è altro che astio.
L’utente “medio” non ha bisogno di sapere come funziona il programma, vuole che gli si dica cosa “pigiare” per ottenere il risultato che gli interessa, e basta, questo non restituisce nulla al software che usa. Poi, non dico che sia un male che la filosofia FOSS si diffonda, ma non è grazie agli “utenti” che si diffonde la filosofia, è solo grazie agli smanettoni.
Non sono smanettoni solo quelli che sanno programmare, sono smanettoni anche quelli che si mettono a provare configurazioni diverse, a riportare bugs, a cercare di capire come mai il software non sta funzionando come dovrebbe, a LORO si deve l’inerzia del movimento FOSS.


A proposito di crescita, quali sono i progetti FOSS che più vi stanno a cuore e che vorreste vedere crescere molto in questo 2014? Perché?

Federico: Sembrerò scemo, ma spero vivamente nella crescita dei 4 principali DE, Gnome, KDE, XFCE e Enlightenment (sì, so che enlightenment è solo il wm!), perché ce n’è bisogno. Conto sulla morte di X e Upstart, e desidero l’ascesa di systemd, Wayland e kdbus nel kernel! :) 
Niente di personale...ragionevolezza direi. Tutto ciò che è vecchio e obsoleto deve scomparire. Tutto ciò che è nuovo e tecnicamente migliore, deve ascendere. Siamo Open Source, corriamo al doppio della velocità degli altri sistemi closed, ricordiamocene!

Gianfranco: Spero fortemente che i Sistemi Operativi e le Architetture alternative si affermino maggiormente contro lo strapotere di GNU/Linux, intel e ARM. La fine degli anni ‘90 è stata un’epoca d’oro per la concorrenza sia hardware che software. Il mondo che ne è uscito però è drammaticamente piatto…

Fanfurlio: Sinceramente, non saprei.
I software FOSS che uso sono già più che maturi per la mia necessità, se proprio volessi veder crescere qualcosa, è il supporto hardware per Linux e le varie piattaforme diverse da Windows.


Si è appena materializzato di fronte a voi il genio del FLOSS: avete un desiderio a testa da poter esprimere per migliorare la situazione attuale. Che cosa chiedete?

Federico: Xfce 4.12, basato sulle gtk3,  e col supporto a Wayland?? Magari entro qualche mese :D
Ah, e driver video open migliori!

Gianfranco: il rilascio di Haiku OS R1 su una nuova generazione di processori PowerPC a basso consumo con accellerazione hardware opzionale mediante FPGA.

Fanfurlio: La cancellazione dall’esistenza e dalla mente delle persone tutto quello che riguarda la protezione della proprietà intellettuale, soprattutto quella legata ad algoritmi e processi matematici.


Chiudiamo con un po’ di nostalgia (anche perché le sette domande le ho già fatte): fatevi una domanda e datevi una risposta.

Federico1: Perché diavolo hai eliminato definitavemente windows dal pc di casa? Non puoi più giocare nemmeno a Call of Duty!
Federico2: Suca Microsoft!

Gianfranco1: Perché ti ostini ad usare quella roba? Non sarai mica un hipster?
Gianfranco2: Perché mi offre un punto di vista diverso su ciò che mi circonda, perché ha dei punti di forza che pochi sanno vedere e perché in fondo quello che faccio con il MIO computer è solo affar MIO. Però ammetto che mi sto hipsterizzando...

Fanfurlio1: Una domanda sola?
Fanfurlio2: Sì, una.