Feeds:
Posts
Comments

http://www.spamhaus.org/news.lasso?article=671

Pharma Wars: Purchasing Protection.

Dopo essermi occupato –oramai parecchio tempo fa– di come configurare BIND per fungere da resolver validando DNSSEC, mi prendo finalmente il tempo per buttare giù le 4 righe relative a come dotare la vostra zona di DNSSEC.

Per questa ricetta abbiamo bisogno di:

  • un dominio appartenente ad un TLD già dotato di zona firmata e che accetti la submission dei record DS per i domini erogati (org, net, com, biz vanno bene)
  • un registrar che vi dia la possibilità di sottomettere il vostro record DS affinché vada nella zona del TLD
  • un nameserver sotto il vostro controllo, che esegua preferibilmente BIND 9.7 o superiore (per lo/gli slave il requisito è semplicemente l’esecuzione di un DNS con supporto ai tipi di record necessari a DNSSEC)
  • un tab di un browser (oltre a quello dove è aperta questa pagina) puntato sulla RFC4034, in modo da poter consultare alla bisogna le definizioni relative ai vari Resource Records utilizzati da DNSSEC

Metto le mani avanti su un fronte: DNSSEC non è banale e farete quasi certamente una lunga sequela di errori nella gestione della vostra prima zona firmata. Questi errori potrebbero rendere la vostra zona non valida e il vostro dominio irraggiungibile per chi esegua validazione DNSSEC. Ergo, evitate di fare esperimenti con un dominio in produzione, e procuratevi invece un dominio con cui spippolare in tranquillità…

Supponendo che il dominio lo abbiate già registrato con il registrar di cui sopra (se lo avevate già registrato altrove, richiedete il trasferimento ad altro registrar o prendete un nuovo dominio), procediamo dapprima al configurare il nostro DNS master, definendo la nostra zona in modo simile a questo:

zone "mydomain.tld" {
        type master;
        key-directory "/etc/bind/dnssec-keys";
        update-policy local;
        auto-dnssec maintain;
        file "zones/mydomain.tld";
        allow-query { any; };
        notify yes;
        allow-transfer {
                "slave1";
                "slave2";
        };
};

Se avete perplessità sulle definizioni qui utilizzate, riferitevi ovviamente alla documentazione di BIND.

Rispetto ad una configurazione “tradizionale“, comunque, avrete quantomeno notato un paio di definizioni in più:

  • key-directory: poichè lasceremo che della firma della zona si occupi direttamente BIND, dobbiamo indicargli dove stanno le chiavi private necessarie
  • auto-dnssec: come appena detto, lasceremo che il signing della zona sia eseguito da BIND. Con la direttiva “maintain”, BIND sarà in grado di occuparsi anche del rollover delle chiavi quando necessario (questo aspetto lo vedremo in altra sede…)

A questo punto procediamo alla creazione della zona dns iniziale, depositandola nel file sopra definito, come faremmo con qualsiasi zona DNS. Poiché però BIND dovrà occuparsi anche della manipolazione dei contenuti della zona stessa dobbiamo garantire che sia il file di zona che la directory ove esso è depositato siano scrivibili da parte di BIND. Diamo un bel “rndc reload” e verifichiamo dai log di non aver commesso errori.

Il passo successivo consiste nel generare le chiavi per la nostra zona. Saprete certamente (se non lo sapete, consiglio di cercare un po’ di paper e iniziare a studiare…) che per ciascuna zona DNSSEC prevede (in realtà consiglia) l’uso di due chiavi distinte: la KSK e la ZSK, con la prima che viene utilizzata per firmare la seconda e la seconda che viene usata per firmare i dati di zona (non a caso si chiamano Key-Signing-Key e Zone-Signing-Key…).

Procediamo dapprima con la creazione della KSK, attraverso il comando:

dnssec-keygen -f KSK -K /etc/bind/dnssec-keys mydomain.tld

