Isolar sua máquina da rede (air gap) de inferência
Isolar fisicamente uma máquina de inferência da rede (air-gap) significa privá-la de qualquer conexão de rede (cabo, Wi-Fi, Bluetooth) e permitir a entrada de modelos e atualizações apenas por meio de uma mídia física controlada. Um firewall de saída é uma camada útil, mas não constitui um air-gap: trata-se apenas de uma configuração de software. Os pontos fracos reais são os softwares que se conectam ao exterior (Ollama Cloud, atualizações, downloads) e o pendrive.
A palavra «local» não basta em certos contextos sensíveis: uma máquina local continua conectada, e seus softwares podem se comunicar com o exterior. Este guia distingue o verdadeiro air-gap do isolamento por firewall, lista os componentes de uma pilha LLM que se comunicam com o exterior por padrão e explica como bloquear essas comunicações, descreve uma transferência de modelos por pendrive verificada por hashes e propõe testes de isolamento que você pode repetir.
#Quando um air-gap é justificado e quando custa muito caro
A adoção de um air-gap é decidida com base em uma análise de riscos, não por princípio. Os casos em que ele se justifica: dados classificados ou protegidos por segredo industrial de alto nível, exigências contratuais ou setoriais que impõem explicitamente uma rede isolada, ambientes que já adotam o isolamento e aos quais o LLM deve se integrar, e computadores dedicados a dossiês de sensibilidade excepcional (de um advogado ou de um pesquisador). Para dados pessoais comuns, inclusive de saúde ou financeiros, os textos legais exigem medidas proporcionais ao risco, em vez de isolamento total: um LLM local em um computador criptografado, sem conta na nuvem, já atende à maioria das necessidades. O guia sobre IA local em empresas e a checklist de confidencialidade abrangem esse nível intermediário.
Antes de começar, faça três perguntas. Quem fará as transferências e com que frequência? Quais componentes a pilha exige que sejam atualizados (Ollama, llama.cpp, a interface, os modelos)? E o que acontece no dia em que um modelo mais recente se tornar indispensável: o processo deve continuar viável sem exceções, porque uma exceção feita uma vez se torna a regra. Se você não conseguir responder a essas três perguntas, comece com uma estação de trabalho offline para cada uso, com firewall rigoroso, e avance um nível apenas quando o risco justificar.
#Air-gap, quase air-gap e firewall: não confundir
Implantar uma IA local no trabalho: RGPD, AI Act, arquitetura multiusuário, custos, nota para a diretoria.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
| Nível | O que é | O que ainda é possível |
|---|---|---|
| Máquina fora de linha por uso | Sem conexão ativa, mas a placa de rede existe | Uma reconexão por engano ou por um software; tudo depende da disciplina |
| Firewall rigoroso (bloqueio por padrão, inclusive do tráfego de saída) | Configuração de software que bloqueia o tráfego de saída | Uma regra adicionada “para testar”, uma falha no sistema, um serviço que contorna as restrições |
| Isolamento físico | Nenhuma interface de rede ativa: cabo ausente, Wi-Fi e Bluetooth desligados no firmware ou removidos | Vazamentos por mídias removíveis; canais físicos (fora do escopo deste guia) |
Este guia abrange os três: o firewall é a camada mínima que qualquer computador usado para atividades sensíveis deveria ter, e o air-gap físico é a camada superior. Em um Mac, as configurações específicas do macOS são abordadas no guia de otimização de Macs com chip Apple; no Windows, os princípios são os mesmos, mas o controle dos componentes que fazem chamadas externas é menos preciso do que em um Linux mínimo, por isso a preferência dada aqui ao Linux.
#Preparar a máquina
- Sistema mínimo
- Debian ou Ubuntu Server sem interface gráfica para um servidor de inferência. Sem navegador, sem gerenciador de pacotes conectado a uma loja de aplicativos.
- Serviços de atualização automática
- Desative os timers de atualização, por exemplo sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer, para que nenhuma tentativa de conexão seja iniciada silenciosamente.
- Contas
- Uma conta dedicada ao uso do LLM, sudo restrito ao administrador.
- Rádios e interfaces
- Wi-Fi e Bluetooth desativados no BIOS ou no firmware, melhor: fisicamente ausentes. Sem cabo de rede conectado.
- Sem dual boot
- Uma partição com conexão à rede no mesmo computador cria vias indiretas (arquivo de troca, arquivos compartilhados).
- Hora
- Ajuste a hora manualmente ou por meio de uma fonte interna: uma sincronização com um servidor de tempo público gera tráfego de saída.
- Disco criptografado
- Um computador isolado pode ser roubado ou apreendido: criptografe o disco (consulte o guia específico).
#Softwares da pilha LLM que fazem chamadas externas por padrão
Em uma máquina fisicamente isolada, essas chamadas falham sem causar danos; em uma máquina protegida apenas por um firewall, ou ainda aguardando a desconexão, elas são o verdadeiro risco. Uma pilha local típica contém vários componentes que se conectam à internet se não forem impedidos. Veja quais deles podem ter essas conexões desativadas conforme a documentação oficial.
| Componente | O que ele pode fazer | Configuração documentada |
|---|---|---|
| Ollama | Modelos e busca web hospedados (Ollama Cloud) | OLLAMA_NO_CLOUD=1 ou disable_ollama_cloud no ~/.ollama/server.json ; os logs exibem então « Ollama cloud disabled: true » |
| Ollama (exposição à rede) | Servidor HTTP local | Escuta em 127.0.0.1 por padrão; altere OLLAMA_HOST somente para uma rede interna isolada |
| Open WebUI | Verificações de atualização, download de modelos de embeddings do Hugging Face | OFFLINE_MODE=true (desativa também ENABLE_VERSION_UPDATE_CHECK) ; baixe os modelos de embeddings antes |
| Bibliotecas Hugging Face (transformers, sentence-transformers) | Chamadas ao Hub para verificar ou baixar | HF_HUB_OFFLINE=1: nenhuma chamada HTTP ao Hub, apenas os arquivos em cache são usados |
| Bases vetoriais | Possível telemetria | Weaviate : DISABLE_TELEMETRY=true ; verifique a opção equivalente para cada componente |
A documentação do Ollama esclarece que, quando você usa o Ollama localmente, a empresa responsável não vê as requisições nem os dados; desativar as funções de nuvem elimina o acesso aos modelos hospedados e à pesquisa web, o que é exatamente o objetivo. Atenção ao Open WebUI: a documentação alerta que, se você não tiver baixado um modelo de embeddings antes de ativar OFFLINE_MODE, as funções de RAG, pesquisa web e análise de documentos podem não funcionar. Baixe tudo de que a máquina precisará antes de desconectá-la da rede.
#Firewall rigoroso: bloquear por padrão tanto o tráfego de entrada quanto o de saída
O firewall é a segunda linha de defesa, atrás da desconexão física, e a única proteção em um computador conectado a uma rede interna. O princípio é o bloqueio por padrão em ambos os sentidos, com algumas autorizações explícitas para a rede interna isolada. Escreva as regras de autorização antes de ativar o firewall, caso contrário, você vai se desconectar da sessão SSH.
O tráfego na interface local (loopback) é necessário para o funcionamento do Ollama e do Open WebUI, que se comunicam em 127.0.0.1; verifique com ufw status verbose se sua configuração não bloqueia esse tráfego. Se a máquina estiver em uma LAN interna, reforce também a proteção no roteador: uma VLAN sem rota para a Internet.
#Verificar onde o Ollama está escutando
#Transferir os modelos e as atualizações por pendrive
Uma máquina isolada recebe modelos (de alguns GB a várias dezenas de GB), atualizações (Ollama, llama.cpp, Open WebUI) e, às vezes, documentos. O ponto crítico é o pendrive: é a única porta de entrada e, portanto, a única via de entrada de software malicioso. Use sempre o mesmo pendrive, dedicado, formatado regularmente, e nunca um pendrive que tenha sido usado em outro lugar.
- 01Baixar em uma máquina conectadaBaixe o arquivo GGUF do modelo do Hugging Face ou o binário de atualização do site oficial. Anote o hash SHA-256 exibido pela fonte, quando disponível.
- 02Calcular o hash e analisarExecute sha256sum no arquivo e, em seguida, analise-o com um antivírus (por exemplo, ClamAV) nessa máquina de trânsito, que não é a máquina isolada.
- 03Copiar para o pen driveCopie o arquivo e um arquivo de texto contendo seu hash.
- 04Verificar na máquina isolada antes do usoNa máquina isolada, recalcule o hash: ele deve ser idêntico. Uma diferença significa que o arquivo foi modificado ou está corrompido: não o use.
- 05Importar para OllamaCrie um Modelfile com FROM /chemin/vers/modele.gguf e depois execute ollama create nom-du-modele -f Modelfile. O Ollama não quantiza um GGUF na importação: o arquivo já deve ter a quantização desejada.
O método alternativo consiste em copiar todo o diretório dos modelos de uma máquina conectada (blobs e manifestos) para a máquina isolada. Funciona, mas o diretório não está no mesmo local conforme a instalação: a FAQ do Ollama indica ~/.ollama/models no macOS, /usr/share/ollama/.ollama/models no Linux com o instalador padrão e C:\Users\%username%\.ollama\models no Windows. O passo por um arquivo GGUF isolado é mais fácil de verificar, pois há apenas uma impressão a comparar. O guia sobre importação GGUF detalha o Modelfile.
#Reforçar a segurança da porta USB
Um pendrive pode se fazer passar por um teclado ou outro periférico. No Linux, o USBGuard pode ser descrito em uma frase como uma ferramenta de lista de permissões para dispositivos USB: ele define quais tipos de dispositivos são permitidos e como podem interagir com o sistema. Desative também a montagem automática das mídias de armazenamento, para que nada seja executado ao conectá-las. Para contextos muito sensíveis, um diodo de dados (um dispositivo que só permite a passagem de dados em um sentido) substitui o pendrive, ao custo de uma implementação mais complexa.
#Testar o isolamento
Um teste só comprova o isolamento durante o período que monitorou: repita-o após cada atualização e deixe a captura rodando durante uma sessão de trabalho completa. O protocolo mínimo cobre o funcionamento, a ausência de rota, a ausência de resolução de nomes e o tráfego real.
- Funcionamento offline
- Desconecte o cabo e desative todas as interfaces de rádio, depois execute o fluxo completo (modelo, RAG, interface). Tudo deve funcionar: caso contrário, algum componente dependia da Internet.
- Falta de rota
- ping -c 1 8.8.8.8 deve falhar (« Network is unreachable » ou equivalente).
- Ausência de DNS
- host exemple.org deve falhar; verifique /etc/resolv.conf: nenhum servidor externo.
- Conexões estabelecidas
- sudo ss -tunp state established : aucune connexion vers une adresse hors du réseau interne.
- Tráfego real
- Uma captura com tcpdump em todas as interfaces, excluindo a rede interna, deve permanecer vazia durante toda a sessão de uso.
#Auditoria periódica
| Frequência | Controle | Objetivo |
|---|---|---|
| Mensal | ufw status verbose e lista das regras; ss -tlnp | Identificar uma regra adicionada "para testar" |
| A cada transferência | Impressões antes e depois da chave; análise antivírus | Detectar um arquivo modificado |
| A cada atualização de um componente | Reexecutar os testes de isolamento e revisar as variáveis de modo offline | Um novo componente pode adicionar uma chamada de saída |
| Semestral ou anual | Reinstalação limpa a partir de imagens verificadas; revisão da ameaça | Eliminar um comprometimento acumulado |
#Perguntas frequentes sobre o air-gap de uma máquina LLM
Um firewall de saída é suficiente para falar de air-gap?+
Como atualizar Ollama em uma máquina sem internet?+
Como transferir um modelo para a máquina isolada?+
O Ollama envia minhas requisições para fora?+
O pendrive é o ponto fraco?+
É necessário criptografar o disco de uma máquina já isolada?+
- Criptografar o disco dos modelos
- Checklist de privacidade
- IA local em empresas: RGPD, soberania e implantação
- Importar um modelo GGUF do Hugging Face para o Ollama
- Extrair o máximo de um Mac Apple Silicon
- Fonte: FAQ do Ollama, desativação da nuvem e locais
- Fonte: Ollama, importação de um modelo GGUF
- Fonte: Open WebUI, variáveis de ambiente
- Fonte: USBGuard
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.