English version available here → [EN]
Nella prima parte, il blackout sembrava il colpevole perfetto. Il database locale rispondeva, BIGDB sembrava vivo, la trust esisteva. Eppure il gestionale moriva solo quando doveva attraversare il confine verso la casa madre. È da lì che ripartiamo.
Di nuovo al confine
Quando Mateo rientrò nell’ufficio dietro la reception, aveva la faccia di chi aveva appena vinto una piccola battaglia ma intorno vedeva solo macerie.
“WiFi?” chiese Sid, senza staccare gli occhi dallo schema.
“Access point riavviati, captive portal sistemato, ospiti temporaneamente placati,” rispose Mateo. “Credo che almeno per dieci minuti nessuno minaccerà recensioni negative.”
Sid annuì, ma non sorrise.
La penna era ancora lì, sulla linea tracciata tra i due domini.
Resort da una parte. Casa madre dall’altra.
In mezzo, il paradosso di quella parola apparentemente rassicurante: trust.
Ci si poteva veramente fidare di quella linea?
“Prima che il direttore torni con un’altra emergenza,” disse Sid, “ripartiamo da qui: dal confine.”
Mateo si sedette.
“Che cosa vuoi vedere?”
“Fammi una domanda stupida,” disse Sid.
Mateo lo guardò.
“Da questa parte è cambiato qualcosa di recente?”
Mateo quasi rise.
“Qui? Sid, questi server non li tocca nessuno da così tanto tempo che quando muovi il mouse si alza la polvere.”
“Lo immaginavo,” rispose Sid. “Ed è proprio questo che mi preoccupa.”
Lasciò passare un secondo, poi indicò il lato dello schema dove Mateo aveva scritto casa madre.
“Sappiamo se è cambiato qualcosa dall’altra parte?”
Mateo non rispose subito. Guardò il telefono, poi il portatile, poi di nuovo lo schema.
“Posso chiedere,” disse. “Ma ieri notte, quando li ho sentiti, mi hanno detto che da loro era tutto verde.”
“Tutto verde è una frase pericolosa,” rispose Sid. “Di solito significa solo che qualcuno ha guardato le luci del cruscotto, non il motore.”
“C’è un supporto h24?” chiese Sid. “Se sì, chiedi se è cambiato qualcosa.”
Mateo annuì e aprì una chat con il team centrale. La prima risposta arrivò dopo pochi minuti, secca, rassicurante, fin troppo semplice.
BIGDB è online. Nessun incidente aperto. Monitoraggio ok.
Sid lesse il messaggio e alzò gli occhi al cielo come per cercare di comunicare con qualcuno.
“Non gli abbiamo chiesto se BIGDB è vivo. Gli abbiamo chiesto se ieri è cambiato qualcosa.”
Sotto il cofano
Mateo stava già digitando la controreplica, ma Sid lo fermò con un gesto. “Aspetta. Prima di metterci a discutere con un cruscotto che dice tutto verde, andiamo noi a vedere sotto il cofano. Se il problema è sulla linea di confine, ci devono essere tracce.”
“Che tipo di tracce?” chiese Mateo.
“Pacchetti, comunicazioni. Se il gestionale prova a parlare con la casa madre e qualcuno gli risponde un ko, quella risposta passa dalla rete. E quel dettaglio di rete non lo vedono nel cruscotto.”
Chiese a Mateo di installare un analizzatore di rete direttamente sul server del gestionale. Non ce n’era nessuno, ovviamente. Su quelle macchine non si installava niente da anni.
“Wireshark?” chiese Mateo.
“Wireshark, Network Monitor, quello che riesci a far partire senza riavviare mezzo resort, avete già abbastanza noie. Basta che catturi.”
Mateo avviò il download del pacchetto, che impiegò più del previsto.
Dalla porta socchiusa arrivava il brusio della hall, trolley, voci, e il campanello della reception che spezzava un silenzio che in quella stanza si era fatto quasi assoluto.
Poi lo installò e finalmente avviò la cattura.
“Adesso riproduciamo il problema,” disse Sid. “Apri le prenotazioni. Quelle che arrivano da BIGDB.”
Mateo cliccò. Rotellina. Attesa. Errore. Come previsto.
“Fermati qui. Abbiamo tutto quello che ci serve,” disse Sid.
Mateo interruppe la cattura. Sullo schermo restavano migliaia di righe, e pensò, “sembra la schermata di Matrix, come facciamo a trovare l’informazione giusta in questo caos?”
“Prima regola,” disse Sid. “Non si filtra per trovare quello che cerchi. Prima si guarda con chi ha parlato la macchina, e solo dopo si decide cosa è inutile.”
Non scrisse nessun filtro. Aprì invece l’elenco delle conversazioni, quello che riassume ogni interlocutore con le sue porte, i suoi pacchetti e le sue sequenze, e lo ordinò per volume di traffico.
In cima, con un margine imbarazzante su tutto il resto, c’era la sessione di desktop remoto con cui Mateo era collegato a quel server.
“Stiamo catturando anche noi stessi,” disse Sid, indicandola. “Succede sempre. Ogni movimento sullo schermo diventa traffico, e sommerge tutto il resto.”
Con due righe di filtro tolse di mezzo la propria sessione remota, poi il backup e l’antivirus, che generavano altrettanto traffico inutile. Quello che restava era poco, ordinato e finalmente interessante.
“Adesso non guardiamo il contenuto,” disse Sid. “Guardiamo solo con chi parla e su quali porte. Il contenuto arriva dopo.”
Scorse la colonna dei protocolli con la calma di chi sa che il pattern, se c’è, si ripete. E si ripeteva. Ogni volta che Mateo apriva le prenotazioni, la sequenza era sempre la stessa. Una risoluzione di nome, veloce e senza problemi. Poi la connessione verso il server di BIGDB che si apriva regolarmente, ma lì, stranamente, tutto filava liscio. E subito dopo, prima ancora che il gestionale chiedesse una sola riga di prenotazione, uno scambio verso una porta che Sid conosceva a memoria.
“Ottantotto,” disse.
Mateo si sporse verso lo schermo. “Ottantotto punta a BIGDB?”
“No. Su quella porta BIGDB non c’entra niente, lui ascolta altrove. Sull’ottantotto rispondono i Domain Controller. È lì che risponde Kerberos.”
Sid indicò la sequenza dall’inizio. “Prima di leggere una prenotazione, il vostro server va a chiedere il permesso di farlo. E lo chiede lì, non al database.”
Poi indicò la fine della sequenza. Dopo quello scambio, la connessione verso BIGDB si chiudeva. Senza essere riusciti a chiedere qualunque cosa al database vero e proprio.
Mateo restò a fissare lo schermo. “Aspetta. Quindi BIGDB aveva risposto.”
“BIGDB ha risposto benissimo. Ha fatto quello per cui è stato istruito, per dodici ore, mentre voi lo accusavate di essere irraggiungibile. Però, il vostro server non è mai arrivato a chiedergli niente di concreto. Si è fermato alla porta di ingresso, e nessuno gli ha aperto.”
Mateo si passò le mani sulla faccia. Sul tavolo restava il quaderno con dodici ore di ipotesi cancellate, e la sensazione di aver interrogato il testimone sbagliato.
“E c’è un’altra cosa,” aggiunse Sid, seguendo con il dito la colonna degli indirizzi. “Su quella porta il vostro server parla due volte. Ma non con la stessa macchina.”
Mateo si avvicinò. Il primo indirizzo lo riconobbe subito: era il Domain Controller del resort, quello nell’armadio in fondo al corridoio. Il secondo non lo aveva mai visto; doveva essere della casa madre.
La porta
Sid cambiò filtro. Stavolta ne bastò uno solo, il nome del protocollo. Le poche centinaia di righe si ridussero a qualche decina.
E tutte quelle righe avevano un’unica cosa in comune. Nessuna di loro andava verso BIGDB. In tutta la cattura, verso il database centrale non c’era un solo pacchetto Kerberos. La negoziazione quindi si interrompeva prima di arrivare a BIGDB.
Scorse veloce. La prima richiesta andava al Domain Controller del resort e riceveva risposta senza problemi. Ma quella risposta non era il lasciapassare per BIGDB. Era un referral, in Kerberos si chiama così: un ticket che non apre nessuna porta, dice soltanto “quel servizio non è roba mia, vai a chiederlo a loro”. Quel referral era buono soltanto per presentarsi oltre il confine. La seconda richiesta partiva verso l’altro indirizzo, quello che Mateo non conosceva. Ed era lì, quasi in fondo, che una riga si tingeva di rosso.
KRB-ERROR
error-code: KDC_ERR_ETYPE_NOSUPP (14)
Sid la indicò con la penna. “Questo non è database non raggiungibile. Questo è qualcuno che dice: non posso parlare la tua lingua.”
“Che lingua?” chiese Mateo.
“Crittografia. Il vostro sistema chiede un ticket e dichiara con quali algoritmi sa lavorare. Dall’altra parte gli rispondono che quello che propone non è disponibile.”
Mateo restò a fissare quella riga rossa. Dodici ore di errore generico si erano appena ridotte a un messaggio preciso. Sollievo e fastidio, insieme.
Sid scorse ancora qualche riga, poi si fermò. “E qui c’è la seconda cosa strana. Dopo quel no, non succede più niente.”
“E cosa dovrebbe succedere?” chiese Mateo.
“Di solito, quando Kerberos non riesce, Windows non si arrende. Prova a ripiegare su un metodo più vecchio, NTLM. Superato, attaccabile, spesso abusato, ma è lì da decenni per retrocompatibilità. Qui invece non ne trovo traccia. Nemmeno un tentativo. Il gestionale ha ricevuto il no e fine dei giochi.”
“Prima di puntare il dito, però, voglio essere sicuro di dove nasce quel no.”
Sid aprì il registro eventi sul Domain Controller del resort e filtrò gli eventi Kerberos. Quasi nulla. Ticket concessi, referral emessi, nessun errore.
“Qui è tutto pulito, me lo aspettavo ed è coerente con la traccia di rete. Il vostro Domain Controller ha fatto il suo dovere: ha consegnato al gestionale il referral per attraversare il confine, e da lì in poi la faccenda non lo riguardava più. Tutto conferma che il rifiuto non è nato qui.”
“E allora dove?” chiese Mateo.
Sid tornò sul pacchetto rosso e indicò l’indirizzo che aveva risposto con l’errore. Era il secondo, quello che Mateo non aveva riconosciuto. “È lui che ha detto no. Non è un vostro server.”
“È uno dei Domain Controller centrali?” si chiese Mateo.
“Esatto. L’errore vero non vive nei vostri log. Vive nei loro.”
“Ma prima di scrivergli, tracciamo i codici giusti,” disse Sid. “Se gli mando una teoria, mi rispondono con un altro cruscotto verde. Se gli mando dei codici, sono costretti ad andare a guardare.”
I numeri che non tornano
Tornò indietro di una riga, alla richiesta che aveva preceduto il rifiuto, e aprì il dettaglio del pacchetto. Il riquadro in basso si riempì di rami da espandere, uno dentro l’altro, come le scatole cinesi. Sid scese fino in fondo, dove il client dichiarava con quali tipi di cifratura era disposto a lavorare.
C’era un solo numero in quella lista. Ventitré.
“Eccolo il problema,” disse Sid, e per la prima volta da quando era entrato in quell’ufficio sembrava quasi divertito. “Uno solo. Nessuna alternativa. Il vostro sistema si presenta oltre confine dicendo: io so parlare questa lingua, e nessun’altra.”
“E ventitré cosa significherebbe?” chiese Mateo.
“RC4,” rispose Sid. “È il numero che gli standard hanno assegnato a un algoritmo di cifratura nato oltre trent’anni fa. Qui lo vedi scritto in decimale, ventitré. Nei log di Windows lo troverai scritto in esadecimale, 0x17. Stesso codice, due modi di scriverlo.”
Fuori, il vento faceva oscillare una palma. Mateo girò lo schema dal lato bianco e segnò i numeri in colonna, con la calligrafia incerta di chi non dorme da un giorno intero.
Poi tornò sulla riga rossa e indicò il codice dell’errore. Quattordici.
“E questo è il no. Quattordici in decimale, 0xE in esadecimale. È lo stesso numero che dall’altra parte finisce nel campo che Windows chiama Failure Code. La rete e il registro eventi raccontano la stessa cosa, solo con due alfabeti diversi.”
“Quindi sul registro eventi dovrebbero avere questo specifico errore, come lo trovano?” chiese Mateo.
Sid si appoggiò allo schienale. “In realtà è piuttosto semplice. Quando un sistema chiede un ticket per un servizio, Windows scrive sempre lo stesso evento. Ha un numero ben specifico: 4769. Purtroppo, me lo ricordo a memoria, l’ho incrociato troppe volte nella mia carriera.”
“E lo traccia solo il Domain Controller che emette il ticket,” aggiunse. “Ecco perché qui non c’è niente da vedere. Quel rifiuto lo ha scritto una macchina che si trova fuori dal nostro controllo.”
“Quindi adesso abbiamo tre numeri,” disse Mateo.
“Abbiamo tre numeri e una verifica precisa che non si può ignorare,” rispose Sid. “Ed è tutta un’altra faccenda rispetto a chiedere se il database sta bene.”
“Scrivi di nuovo al team centrale. Ma stavolta non chiedere se BIGDB sta bene. Chiederemo una cosa precisa,” Sid corrucciò la fronte e si mise a riordinare tutte le idee.
Mateo scrisse sotto dettatura.
Sui vostri Domain Controller, da stanotte in poi, cercate gli eventi 4769 in Failure con Failure Code 0xE che arrivano dal nostro dominio. Guardate poi gli eventi KDCSVC nel System log. Inoltre, ditemi quali tipi di cifratura risultano configurati sull’oggetto trust verso di noi. Confermate anche se NTLM è consentito per quel servizio.
Mateo esitò con il dito sul tasto di invio. “E se quegli eventi non ci fossero?”
“Allora mi sono sbagliato, torniamo al pacchetto e ricominciamo da capo,” rispose Sid. “Ma la traccia di rete è chiara e non mente. Gli eventi ci sono, dobbiamo solo avere conferma di chi li sta generando. È scritto nei loro log, con i loro numeri, sui loro server.”
Mateo premette invio. Nell’ufficio restò solo il rumore del ventilatore a soffitto.
La risposta arrivò più lenta delle precedenti. E questa volta era differente.
Confermato. Centinaia di 4769 in Failure, code 0xE, tutti dal vostro dominio, tutti a partire da stanotte. Nel dettaglio degli eventi si vede il mismatch: il client propone solo RC4, mentre il KDC accetta solo AES. Sull’oggetto trust verso di voi non risulta abilitato nessun tipo di cifratura AES. E confermo che anche NTLM non è permesso: su quel servizio lo abbiamo disattivato qualche mese fa.
“Ecco perché non ripiega,” disse Sid. “L’ultima via di fuga gliel’hanno chiusa mesi fa, e hanno fatto bene. Ma è anche il motivo per cui il vostro gestionale è morto sul colpo invece di arrangiarsi in silenzio, come fanno tutti i sistemi vecchi quando nessuno li guarda.”
Mateo guardò lo schermo, poi Sid. “Questo conferma la teoria, giusto?”
“Quasi. Adesso possiamo fare la domanda giusta,” rispose Sid, e gli fece scrivere un’ultima riga.
Stanotte avete cambiato qualcosa nella configurazione Kerberos dei Domain Controller centrali?
La risposta, stavolta, non fu rassicurante. Fu onesta.
Sì. Manutenzione programmata sui DC centrali. Patch mensili e hardening Kerberos, con rimozione di RC4. Nessun impatto previsto sui servizi applicativi.
Sid lesse l’ultima riga e fece un mezzo sorriso. “Nessun impatto previsto,” ripeté. “È sempre l’ultima frase prima di ogni disastro.”
Poi prese la penna e cerchiò la linea tra i due domini. “Ecco il confine. Da stanotte la casa madre ha smesso di accettare una vecchia lingua crittografica. Il vostro gestionale conosce solo quella. Finché parla in casa, nessuno lo corregge. Appena prova ad attraversare la trust, viene bloccato.”
“Quindi a questo punto il problema è la trust?” chiese Mateo.
“Il problema non è la trust in sé, è che dalla casa madre hanno chiuso il vecchio algoritmo ma si sono scordati di voi e della vostra trust.”
Incomprensioni
Mateo si picchiettò contro la tempia. “Ok. Allora chiedo alla casa madre di riabilitare la vecchia lingua, RC4, e ripartiamo. Giusto?”
Sid scosse la testa piano, come chi ha già previsto quella proposta.
“Certo che ripartireste. E domani mattina qualcuno alla casa madre si accorgerebbe che il vecchio lucchetto arrugginito che avevano appena buttato è tornato attaccato alla porta. RC4 non l’hanno tolto per capriccio, Mateo. L’hanno tolto perché è debole. Rimetterlo per far ripartire un gestionale è come staccare l’allarme antincendio perché fa troppo rumore.”
“E allora cosa proponi?” disse Mateo.
“Prima di tutto capire dove va messa la toppa,” disse Sid, e ripercorse la sequenza sullo schema. Il referral emesso a casa loro, il confine da attraversare, il ticket per BIGDB mai emesso. Tre passaggi, e il no arrivava sempre al secondo.
“Ed è qui che la maggior parte delle volte si sbaglia mira,” continuò Sid. “Si guarda l’identità che arriva dal resort e si pensa: è colpa di chi bussa. Ma l’utente del resort, dall’altra parte, è come se fosse un’ombra.”
“Nella casa madre esiste solo una rappresentazione locale delle vostre identità, si chiama Foreign Security Principal. Serve a dire chi sei, non contiene le tue chiavi. Toccare le impostazioni lì sopra non produce nessun effetto.”
Dalla hall arrivò un’ondata più alta di voci. Un bambino era scoppiato a piangere perché, correndo, aveva abbattuto la fila di trolley. Mateo alzò lo sguardo per un attimo verso la porta, poi tornò dentro al problema.
“Ok, l’utente che chiama non c’entra nulla. E allora chi?”
“Due cose, in ordine. Il ponte e la destinazione. La trust, e il servizio che possiede BIGDB. Partiamo dal ponte.”
A quel punto non c’era più molto da scoprire sulla trust. C’era da decidere cosa farne. La diagnosi era già lì, nella cattura e nei log della casa madre: il referral del resort viaggiava ancora con una chiave vecchia, mentre dall’altra parte quella lingua era stata chiusa. Per sicurezza, Sid fece chiedere ai colleghi della casa madre di aprire anche la configurazione della trust, non per cercare un nuovo colpevole, ma per verificare l’unica cosa che ormai contava: da quel lato, la relazione verso il resort non dichiarava il supporto AES. La conferma arrivò in pochi minuti. Non era una nuova pista. Era il timbro sull’ipotesi.
“Ecco il primo pezzo,” disse Sid. “Il ponte era il punto rimasto indietro. Non BIGDB, non il database locale, non la rete. La trust.”
“E la destinazione?” chiese Mateo.
“Giusto, prima di chiudere il cerchio, controlliamo anche la destinazione,” disse Sid. “Non il database in sé. In Kerberos ogni servizio ha un nome tecnico con cui viene riconosciuto. Si chiama Service Principal Name, o SPN. È l’etichetta che dice al Domain Controller per quale account deve preparare il ticket. E ogni SPN è associato a un solo account.”
Mateo annuì lentamente. “Quindi dobbiamo capire quale account possiede lo SPN di BIGDB.”
“Esatto. Non per cercare un nuovo colpevole. Per togliere l’ultimo dubbio dal tavolo.”
Bastarono una telefonata e pochi minuti. Dietro il nome altisonante di BIGDB c’era un account di servizio, gestito dalla casa madre e, come previsto, già incluso nel percorso di hardening: quell’account parlava solo AES.
Mateo guardò Sid. “Quindi BIGDB è davvero fuori dal caso.”
“Fuori dal caso,” confermò Sid. “Il problema non era la destinazione. Era il modo in cui il resort cercava di arrivarci.”
Mateo prese fiato. “Ok. Abbiamo capito dov’è il problema. Ma adesso come lo sistemiamo senza rimettere il lucchetto arrugginito?”
“Insegnando la lingua nuova al ponte, invece di costringere la casa madre a riparlare quella vecchia,” rispose Sid.
“Il ponte, cioè la trust, va aggiornato in modo che sappia gestire anche AES. È un intervento che si fa sulla relazione tra i due domini, dai due lati, e richiede di rigenerare le chiavi con cui il ponte firma il passaggio. Attenzione però: non è un semplice clic, va coordinato in maniera precisa con i colleghi della casa madre. Ma è la soluzione migliore.”
Nel frattempo il sole si era girato ed entrava di taglio dalla finestra. Sid spostò il portatile per togliersi il riflesso dagli occhi.
“E il service account di BIGDB?” chiese Mateo. “Quello lo lasciamo com’è?”
“Quello non lo tocchiamo, è già a posto,” rispose Sid. “Piuttosto controlliamo le cose dal vostro lato. Voglio essere sicuro che, una volta aperto AES sulla trust, i vostri Domain Controller lo usino davvero per sigillare il referral. Una semplice verifica sul sistema sorgente. Il grosso del lavoro è da fare sulla trust.”
Mateo lanciò un’occhiata al portatile, con l’aria di chi ha ancora un dubbio in canna. “Aspetta. Ma il gestionale è vecchissimo. Sei sicuro che sia capace di parlare AES?”
“Bella domanda, ed è il momento giusto per farla,” disse Sid. “Ma per fortuna i fatti giocano a nostro favore. Il gestionale non ha mai scelto RC4. Non sa nemmeno cosa sia. Lui chiede al sistema operativo di autenticarsi e si fida di quello che gli viene passato. È Windows a fare il lavoro sporco. E i vostri server, anche se datati, sanno parlare AES benissimo. RC4 non è una loro scelta, è un’impostazione ereditata da un mondo che nessuno ha toccato da molto tempo.”
“Quindi niente eccezioni, niente scorciatoie,” disse Mateo, quasi sollevato.
Sid fece una pausa, di quelle che precedono le verità scomode. “Nel mondo ideale, niente eccezioni: si aggiorna la trust, si verifica che il resort sappia usare AES e si chiude RC4 per sempre. Nel mondo vero, però, hai una hall piena, una finestra di manutenzione da concordare e una casa madre alle prese con la propria burocrazia. Quindi resta una sola via di mezzo.”
“Quale?”
“Dobbiamo fare un passo indietro obbligato e chiedere alla casa madre di permettere RC4 solo dove serve davvero: sull’account che possiede lo SPN di BIGDB, e solo per il tempo necessario a rimettere in piedi il servizio. Questo ci permette di lavorare sulla trust con i tempi necessari. E lo so, una deroga così è brutta, ma è circoscritta. E soprattutto va scritta: chi l’ha chiesta, perché, quando scade e qual è il piano per toglierla. Una deroga senza scadenza non è una soluzione. È un altro pezzo di legacy che stai creando adesso, con le tue mani, mentre pensi di risolverne uno.”
Mateo lo guardò per un secondo, poi annuì lentamente. Aveva appena capito perché una soluzione temporanea può essere più pericolosa del problema che pretende di risolvere.
Per far ripartire il resort, la casa madre accettò di applicare una deroga temporanea sull’account associato allo SPN di BIGDB. In parallelo aprirono il vero lavoro: aggiornare la trust, verificare il comportamento dei Domain Controller del resort e pianificare la rimozione definitiva di quella vecchia lingua crittografica.
Il conto torna?
Mateo tornò davanti al gestionale, prese fiato come chi sta per disinnescare qualcosa, e aprì di nuovo le prenotazioni.
Rotellina. Attesa. E poi, per la prima volta in dodici ore, la lista delle stanze tornò a riempirsi riga dopo riga, come la marea che fuori dal resort aveva ripreso a salire.
“Holy Token,” mormorò Mateo, senza accorgersene.
Sid sorrise. “Vedo che è contagioso.”
Poco dopo la porta dell’ufficio si aprì di nuovo, ma stavolta lentamente. Il direttore entrò con la camicia ancora sudata ma la faccia di chi ha appena ricevuto una buona notizia. Il WiFi era tornato, le prenotazioni si aprivano, le famiglie dalla hall iniziavano ad avviarsi verso le stanze.
“Signor Historia, non so come ringraziarla,” disse, con l’aria di chi ha appena terminato un incubo. “La suite è sua per tutto il soggiorno, ovviamente. E se le va, parliamo di uno sconto per un prossimo soggiorno. Anzi, per qualsiasi richiesta durante il soggiorno, lei chiami direttamente me.”
Sid si alzò, si aggiustò la giacca di lino e rimase un attimo in silenzio, come chi sta decidendo se dire la cosa comoda o quella giusta. Poi scelse la seconda, perché la prima non gli era mai riuscita bene.
“La suite la accetto volentieri, non le nascondo che la vista mare mi mancava,” disse. “Ma mi permetta una cosa, e non è una critica a Mateo. Anzi, è il contrario. Oggi non vi ha salvato la fortuna di aver incontrato me nella hall. Vi ha salvato il fatto che questo ragazzo ha passato dodici ore a cercare di tenere in piedi qualcosa che, a rigore, non avrebbe dovuto reggersi da solo.”
Il direttore aprì la bocca per dire qualcosa, ma Sid andò avanti, con il tono di chi non stava rimproverando, solo constatando.
“Voi non avete avuto un semplice guasto. Avete avuto un conto arrivato in ritardo. Per anni qualcuno alla casa madre ha modernizzato, dismesso, messo in sicurezza. E per anni questo pezzo di infrastruttura è rimasto fermo, in un angolo, a parlare una lingua che il resto del mondo stava smettendo di capire. Tutto ha funzionato finché nessuno, dall’altra parte, cambiava le regole. Stanotte però le hanno cambiate, e il conto è arrivato tutto insieme, gli ospiti nella hall sono stati lì a testimoniarlo.”
“Ma adesso funziona tutto di nuovo,” provò a dire il direttore.
“Funziona di nuovo perché oggi siete stati fortunati,” rispose Sid, senza durezza, ma senza sconti. “La fortuna, però, non è una voce di bilancio. Un’infrastruttura non si tiene in piedi con una suite panoramica e con la speranza che passi di qui il consulente giusto nel momento giusto. Si tiene in piedi con qualcosa di molto meno affascinante: tempo, budget, manutenzione, persone pagate per curare questi sistemi prima che vadano in crisi. Serve un inventario che sappia che questo resort esiste. Un piano per portare questi sistemi nel presente, un pezzo alla volta, prima che sia il prossimo blackout a deciderlo al posto vostro.”
Indicò con un gesto lo schema disegnato male, ancora lì sul tavolo, con la sua linea di penna a separare due mondi.
“Quella deroga temporanea che abbiamo fatto attivare ha una data di scadenza. Usatela come una sveglia, non va dimenticata. Perché il prossimo che troverà questo sistema in questo stato potrei non essere io in vacanza. Potrebbe essere qualcuno che vuole fare danni seri e vi manda una richiesta di riscatto.”
Il direttore restò in silenzio. Per la prima volta da quando era entrato, non aveva un sorriso da reception pronto sulla faccia. Aveva l’espressione di chi ha appena capito che quel problema, quello vero, non l’aveva risolto Sid. Quello lo poteva risolvere solo lui, con una firma su un budget e non su un assegno di cortesia.
“Ci penserò,” disse alla fine. E per una volta non sembrava una formula di cortesia.
Sid raccolse la giacca e si avviò verso la porta. Mateo lo seguì con lo sguardo, poi disse, quasi timido: “Grazie. Sul serio.”
“Ringrazia te stesso,” rispose Sid dalla soglia. “Io ho solo letto un pacchetto. Tu hai tenuto insieme un resort intero con del nastro adesivo e testardaggine. Ma il nastro adesivo, come hai capito, non basta e prima o poi finisce. Fatti dare gli strumenti veri, prima che sia il prossimo blackout a chiederteli.”
Sid si avviò verso il mare. Dietro di lui il resort aveva ripreso a respirare. Il problema era risolto. Quello immediato, almeno.
La lezione, come sempre
La storia di Sid è inventata, ma il resort del racconto esiste in mille varianti reali. Non è quasi mai un sistema che si rompe da solo. È un sistema che nessuno guardava più, tenuto in vita da un’abitudine, e che un giorno incontra un mondo che nel frattempo è andato avanti senza avvertirlo.
Il legacy, quello vero, raramente è un problema tecnico. È un problema di memoria e di priorità. Quel resort non era semplicemente fermo. Era scivolato fuori dalla memoria condivisa dell’organizzazione, in quella zona grigia dove i sistemi continuano a funzionare proprio perché nessuno li tocca, finché il resto del mondo non cambia le serrature.