La generazione della chiave richiederà un certo tempo, dato che per la KSK il default si attesta a 2048bit: andate tranquillamente a bervi un caffè. Se il vostro DNS poi non è particolarmente dotato in quanto a CPU, ci sta anche una pizza…

Quando il comando avrà terminato, comunque, troverete nella directory indicata una coppia di file, contenenti rispettivamente la chiave pubblica e privata:

-rw-r--r-- 1 skull skull  607 Aug 17 18:45 Kmydomain.tld.+005+62878.key
-rw------- 1 skull skull 1774 Aug 17 18:45 Kmydomain.tld.+005+62878.private

Attenzione al fatto che, avendo delegato la firma della nostra zona a BIND, questi avrà necessità di accedere in lettura a entrambi i file, quindi impostate i permessi di conseguenza.

Ora che abbiamo la KSK, per prima cosa la utilizziamo per ottenere i record DS (in sostanza l’hash della KSK) che andranno poi forniti al registrar affinché vengano pubblicati dalla zona del vostro TLD, come vedremo poi:

dnssec-dsfromkey -2 Kmydomain.tld.+005+62878.key >Kmydomain.tld.+005+62878.ds

Fatto ciò, provvediamo a generare anche la ZSK:

dnssec-keygen -K /etc/bind/dnssec-keys mydomain.tld

Ora abbiamo tutto il necessario; istruiamo quindi BIND affinché provveda a firmare i dati della nostra zona:

rndc sign mydomain.tld

Verifichiamo i log per verificare se tutto è andato come deve:

Aug 17 12:14:23 ns named[18394]: received control channel command 'sign mydomain.tld'
Aug 17 12:14:23 ns named[18394]: zone mydomain.tld/IN: reconfiguring zone keys
Aug 17 12:14:24 ns named[18394]: zone mydomain.tld/IN: next key event: 18-Aug-2011 00:14:24.075
Aug 17 12:14:24 ns named[18394]: zone mydomain.tld/IN: sending notifies (serial 2011081702)

Se non vi sono errori e vedete una cosa come quella qui sopra, la parte di competenza di BIND è andata come deve. Un zone transfer (“dig axfr mydomain.tld @<master>“) eseguito da uno degli slave vi confermerà che ora la zona presenta tutti i simpatici orpelli tipici di una zona firmata…

L’ultimo passo è far pubblicare il record DS relativo alla vostra nuova e fiammante KSK.

Il file .ds che abbiamo generato con il comando “dnssec-dsfromkey” contiene esattamente il record che andrà pubblicato dal TLD:

mydomain.tld. IN DS 62878 5 2 FB559ED949D1D86AB530C615DE0C944995C01A852AF77919A1891289 35857900

Esso è composto da 4 campi:

  • il KeyTag relativo alla KSK (sostanzialmente l’ID della KSK cui il DS si riferisce: se cambiate KSK, cambia l’ID e -ovviamente- il digest)
  • l’algoritmo utilizzato per le chiavi (“5” indica l’accoppiata RSA/SHA1)
  • il tipo di digest della KSK indicato dal record DS stesso (“2” significa che il digest è di tipo SHA256)
  • il digest della KSK stessa, eventualmente spezzettato alla bisogna per cacciarlo in zona

I passi per far pubblicare il record al TLD dipendono strettamente dal registrar utilizzato, sicché non posso essere troppo preciso al riguardo.

Nel mio caso ho usato come registrar GKG, che fornisce una comoda interfaccia REST per gestire le operazioni sui record DS.

Nel mio caso, quindi, tutto si è limitato alla creazione del record JSON dentro ad un file che ho denominato “DS”…

{
"digest":"FB559ED949D1D86AB530C615DE0C944995C01A852AF77919A189128935857900",
"digestType":"2",
"algorithm":"5",
"keyTag":"62878",
"maxSigLife":"3456000"
}

…per poi procedere ad inviare la richiesta al registrar attraverso una unica riga di curl, mandandogli via POST tale file:

