Avanzato 11 minHardening

Isolare la propria macchina con un air gap di inferenza

Risposta diretta

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.

Di Mohamed Meguedmi·Agg. 2026-09-30·Testato su Windows, macOS e Linux

#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.

!
Il vero costo
Ogni aggiornamento, ogni modello e ogni documento passa attraverso un supporto fisico e un protocollo. Una macchina isolata dalla rete tramite air gap che non viene mai aggiornata accumula vulnerabilità; se il protocollo di una macchina è troppo macchinoso, i suoi utenti finiscono per aggirarlo. Pianifica chi effettua i trasferimenti, con quale frequenza e come vengono eseguite le verifiche.

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

Il kit IA Locale in Azienda

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
Tre livelli di isolamento
LivelloCos'èCiò che rimane possibile
Macchina offline per usoNessuna connessione attiva, ma la scheda di rete esisteUna 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 uscitaUna regola aggiunta «per provare», un difetto del sistema, un servizio che evita
Air gap fisicoNessuna interfaccia di rete attiva: cavo assente, Wi-Fi e Bluetooth disattivati nel firmware o rimossiLe 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.

Componenti che comunicano con l'esterno e comandi per disattivarli
ComponenteCosa può fareImpostazione documentata
OllamaModelli 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 localeIn ascolto su 127.0.0.1 per impostazione predefinita; modifica OLLAMA_HOST solo per una rete interna isolata
Open WebUIVerifiche degli aggiornamenti, download dei modelli di embedding da Hugging FaceOFFLINE_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 scaricareHF_HUB_OFFLINE=1: nessuna richiesta HTTP all'Hub, vengono utilizzati solo i file in cache
Database vettorialiEventuale telemetriaWeaviate: 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.

→
Strumenti, agenti e ricerca web
Un LLM locale collegato a strumenti (ricerca web, lettori di URL, server MCP remoti) può esso stesso inviare richieste all'esterno. Su una macchina isolata, disattiva o non installare questi strumenti: non è il modello a uscire, ma lo strumento che gli fornisci.

#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.

ufw: rifiuto predefinito, rete interna autorizzata
sudo ufw default deny incoming
sudo ufw default deny outgoing

# Réseau interne isolé (exemple), y compris l'administration SSH depuis un poste connu
sudo ufw allow in from 192.168.50.0/24 to any port 22 proto tcp
sudo ufw allow out to 192.168.50.0/24

sudo ufw enable
sudo ufw status verbose

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

Porte in ascolto
sudo ss -tlnp | grep ollama
# attendu : 127.0.0.1:11434 et non 0.0.0.0:11434
# si 0.0.0.0 : régler OLLAMA_HOST=127.0.0.1:11434

#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.

  1. 01
    Scaricare su una macchina connessa
    Scarica 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.
  2. 02
    Calcolare l'impronta e analizzare
    Esegui sha256sum sul file, poi passalo a un antivirus (ad esempio ClamAV) su questo dispositivo di transito, che non è il dispositivo isolato.
  3. 03
    Copiare sulla chiavetta
    Copia il file e un file di testo contenente la sua impronta.
  4. 04
    Verificare sulla macchina isolata prima dell'uso
    Sulla macchina isolata, ricalcola l'impronta: deve essere identica. Una differenza significa un file modificato o corrotto: non usarlo.
  5. 05
    Importare in Ollama
    Crea 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.
Impronta digitale e importazione del modello
# machine de transit
sha256sum modele-q4_k_m.gguf > modele.sha256

# machine isolée
sha256sum -c modele.sha256
printf 'FROM ./modele-q4_k_m.gguf\n' > Modelfile
ollama create mon-modele -f Modelfile
ollama run mon-modele

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.
Schermata di controllo
# rien ne doit apparaître (hors loopback et réseau interne)
sudo tcpdump -i any -n 'not (host 127.0.0.1 or host ::1) and not (net 192.168.50.0/24)'

#Audit regolare

Frequenza dei controlli proposta
FrequenzaControlloObiettivo
Mensileufw status verbose e elenco delle regole; ss -tlnpRiconoscere una regola aggiunta «per provare»
A ogni trasferimentoFotografie prima e dopo la chiave; analisi antivirusRilevare un file modificato
A ogni aggiornamento di un componenteRipetere i test di tenuta e rileggere le variabili offlineUn nuovo componente può aggiungere una chiamata in uscita
Semestrale o annualeReinstallazione pulita a partire da immagini verificate; revisione della minacciaEliminare eventuali compromissioni accumulatesi nel tempo

#Domande frequenti sull'air-gap di una macchina LLM

FAQ
Un firewall per il traffico in uscita basta per parlare di air-gap?+
No. Un firewall è una configurazione software: una regola dimenticata, una vulnerabilità o un servizio che la aggira bastano a consentire una connessione in uscita. L'air-gap presuppone l'assenza fisica di un collegamento di rete. Il firewall rimane una buona seconda linea di difesa e l'unica protezione quando la macchina deve restare su una rete interna.
Come aggiornare Ollama su una macchina senza internet?+
Scarica il programma dalla fonte ufficiale su una macchina connessa, calcolane l'impronta hash, analizzalo, copialo su una chiavetta USB dedicata, ricalcolane l'impronta hash sulla macchina isolata prima dell'installazione, poi installalo manualmente. Esegui nuovamente i test di isolamento e verifica che le funzioni cloud rimangano disattivate.
Come trasferire un modello sulla macchina isolata?+
La soluzione più semplice è un file GGUF già quantizzato: scaricalo, calcolane lo SHA-256, copialo sulla chiavetta, ricalcolane l'impronta sulla macchina isolata, poi crea il modello con un Modelfile e ollama create. Anche copiare la cartella dei modelli funziona, ma la sua posizione varia in base al sistema.
Ollama invia le mie richieste all'esterno?+
Secondo la documentazione di Ollama, il funzionamento in locale non trasmette né richieste né dati al produttore del software. Le funzioni cloud (modelli ospitati, ricerca web) sono facoltative e possono essere disattivate con OLLAMA_NO_CLOUD=1 o un'impostazione in server.json. Per una macchina sensibile, disattivale esplicitamente e verifica il messaggio nei log.
La chiavetta USB è il punto debole?+
È l'unico punto di ingresso, quindi il più sorvegliato. Usa una chiavetta USB dedicata, disattiva il montaggio automatico, confronta gli hash SHA-256 prima e dopo il trasferimento e valuta USBGuard per consentire solo i dispositivi previsti. Un diodo di dati è la soluzione superiore se i vincoli lo giustificano.
È necessario cifrare il disco di una macchina già isolata?+
Sì. L'isolamento di rete non protegge dal furto o dal sequestro della macchina: un disco non crittografato può essere letto non appena lo si collega altrove. Crittografa il disco di sistema, salva la chiave di recupero fuori dalla macchina e mantieni la stessa disciplina per le copie di sicurezza.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.