Isolare la propria macchina con un air gap di inferenza
Isolare una macchina di inferenza con un air-gap significa privarla di qualsiasi connessione di rete (cavo, Wi-Fi, Bluetooth) e introdurvi modelli e aggiornamenti solo tramite un supporto fisico controllato. Un firewall per il traffico in uscita è un utile livello di protezione, ma non costituisce un air-gap: è soltanto una configurazione software. I veri punti deboli sono i software che contattano l'esterno (Ollama Cloud, aggiornamenti, download) e la chiavetta USB.
La parola «locale» non basta in alcuni contesti sensibili: una macchina locale rimane connessa e i suoi software possono contattare l'esterno. Questa guida distingue il vero air-gap dall'isolamento tramite firewall, elenca i componenti di uno stack LLM che contattano l'esterno per impostazione predefinita e spiega come bloccare queste comunicazioni, descrive un trasferimento di modelli tramite chiavetta USB verificato mediante hash e propone test di isolamento che puoi ripetere.
#Quando un air-gap è giustificato e quando costa troppo
Un air-gap si decide sulla base di un'analisi dei rischi, non per principio. I casi in cui è giustificato: dati classificati o coperti da un segreto industriale di alto livello, requisiti contrattuali o settoriali che impongono esplicitamente una rete isolata, ambienti che già adottano l'isolamento e nei quali il LLM deve integrarsi, e postazioni dedicate a fascicoli di eccezionale sensibilità (un avvocato, un ricercatore). Per i dati personali ordinari, inclusi quelli sanitari o finanziari, i testi normativi richiedono misure proporzionate al rischio piuttosto che un isolamento totale: un LLM locale su una postazione cifrata, senza account cloud, risponde già alla maggior parte delle esigenze. La guida sull'IA locale in azienda e la checklist sulla riservatezza coprono questo livello intermedio.
Prima di iniziare, poniti tre domande. Chi effettuerà i trasferimenti e con quale frequenza? Quali componenti dello stack devono essere aggiornati (Ollama, llama.cpp, l'interfaccia, i modelli)? E cosa succede il giorno in cui un modello più recente diventa indispensabile: il processo deve rimanere praticabile senza eccezioni, perché un'eccezione fatta una volta diventa la regola. Se non riesci a rispondere a queste tre domande, inizia con una postazione offline per ciascun utilizzo, con un firewall rigoroso, e sali di livello solo quando il rischio lo giustifica.
#Air-gap, quasi air-gap e firewall: non confonderli
Implementare un'IA locale sul lavoro: GDPR, AI Act, architettura multiutente, costi, nota per la direzione.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
| Livello | Cos'è | Ciò che rimane possibile |
|---|---|---|
| Macchina offline per uso | Nessuna connessione attiva, ma la scheda di rete esiste | Una riconnessione accidentale o provocata da un software; tutto dipende dalla disciplina |
| Firewall rigoroso (rifiuto predefinito, anche in uscita) | Configurazione software che blocca il traffico di uscita | Una regola aggiunta «per provare», un difetto del sistema, un servizio che evita |
| Air gap fisico | Nessuna interfaccia di rete attiva: cavo assente, Wi-Fi e Bluetooth disattivati nel firmware o rimossi | Le fughe di dati attraverso supporti rimovibili; i canali fisici (fuori dall'ambito di questa guida) |
Questa guida copre tutti e tre: il firewall è il livello minimo di protezione che ogni postazione sensibile dovrebbe avere, e l'air-gap fisico è il livello superiore. Su un Mac, le impostazioni specifiche di macOS sono trattate nella guida all'ottimizzazione dei Mac con chip Apple; su Windows, i principi sono gli stessi, ma il controllo dei componenti che comunicano con l'esterno è meno preciso rispetto a un Linux minimale, da cui la preferenza accordata qui a Linux.
#Preparare la macchina
- Sistema minimale
- Debian o Ubuntu Server senza interfaccia grafica per un server di inferenza. Nessun browser, nessun gestore di pacchetti collegato a uno store di applicazioni.
- Servizi di aggiornamento automatico
- Disattiva i timer di aggiornamento, ad esempio sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer, in modo che nessun tentativo di connessione venga avviato silenziosamente.
- Account
- Un account dedicato all'uso del LLM, sudo limitato all'amministratore.
- Radio e interfacce
- Wi-Fi e Bluetooth disabilitati nel BIOS o nel firmware; meglio ancora: fisicamente assenti. Nessun cavo di rete collegato.
- Niente dual boot
- Una partizione affiancata connessa alla rete crea vie di accesso indirette (file di scambio, file condivisi).
- Ora
- Imposta l'orologio manualmente o tramite una fonte interna: la sincronizzazione con un server orario pubblico genera traffico in uscita.
- Disco crittografato
- Un computer isolato può essere rubato o sequestrato: cifra il disco (vedi la guida dedicata).
#I software dello stack LLM che effettuano chiamate verso l'esterno per impostazione predefinita
Su una macchina fisicamente isolata, queste chiamate falliscono senza causare danni; su una macchina protetta soltanto da un firewall, o in attesa di essere disconnessa, rappresentano il vero rischio. Uno stack locale tipico contiene diversi componenti che contattano Internet se non si impedisce loro di farlo. Ecco quelli che è possibile disattivare secondo la documentazione ufficiale.
| Componente | Cosa può fare | Impostazione documentata |
|---|---|---|
| Ollama | Modelli e ricerca web ospitati (Ollama Cloud) | OLLAMA_NO_CLOUD=1 oppure disable_ollama_cloud nel file ~/.ollama/server.json; i log mostreranno allora « Ollama cloud disabled: true » |
| Ollama (esposizione in rete) | Server HTTP locale | In ascolto su 127.0.0.1 per impostazione predefinita; modifica OLLAMA_HOST solo per una rete interna isolata |
| Open WebUI | Verifiche degli aggiornamenti, download dei modelli di embedding da Hugging Face | OFFLINE_MODE=true (disattiva anche ENABLE_VERSION_UPDATE_CHECK); scarica prima i modelli di embedding |
| Librerie Hugging Face (transformers, sentence-transformers) | Chiamate all'Hub per verificare o scaricare | HF_HUB_OFFLINE=1: nessuna richiesta HTTP all'Hub, vengono utilizzati solo i file in cache |
| Database vettoriali | Eventuale telemetria | Weaviate: DISABLE_TELEMETRY=true; verifica l'opzione equivalente per ogni componente |
La documentazione di Ollama precisa che, quando si utilizza Ollama in locale, il produttore non vede né le richieste né i dati; disattivare le funzioni cloud fa perdere l'accesso ai modelli ospitati e alla ricerca web, ed è proprio questo l'obiettivo. Attenzione a Open WebUI: la documentazione avverte che, se non hai scaricato un modello di embedding prima di attivare OFFLINE_MODE, le funzioni di RAG, ricerca web e analisi dei documenti potrebbero non funzionare. Scarica tutto ciò di cui la macchina avrà bisogno prima di disconnetterla dalla rete.
#Firewall rigoroso: bloccare per impostazione predefinita sia il traffico in entrata sia quello in uscita
Il firewall è la seconda linea di difesa, dopo la disconnessione fisica, e l'unica protezione su un computer che rimane collegato a una rete interna. Il principio è bloccare tutto per impostazione predefinita in entrambe le direzioni, con poche autorizzazioni esplicite verso la rete interna isolata. Scrivi le regole di autorizzazione prima di attivare il firewall, altrimenti interromperai tu stesso la tua sessione SSH.
Il traffico sull'interfaccia locale (loopback) è necessario per il funzionamento di Ollama e di Open WebUI, che comunicano su 127.0.0.1; verifica con ufw status verbose che la tua configurazione non lo blocchi. Se la macchina si trova su una LAN interna, aggiungi un secondo livello di protezione sul router: una VLAN senza una route verso Internet.
#Verificare dove è in ascolto Ollama
#Trasferire i modelli e gli aggiornamenti tramite chiavetta USB
Una macchina isolata riceve modelli (da pochi GB a diverse decine), aggiornamenti (Ollama, llama.cpp, Open WebUI), a volte documenti. Il punto critico è la chiavetta USB: è l'unica porta, quindi l'unica via d'ingresso per un software dannoso. Usa sempre la stessa chiavetta, dedicata e formattata regolarmente, e mai una chiavetta che sia stata usata altrove.
- 01Scaricare su una macchina connessaScarica il file GGUF del modello da Hugging Face o il binario di aggiornamento dal sito ufficiale. Annota l'hash SHA-256 mostrato dalla fonte, quando disponibile.
- 02Calcolare l'impronta e analizzareEsegui sha256sum sul file, poi passalo a un antivirus (ad esempio ClamAV) su questo dispositivo di transito, che non è il dispositivo isolato.
- 03Copiare sulla chiavettaCopia il file e un file di testo contenente la sua impronta.
- 04Verificare sulla macchina isolata prima dell'usoSulla macchina isolata, ricalcola l'impronta: deve essere identica. Una differenza significa un file modificato o corrotto: non usarlo.
- 05Importare in OllamaCrea un Modelfile con FROM /chemin/vers/modele.gguf, poi esegui ollama create nom-du-modele -f Modelfile. Ollama non quantizza un GGUF durante l'importazione: il file deve già avere la quantizzazione desiderata.
Il metodo alternativo consiste nel copiare tutto il dossier dei modelli di una macchina connessa (blobs e manifesti) sulla macchina isolata. Funziona, ma la posizione del dossier non è la stessa a seconda dell'installazione: la FAQ di Ollama indica ~/.ollama/models su macOS, /usr/share/ollama/.ollama/models su Linux con l'installatore standard e C:\Users\%username%\.ollama\models su Windows. Passare attraverso un file GGUF isolato è più semplice da verificare, poiché ci sono solo due impronte da confrontare. Il tutorial sull'import GGUF spiega il Modelfile.
#Rafforzare la sicurezza della porta USB
Una chiavetta USB può spacciarsi per una tastiera o un'altra periferica. Su Linux, USBGuard si presenta, in una frase, come uno strumento per definire una lista di periferiche USB consentite: stabilisce quali tipi di dispositivi sono autorizzati e come possono interagire con il sistema. Disattiva anche il montaggio automatico dei supporti, in modo che nulla venga eseguito al collegamento. Per i contesti molto sensibili, un diodo dati (un dispositivo che lascia passare i dati in una sola direzione) sostituisce la chiavetta, a costo di una messa in opera più complessa.
#Verificare l'isolamento
Un test dimostra l'efficacia dell'isolamento solo per il periodo che ha monitorato: ripetilo dopo ogni aggiornamento e lascia attiva la cattura del traffico per un'intera sessione di lavoro. Il protocollo minimo copre il funzionamento, l'assenza di rotte di rete, l'assenza di risoluzione dei nomi e il traffico effettivo.
- Funzionamento offline
- Scollega il cavo e disattiva tutte le connessioni radio, poi esegui il flusso completo (modello, RAG, interfaccia). Tutto deve funzionare: altrimenti, un componente dipendeva da Internet.
- Assenza di route
- ping -c 1 8.8.8.8 deve fallire (« Network is unreachable » o equivalente).
- Assenza di DNS
- host exemple.org deve fallire; controlla /etc/resolv.conf: nessun server esterno.
- Connessioni stabilite
- sudo ss -tunp state established : aucune connexion vers une adresse hors du réseau interne.
- Traffico reale
- Una cattura con tcpdump su tutte le interfacce, escludendo la rete interna, deve rimanere vuota durante tutta la sessione di utilizzo.
#Audit regolare
| Frequenza | Controllo | Obiettivo |
|---|---|---|
| Mensile | ufw status verbose e elenco delle regole; ss -tlnp | Riconoscere una regola aggiunta «per provare» |
| A ogni trasferimento | Fotografie prima e dopo la chiave; analisi antivirus | Rilevare un file modificato |
| A ogni aggiornamento di un componente | Ripetere i test di tenuta e rileggere le variabili offline | Un nuovo componente può aggiungere una chiamata in uscita |
| Semestrale o annuale | Reinstallazione pulita a partire da immagini verificate; revisione della minaccia | Eliminare eventuali compromissioni accumulatesi nel tempo |
#Domande frequenti sull'air-gap di una macchina LLM
Un firewall per il traffico in uscita basta per parlare di air-gap?+
Come aggiornare Ollama su una macchina senza internet?+
Come trasferire un modello sulla macchina isolata?+
Ollama invia le mie richieste all'esterno?+
La chiavetta USB è il punto debole?+
È necessario cifrare il disco di una macchina già isolata?+
- Crittografare il disco dei modelli
- Checklist sulla riservatezza
- IA locale in azienda: GDPR, sovranità e deployment
- Importare un modello GGUF da Hugging Face in Ollama
- Sfruttare al massimo un Mac Apple Silicon
- Fonte: FAQ Ollama, cloud disattivabile e posizioni
- Fonte: Ollama, import di un modello GGUF
- Fonte: Open WebUI, variabili d'ambiente
- Fonte: USBGuard
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.