curl -i --basic -u <myuser>:<mypassword> \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
--data-binary @DS https://www.gkg.net/ws/domain/mydomain.tld/ds

 

Oplà. Il vostro dominio (firmato) è servito.

Per verificare che tutte le operazioni siano andate a buon fine e che il vostro dominio ora validi correttamente, la maniera più banale è quella di sottometterlo all’analisi automatizzata di http://dnscheck.iis.se/ oppure di http://dnsviz.net/ se desiderate “vedere” tutta la (lunga) catena di chiavi che valida la vostra zona.

Ora i più svegli domanderanno: “sì, ma per inserire in zona nuovi record?”. Il modo in cui abbiamo detto a BIND di gestire la zona fa sì che sia sufficiente utilizzare nsupdate(1) e tutti i record aggiunti saranno automaticamente firmati…

Oramai son rientrato da oltre un mese dopo la sortita a San Francisco, ed è da un po’ che ho ‘sto post in canna…

Ma allora, San Francisco com’è? (E’ ovviamente la domanda più frequente che ho ricevuto nell’ultimo mese…)

La risposta è articolata, ma la versione breve è: “Molto diversa da quel che mi aspettavo”.

Argomentiamo, partendo dal render noto (a chi già non ne fosse edotto) come io sia cresciuto letteralmente in mezzo agli Americani: ricordo periodi in cui su 6 vicini di casa 5 eran famiglie americane, effetto collaterale di vivere a meno di 5km da una base militare USAF come Aviano (e al riguardo: no, non ho conosciuto solo militari; anzi, gran parte dei miei conoscenti era personale civile). Sicché, potrei dire: “Gli Americani li conosco”.

Tuttavia San Francisco (e, credo, buona parte della California) si discosta davvero tanto dagli USA come li immaginavo basandomi sulla mia esperienza. Una città molto più “europea” di quanto si possa pensare; ma anche -mi dicono- un caso particolare.

Ma partiamo dall’inizio….

Il viaggio.

Per mera pigrizia ho seguito la via più breve in termini di ore tra quelle che avevo a disposizione, nonostante prevedesse uno scalo in più rispetto ad altri itinerari. Ho infatti optato per un tragitto con due scali, partendo di prima mattina da Trieste in direzione Roma, per poi prendere il volo Roma – Los Angeles e di qui verso San Francisco. Ecco, non fatelo: cercate -se possibile- un aereo che vi porti direttamente nella città di destinazione, facendo tutti gli scali necessari fuori dagli USA.

Il primo scalo è stato -come da programma- del tutto indolore: sceso da un aereo, cambiato terminal (con controllo passaporti nel mezzo) e imbarcato per Los Angeles senza alcuna difficoltà od intoppo, e con un ampio margine di sicurezza. Dopo di ciò, son seguite 11 ore e mezzo di volo del tutto privo di eventi, riguardo al quale la cosa più anomala è stato il fatto di atterrare a LA 3 ore e mezzo dopo l’orario di partenza: è una esperienza che lascia l’impressione di aver vissuto un giorno in più del resto del mondo… :-O

Una volta a LA, comunque, sono iniziati i contrattempi. La procedura per chi tocca il suolo USA infatti prevede i seguenti passi:

  • 1 ora e 1/4 di coda con il passaporto in mano
  • rispondere ad una sfilza di domande da parte dell’ufficiale DHS (Che lavoro fai? Cosa vieni a fare in USA? E’ la tua prima volta? Quanto tempo ti fermi?)
  • andare a recuperare la valigia dal carosello
  • valigia alla mano, procedere verso il successivo ufficiale per la seguente sequela di domande (Porti cibo o bevande? Piante o animali? Hai denaro contante? Beni di lusso?)

A questo punto, se non vi hanno preso in parte per aprirvi i bagagli e procedere a verifiche manuali, e se non vi han spedito a Guantanamo, reimbarcate il vostro bagaglio e andate a prendere l’aereo successivo.

