Aislar físicamente la máquina de las redes de inferencia
Aislar físicamente de la red una máquina de inferencia consiste en quitarle toda conexión de red (cable, Wi-Fi, Bluetooth) e introducir modelos y actualizaciones únicamente mediante un soporte físico controlado. Un cortafuegos de salida es una capa útil, pero no un aislamiento físico de la red (air-gap): se trata solo de una configuración de software. Los puntos débiles reales son los programas que se comunican con el exterior (Ollama Cloud, actualizaciones, descargas) y la memoria USB.
La palabra «local» no basta en ciertos contextos sensibles: una máquina local sigue conectada y sus programas pueden comunicarse con el exterior. Esta guía distingue el aislamiento físico de la red (air-gap) del aislamiento mediante cortafuegos, enumera los componentes de una pila LLM que se comunican con el exterior por defecto y cómo bloquear esas comunicaciones, describe una transferencia de modelos mediante una memoria USB verificada con huellas digitales y propone pruebas para comprobar la ausencia de fugas que puedes repetir.
#Cuándo se justifica un air-gap y cuándo cuesta demasiado
La decisión de usar un air-gap se basa en un análisis de riesgos, no en una cuestión de principio. Los casos en los que se justifica son: datos clasificados o amparados por un secreto industrial de alto nivel, requisitos contractuales o sectoriales que imponen explícitamente una red aislada, entornos que ya aplican el aislamiento y en los que el LLM debe integrarse, y equipos dedicados a expedientes de sensibilidad excepcional (un abogado, un investigador). Para los datos personales ordinarios, incluidos los de salud o financieros, los textos normativos exigen medidas proporcionales al riesgo en lugar de un aislamiento total: un LLM local en un equipo cifrado, sin cuenta en la nube, ya satisface la mayoría de las necesidades. La guía sobre IA local en empresas y la lista de comprobación de privacidad cubren este nivel intermedio.
Antes de empezar, hazte tres preguntas. ¿Quién hará las transferencias y con qué frecuencia? ¿Qué componentes exige la pila que se actualicen (Ollama, llama.cpp, la interfaz, los modelos)? ¿Y qué ocurre el día en que un modelo más reciente se vuelve indispensable? El proceso debe seguir siendo viable sin excepciones, porque una excepción hecha una sola vez se convierte en la regla. Si no puedes responder a estas tres preguntas, empieza con un equipo sin conexión para cada uso, con un cortafuegos estricto, y sube de nivel solo cuando el riesgo lo justifique.
#Air-gap, cuasi air-gap y cortafuegos: no confundirlos
Desplegar una IA local en el trabajo: RGPD, AI Act, arquitectura multiusuario, costes, nota para la dirección.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
| Nivel | Qué es | Lo que aún es posible |
|---|---|---|
| Máquina fuera de línea por uso | Sin conexión activa, pero la tarjeta de red existe | Una reconexión por error o por software; todo depende de la disciplina |
| Firewall estricto (bloqueo por defecto, también del tráfico saliente) | Configuración de software que bloquea el tráfico de salida | Una regla añadida «para probar», un fallo del sistema, un servicio que evita |
| Aislamiento físico | Ninguna interfaz de red activa: cable ausente, Wi-Fi y Bluetooth apagados en el firmware o retirados | Fugas a través de medios extraíbles; canales físicos (fuera del alcance de esta guía) |
Esta guía abarca los tres: el cortafuegos es la capa mínima que cualquier equipo sensible debería tener, y el aislamiento físico air-gap es la capa superior. En un Mac, los ajustes propios de macOS se tratan en la guía sobre la optimización de los Mac con chip Apple; en Windows, los principios son los mismos, pero el control de los componentes que se comunican con el exterior es menos preciso que con un Linux mínimo, de ahí que aquí se prefiera Linux.
#Preparar la máquina
- Sistema mínimo
- Debian o Ubuntu Server sin interfaz gráfica para un servidor de inferencia. Sin navegador, sin gestor de paquetes conectado a una tienda de aplicaciones.
- Servicios de actualización automática
- Desactiva los temporizadores de actualización, por ejemplo sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer, para que no se produzca ningún intento de conexión de forma silenciosa.
- Cuentas
- Una cuenta dedicada al uso del LLM, sudo restringido al administrador.
- Radios e interfaces
- Wi-Fi y Bluetooth desactivados en el BIOS o en el firmware, mejor aún: físicamente ausentes. Sin cable de red conectado.
- Sin arranque dual
- Otra partición conectada a la red crea vías indirectas (archivo de intercambio, archivos compartidos).
- Hora
- Ajusta el reloj manualmente o a partir de una fuente interna: la sincronización con un servidor de tiempo público implica tráfico de salida.
- Disco cifrado
- Un equipo aislado puede ser robado o incautado: cifra el disco (ver la guía específica).
#Los programas de la pila LLM que realizan llamadas externas por defecto
En una máquina físicamente aislada, estas llamadas fallan sin causar daños; en una máquina protegida únicamente por un cortafuegos, o pendiente de desconexión, constituyen el verdadero riesgo. Una pila local típica contiene varios componentes que contactan con Internet si no se les impide hacerlo. Estos son los que se pueden desactivar según la documentación oficial.
| Componente | Lo que puede hacer | Ajuste documentado |
|---|---|---|
| Ollama | Modelos y búsqueda web alojados (Ollama Cloud) | OLLAMA_NO_CLOUD=1 o bien disable_ollama_cloud en ~/.ollama/server.json; los registros mostrarán entonces « Ollama cloud disabled: true » |
| Ollama (exposición a la red) | Servidor HTTP local | Escucha por defecto en 127.0.0.1; cambia OLLAMA_HOST solo para una red interna aislada |
| Open WebUI | Verificaciones de actualización, descarga de modelos de embeddings desde Hugging Face | OFFLINE_MODE=true (desactiva también ENABLE_VERSION_UPDATE_CHECK) ; descarga los modelos de embeddings antes |
| Bibliotecas Hugging Face (transformers, sentence-transformers) | Llamadas al Hub para verificar o descargar | HF_HUB_OFFLINE=1: ninguna petición HTTP al Hub; solo se utilizan los archivos en caché |
| Bases de datos vectoriales | Telemetría posible | Weaviate: DISABLE_TELEMETRY=true; comprueba la opción equivalente para cada componente |
La documentación de Ollama especifica que, cuando se utiliza Ollama en local, el desarrollador no ve las consultas ni los datos; desactivar las funciones de la nube implica perder el acceso a los modelos alojados y a la búsqueda web, lo cual es exactamente el objetivo. Cuidado con Open WebUI: la documentación advierte que, si no has descargado un modelo de embeddings antes de activar OFFLINE_MODE, las funciones de RAG, búsqueda web y análisis de documentos pueden no funcionar. Descarga todo lo que necesite la máquina antes de desconectarla de la red.
#Cortafuegos estricto: rechazar por defecto tanto el tráfico entrante como el saliente
El firewall es la segunda línea, tras la desconexión física, y la única protección en un equipo que permanece en una red interna. El principio es el rechazo por defecto en ambos sentidos, con algunas autorizaciones explícitas hacia la red interna aislada. Escribe las reglas de autorización antes de activar el firewall, de lo contrario te desconectas tú mismo de una sesión SSH.
El tráfico en la interfaz local (loopback) es necesario para el funcionamiento de Ollama y de Open WebUI, que se comunican en 127.0.0.1; verifica con ufw status verbose que tu configuración no lo bloquee. Si la máquina está en una LAN interna, refuerza también la protección en el router: una VLAN sin ruta hacia Internet.
#Verificar dónde está escuchando Ollama
#Transferir los modelos y las actualizaciones mediante una memoria USB
Una máquina aislada recibe modelos (de unos pocos GB a varias decenas), actualizaciones (Ollama, llama.cpp, Open WebUI) y, a veces, documentos. El punto crítico es la memoria USB: es la única puerta de entrada y, por tanto, la única vía de entrada de software malicioso. Usa siempre la misma memoria USB, dedicada a este uso y formateada regularmente, y nunca una que se haya utilizado en otro lugar.
- 01Descargar en una máquina conectadaDescarga el archivo GGUF del modelo desde Hugging Face o el binario de actualización desde el sitio oficial. Anota la huella SHA-256 mostrada por la fuente cuando exista.
- 02Calcular la huella y analizarEjecuta sha256sum sobre el archivo y luego analízalo con un antivirus (por ejemplo, ClamAV) en esta máquina de tránsito, que no es la máquina aislada.
- 03Copiar en la memoria USBCopia el archivo y un archivo de texto que contenga su huella.
- 04Verificar en la máquina aislada antes del usoEn la máquina aislada, recalcula la huella: debe ser idéntica. Una diferencia indica un archivo modificado o corrupto: no lo utilices.
- 05Importar en OllamaCrea un Modelfile con FROM /chemin/vers/modele.gguf y luego ejecuta ollama create nom-du-modele -f Modelfile. Ollama no cuantiza un GGUF al importarlo: el archivo ya debe tener la cuantización deseada.
El método alternativo consiste en copiar todo el dossier de los modelos de una máquina conectada (blobs y manifestos) hacia la máquina aislada. Funciona, pero el dossier no está en el mismo lugar según la instalación: la FAQ de Ollama indica ~/.ollama/models en macOS, /usr/share/ollama/.ollama/models en Linux con el instalador estándar, y C:\Users\%username%\.ollama\models en Windows. Pasar por un archivo GGUF aislado es más fácil de verificar, ya que solo hay una huella para comparar. El guía sobre la importación GGUF detalla el Modelfile.
#Reforzar la seguridad del puerto USB
Una memoria USB puede hacerse pasar por un teclado u otro dispositivo. En Linux, USBGuard puede describirse en una frase como una herramienta de lista blanca de dispositivos USB: define qué tipos de dispositivos están autorizados y cómo pueden interactuar con el sistema. Desactiva también el montaje automático de los soportes de almacenamiento para que no se ejecute nada al conectarlos. En contextos muy sensibles, un diodo de datos (un dispositivo que solo deja pasar datos en un sentido) sustituye a la memoria USB, a costa de una puesta en marcha más compleja.
#Comprobar el aislamiento
Una prueba solo demuestra el aislamiento durante el periodo que ha observado: vuelve a ejecutarla tras cada actualización y deja la captura en marcha durante una sesión de trabajo completa. El protocolo mínimo cubre el funcionamiento, la ausencia de rutas, la ausencia de resolución de nombres y el tráfico real.
- Funcionamiento offline
- Desconecta el cable y desactiva todas las interfaces inalámbricas, luego ejecuta el flujo completo (modelo, RAG, interfaz). Todo debe funcionar: de lo contrario, un componente dependía de Internet.
- Falta de ruta
- ping -c 1 8.8.8.8 debe fallar (« Network is unreachable » o equivalente).
- Ausencia de DNS
- host exemple.org debe fallar; revisa /etc/resolv.conf: ningún servidor externo.
- Conexiones establecidas
- sudo ss -tunp state established : aucune connexion vers une adresse hors du réseau interne.
- Tráfico real
- Una captura con tcpdump en todas las interfaces, excluyendo la red interna, debe quedar vacía durante toda la sesión de uso.
#Auditoría periódica
| Frecuencia | Control | Objetivo |
|---|---|---|
| Mensual | ufw status verbose y lista de reglas; ss -tlnp | Detectar una regla añadida «para probar» |
| Cada transferencia | Huellas antes y después de la clave; análisis antivirus | Detectar un archivo modificado |
| En cada actualización de un componente | Volver a ejecutar las pruebas de aislamiento y revisar las variables sin conexión | Un nuevo componente puede añadir una llamada de salida |
| Semestral o anual | Reinstalación limpia a partir de imágenes verificadas; revisión de la amenaza | Eliminar el compromiso de seguridad acumulado |
#Preguntas frecuentes sobre el aislamiento físico de red (air-gap) de una máquina LLM
¿Basta con un firewall de salida para hablar de air-gap?+
¿Cómo actualizar Ollama en una máquina sin internet?+
¿Cómo transferir un modelo a la máquina aislada?+
¿Envía Ollama mis consultas al exterior?+
¿Es la memoria USB el eslabón débil?+
¿Se debe cifrar el disco de una máquina ya aislada?+
- Cifrar el disco de los modelos
- Lista de verificación de confidencialidad
- IA local en empresas: RGPD, soberanía y despliegue
- Importar un modelo GGUF de Hugging Face en Ollama
- Aprovechar al máximo un Mac Apple Silicon
- Fuente: FAQ Ollama, nube desactivable y ubicaciones
- Fuente: Ollama, importación de un modelo GGUF
- Fuente: Open WebUI, variables de entorno
- Fuente: USBGuard
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.