Il mio problema è stato che ‘sta trafila ha preso un po’ troppo rispetto a quanto preventivato e ho rischiato seriamente di essere lasciato a piedi dal volo successivo: son riuscito a decollare solamente perchè il volo era in ritardo e grazie ai sotterfugi della simpatica signorina della United che è riuscita a farmi inserire in lista anche se il sistema informatico del check-in stava già considerando l’imbarco come chiuso.

Alla fine, comunque, sono riuscito ad atterrare sano e salvo (e con bagagli al seguito) a San Francisco. Di qui una mezz’oretta di metropolitana mi ha portato alla downtown, a due isolati dall’hotel. Uscito dalla stazione della BART di Powell Street (dove, per inciso, c’è l’AppleStore di SF) la prima sensazione che mi ha accolto è stata… una inconfondibile ventata di marijuana e un predicatore con tanto di cartello “Jesus loves you”… 😛

Nonostante questo primo impatto un po’ stereotipato (il predicatore… come nei film, uguale…) San Francisco è -come detto- davvero molto europea rispetto al resto degli USA, come m’han confermato anche gli autoctoni. Ha un clima mite ma non molto soleggiato tanto che, dopo aver lasciato la calura estiva (>30°C) di casa, non ho indossato una maglietta a maniche corte fino al rientro in Italia…

Il tempo di arrivare in albergo e cambiarmi e son stato portato a cena… in un locale che fa cucina italiana… :-O

E -cosa davvero inattesa- ho mangiato decisamente bene: dei bucatini con granchio e carciofi che non avrebbero affatto sfigurato in un buon ristorante da noi… Se proprio vogliamo, ecco: lasciate perdere la pizza 😀

E, dopo la cena, serata in wine-bar… Un toccasana per le mie 9 ore di jet-lag… 😀

Senza dilungarmi in una descrizione eccessivamente dettagliata di cosa ho fatto per trascorrere la settimana nel tempo lasciato libero dalle conferenze, qualche rapido commento sulle mie impressioni riguardo a questa zona della California:

  • amano decisamente il buon cibo, quasi quanto in Italia
  • la produzione locale di vini rossi ha una qualità decisamente alta; la pecca è che a parità di qualità il costo è triplo che da noi…
  • il centro di San Francisco ha un traffico inferiore a quello di Monfalcone :-O
  • almeno per la parte centrale, San Francisco è decisamente più piccola di quanto mi sarei aspettato: dalla downtown ho attraversato a piedi Chinatown e il quartiere italiano fino ai moli, camminato lungo l’Embarcadero e tornato all’albergo (all’incrocio tra Market Street e la 3a strada) in circa un’ora di camminata
  • è stato divertente prendere atto del fatto che una istituzione dell’Italianità come il Caffè Trieste ha più o meno l’aspetto del baretto da vecchi alcolisti che ho dietro casa
  • ci siam fatti a piedi Buena Vista Park e tutto Golden Gate Park fino all’oceano. Non finisce più: tra i due avremo fatto almeno 10 km a piedi (solo GG Park è lungo oltre 7 km…)
  • benché la cosa sia da noi quasi oggetto di barzelletta, le assurde indicazioni anti-denuncia esistono davvero: questa era nel negozio dove ho acquistato un paio di Reebok che in Italia non ero stato in grado di trovare…
  • per riprendersi da 9 ore di jet-lag al mio fisico servono 3 giorni… 😦

Cose che avrei voluto fare e che mi riservo per la prossima volta:

  • una visita ad Alcatraz
  • un giro all’acquario
  • attraversare il Golden Gate in bicicletta (mi dicono sia da non perdere)

Prossimo appuntamento con San Francisco, se tutto va bene, a febbraio.

Mi dicono che il clima non sia poi molto diverso da quello trovato a giugno…

Per chi fosse interessato, il reportage fotografico di questa prima uscita oltreoceano è qui.

A Guide to SpyEye C&C Messages.

%d bloggers like this: