Skip to content
BotServBotServ
FirewallufwiptablesOllamaPuertoSeguridad de redSeguridad

Firewall para servicios de IA: asegurar puertos

Configuración de firewall para Ollama y servicios de IA locales: ufw, iptables, gestión de puertos y mejores prácticas.

S

schutzgeist

13 min read
Firewall para servicios de IA: asegurar puertos

Firewall para servicios de IA: Asegurar puertos

Qué cubre este artículo sobre firewalls

  • Cómo configurar y asegurar una firewall para servicios locales de IA como Ollama
  • La diferencia entre ufw e iptables y cuándo usar cada herramienta
  • Guía paso a paso para asegurar el puerto 11434 y otros puertos de servicios
  • Buenas prácticas para políticas default-deny, acceso VPN y superficie mínima de ataque
  • Errores comunes que sabotean tus reglas de firewall y cómo evitarlos

Introducción: firewall explicado de forma clara

Cuando ejecutas servicios locales de IA como Ollama en tu servidor, es probable que en algún momento un servicio esté escuchando en un puerto accesible desde otros dispositivos de tu red. Esto es conveniente porque puedes acceder a los modelos desde otras máquinas, pero también representa un riesgo si el servicio no requiere autenticación y cualquiera en la red puede enviar solicitudes.

Una firewall es tu primera línea de defensa. Controla qué tráfico de red llega hasta tus servicios. En Operación segura y específicamente en Seguridad de red, la configuración de firewall es fundamental antes de usar servicios de IA en producción.

Este artículo te muestra cómo construir una firewall con ufw e iptables, qué reglas tienen sentido para Ollama y cómo identificar fuentes de error comunes.

¿Por qué necesito una firewall?

Un ejemplo concreto: Ollama inicia por defecto y escucha en el puerto 11434. Si estableces la variable de entorno OLLAMA_HOST en 0.0.0.0, para hacer el servicio accesible desde la red, Ollama acepta solicitudes de cualquier dispositivo que pueda alcanzar tu servidor. Sin autenticación. Sin TLS. Sin rate-limiting.

En una red doméstica con tres dispositivos esto puede parecer aceptable. En una oficina, espacio de coworking o WLAN público se convierte en un problema. Cualquiera que conozca o adivine la dirección IP de tu servidor puede cargar modelos, ejecutar prompts y consumir recursos. En el peor caso, alguien usa tu servidor para generar contenido inapropiado bajo tu dirección IP.

Una firewall restringe quién puede establecer una conexión al puerto 11434. En lugar de confiar en todos en la red, solo permites acceso a direcciones IP específicas o a través de VPN. Todas las demás solicitudes se descartan antes de llegar a Ollama.

Firewall explicada brevemente

Una firewall es un software que filtra el tráfico de red basándose en reglas. Cada regla describe qué tráfico se permite o bloquea, basándose en criterios como IP origen, puerto destino, protocolo (TCP o UDP) e interfaz de red.

En sistemas Linux, la firewall funciona en el kernel a través del framework Netfilter. Las herramientas ufw e iptables son frontends que usas para definir reglas sin comunicarte directamente con el kernel.

  • ufw (Uncomplicated Firewall) es el frontend recomendado en Ubuntu. Simplifica la sintaxis y es adecuada para la mayoría de casos de uso.
  • iptables es la herramienta clásica y más poderosa. Ofrece control granular sobre cada fase del procesamiento de paquetes, pero requiere más conocimiento sobre las tablas y chains internas.

Ambas herramientas escriben en las mismas tablas de Netfilter. Lo que configuras con ufw se traduce internamente a reglas de iptables.

A quién está dirigido este artículo

Este artículo es para ti si ejecutas servicios locales de IA como Ollama en un servidor Linux y quieres asegurar que solo dispositivos autorizados puedan acceder. Deberías tener conocimientos básicos de línea de comandos y saber cómo conectarte a tu servidor por SSH. Experiencia previa con firewalls es útil pero no obligatoria, ya que cada paso se explica.

Términos importantes

TérminoSignificado
FirewallSoftware que filtra tráfico de red basándose en reglas
PuertoDirección numerada donde escucha un servicio, p. ej. 11434 para Ollama
ufwUncomplicated Firewall, frontend simplificado para reglas de firewall en Ubuntu
iptablesHerramienta clásica para configurar directamente las reglas de Netfilter en el kernel
0.0.0.0Dirección de enlace que incluye todas las interfaces de red
127.0.0.1Dirección de loopback, solo accesible localmente, no desde la red
AllowRegla que permite cierto tráfico de red
DenyRegla que bloquea cierto tráfico de red
RuleRegla individual de firewall con criterios definidos
Default PolicyComportamiento cuando ninguna regla se aplica, generalmente Allow o Deny

Comportamiento predeterminado de Ollama

Ollama se enlaza por defecto a 127.0.0.1:11434. Esto significa que solo procesos en la misma máquina pueden acceder al servicio. Desde otros dispositivos en la red, el puerto 11434 no es accesible. En esta configuración no necesitas reglas de firewall para Ollama porque el servicio no escucha hacia el exterior.

Esto cambia cuando quieres que Ollama esté disponible en la red. Estableces la variable de entorno OLLAMA_HOST en 0.0.0.0:11434, y Ollama escucha en todas las interfaces de red. Ahora el servicio es accesible desde cualquier dispositivo que pueda alcanzar tu servidor. Aquí es donde entra en juego la firewall.

Encontrarás detalles de configuración en el artículo sobre Configuración de Ollama y Acceso de red de Ollama.

Firewall con ufw

ufw viene preinstalado en Ubuntu pero generalmente está desactivado. Los siguientes pasos te muestran cómo activar la firewall y definir reglas para Ollama.

Paso 1: Instalar ufw y verificar estado

sudo apt update && sudo apt install ufw
sudo ufw status

La salida mostrará Status: inactive mientras la firewall no esté activa.

Paso 2: Establecer la política predeterminada

Antes de activar la firewall, defines la política predeterminada. La variante más segura es bloquear el tráfico entrante por defecto y permitir el saliente.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Paso 3: Permitir acceso SSH

Si activas la firewall ahora, se bloquearán todas las conexiones entrantes, incluyendo SSH. Esto te bloqueará el acceso si trabajas de forma remota. Por lo tanto, permite SSH primero.

sudo ufw allow ssh

Si ejecutas SSH en un puerto diferente, p. ej. 2222, especifícalo explícitamente:

sudo ufw allow 2222/tcp

Paso 4: Activar la firewall

sudo ufw enable

ufw te advertirá que las conexiones SSH existentes podrían interrumpirse. Confirma con y si permitiste SSH en el paso anterior.

Paso 5: Permitir Ollama solo para localhost

Si Ollama escucha en 127.0.0.1, no necesitas una regla adicional porque ufw permite el tráfico de loopback por defecto. Si Ollama escucha en 0.0.0.0 pero quieres restringir el acceso a un dispositivo específico, permites el puerto solo para esa dirección IP.

sudo ufw allow from 192.168.1.50 to any port 11434

Reemplaza 192.168.1.50 con la dirección IP de tu máquina de trabajo. Todos los demás dispositivos en la red no podrán conectarse al puerto 11434.

Paso 6: Verificar las reglas

sudo ufw status verbose

La salida lista todas las reglas activas con sus direcciones y direcciones IP de origen. Comprueba que solo los puertos y direcciones deseados estén permitidos.

Firewall con iptables

Si no utilizas ufw o necesitas un control más granular, configuras iptables directamente. La sintaxis es más compleja, pero ves exactamente qué reglas están activas en el kernel.

Mostrar reglas existentes

sudo iptables -L -n -v

La opción -L lista las reglas, -n evita la resolución de nombres para direcciones IP, y -v muestra estadísticas adicionales como contadores de paquetes.

Permitir tráfico de loopback

sudo iptables -A INPUT -i lo -j ACCEPT

Esta regla permite todo el tráfico a través de la interfaz de loopback lo, por lo que procesos locales como Ollama en 127.0.0.1 funcionan sin restricciones.

Permitir conexiones establecidas

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Las conexiones ya establecidas o relacionadas con una conexión existente se aceptan. Esto evita que se bloqueen las respuestas a solicitudes salientes.

Permitir SSH

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Permitir Ollama para una IP específica

sudo iptables -A INPUT -p tcp -s 192.168.1.50 --dport 11434 -j ACCEPT

Bloquear todo lo demás

sudo iptables -A INPUT -j DROP

Esta regla está al final de la cadena y descarta todos los paquetes que no coinciden con ninguna regla anterior. El orden es crucial, porque iptables procesa las reglas de arriba hacia abajo y se detiene en la primera coincidencia.

Guardar reglas permanentemente

Las reglas de iptables se pierden al reiniciar. Guárdalas de forma permanente con iptables-persistent:

sudo apt install iptables-persistent
sudo netfilter-persistent save

Mejores prácticas

Denegación predeterminada como punto de partida

Establece siempre la política predeterminada en Denegar para el tráfico entrante. Permite solo lo que necesitas explícitamente. El principio de superficie mínima de ataque reduce el riesgo de que un nuevo servicio sea accesible accidentalmente.

Específico en lugar de general

Permite puertos solo para direcciones IP o subredes concretas, no para todos. ufw allow 11434 abre el puerto a toda Internet si tu servidor tiene una IP pública. ufw allow from 192.168.1.0/24 to any port 11434 restringe el acceso a tu subred local.

VPN en lugar de apertura de puertos

Si quieres acceder a Ollama desde fuera de tu red, no abras el puerto en el router. Utiliza un VPN como Tailscale en su lugar, que establece una conexión cifrada entre tus dispositivos. El puerto permanece invisible hacia el exterior, y solo los participantes VPN autenticados pueden pasar.

Documentar reglas

Las reglas de firewall crecen con el tiempo. Comenta cada regla para que meses después sepas por qué existe. Con ufw usas prefijos en la descripción, con iptables ayuda un documento separado o la herramienta iptables-save con comentarios.

Revisar regularmente

Revisa tus reglas cada pocas semanas. Elimina reglas para servicios que ya no usas. Cada regla abierta es un vector potencial de ataque.

Ejemplo: hacer que Ollama sea seguro y accesible

Este ejemplo muestra el flujo completo para configurar Ollama de modo que solo tu computadora de trabajo pueda acceder.

Paso 1: Vincular Ollama a 0.0.0.0

Establece la variable de entorno en el archivo de servicio de Ollama:

sudo systemctl edit ollama.service

Añade estas líneas en el editor:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

Guarda y recarga la configuración:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Paso 2: Establecer una regla de firewall

Permite el puerto 11434 solo para tu computadora de trabajo:

sudo ufw allow from 192.168.1.50 to any port 11434

Paso 3: Probar el acceso

Prueba desde tu computadora de trabajo:

curl http://192.168.1.10:11434/api/tags

Reemplaza 192.168.1.10 con la dirección IP de tu servidor. Deberías recibir una respuesta JSON con los modelos instalados.

Prueba desde otro dispositivo en la red. La conexión debería agotarse el tiempo de espera o ser rechazada.

Paso 4: Opcionalmente, agregar un proxy inverso

Para mayor seguridad y cifrado TLS, coloca un proxy inverso frente a Ollama. El proxy termina TLS, proporciona autenticación y reenvía solicitudes internamente a Ollama. El firewall permite solo el puerto 443 para el proxy, mientras que el puerto 11434 permanece completamente cerrado.

Errores típicos

  • Bloquearte a ti mismo con SSH: La fuente de error más común. Si activas el firewall sin permitir SSH, pierdes acceso al servidor. Siempre permite SSH como primera regla.
  • Olvidar la política predeterminada: Sin una política predeterminada explícita, ufw puede estar en un estado ambiguo. Establece deny incoming y allow outgoing antes de activar.
  • Bloquear loopback: Una regla demasiado estricta puede bloquear el tráfico de loopback, impidiendo que procesos locales se comuniquen entre sí. Asegúrate de que 127.0.0.1 siempre esté permitido.
  • Ignorar el orden de las reglas: Con iptables, el orden es crucial. Una regla DROP al principio de la cadena bloquea todo, aunque una regla ACCEPT para el mismo puerto aparezca después.
  • Pasar por alto la IP pública: Si tu servidor tiene una IP pública y ejecutas ufw allow 11434 sin una IP de origen, Ollama es accesible desde toda Internet. Verifica siempre si tu servidor está detrás de un router o conectado directamente a Internet.
  • No guardar reglas permanentemente: Las reglas de iptables desaparecen al reiniciar. Usa iptables-persistent para guardarlas, de lo contrario tu servidor quedará sin protección después del próximo arranque.
  • Descuidar IPv6: Si IPv6 está activo, las reglas de iptables para IPv4 no se aplican automáticamente a IPv6. Configura ip6tables por separado o utiliza ufw, que cubre ambos protocolos.
  • Los puertos de Docker eluden el firewall: Docker manipula reglas de iptables directamente y puede pasar por alto tus reglas manuales. Si ejecutas Ollama en Docker, verifica si el puerto del contenedor está expuesto y usa redes de Docker en lugar de asignaciones de puertos.

Hardware, costos y seguridad

Un firewall no cuesta hardware adicional. Se ejecuta como software en tu servidor existente. Las herramientas ufw e iptables son código abierto y gratuitas. El único esfuerzo es tu tiempo para la configuración y revisión regular.

Desde el punto de vista de la seguridad, un firewall no es una panacea. Filtra el tráfico de red, pero no protege contra ataques que llegan a través de puertos permitidos. Si expones el puerto 11434 a un dispositivo e infectas ese dispositivo con malware, el firewall no sirve de nada. Es una capa en un concepto de seguridad multicapa, complementado por autenticación, cifrado y actualizaciones periódicas.

Enlaces relacionados

Preguntas frecuentes

¿Cuál es la diferencia entre ufw e iptables?

ufw es una interfaz simplificada que genera reglas de iptables en segundo plano. Funciona bien para escenarios estándar y es más legible. iptables ofrece control directo sobre las tablas y cadenas de Netfilter, permitiendo reglas más granulares, pero requiere más experiencia.

¿Una firewall también bloquea el tráfico saliente?

No por defecto en ufw. La política predeterminada para tráfico saliente es allow. Puedes cambiarla a deny, pero entonces necesitarás autorizar explícitamente cada puerto saliente, lo que aumenta significativamente la carga administrativa.

¿Necesito una firewall si Ollama escucha en 127.0.0.1?

No. Si Ollama está vinculado solo a 127.0.0.1, el servicio no es accesible desde la red. Una regla de firewall para el puerto 11434 no es necesaria en este caso. Sin embargo, la firewall protege otros servicios en tu servidor que escuchan hacia el exterior.

¿Cómo pruebo si mis reglas de firewall funcionan?

Usa curl o nc desde otro dispositivo para verificar si el puerto es accesible. Un timeout o una conexión rechazada indica que la firewall está bloqueando el tráfico. Una respuesta exitosa confirma que la regla está activa.

nc -zv 192.168.1.10 11434

¿Qué sucede si desactivo ufw?

sudo ufw disable elimina todas las reglas activas del kernel y no bloquea más tráfico. Las reglas permanecen guardadas en la configuración y se restauran cuando vuelves a activar ufw.

¿Puedo usar ufw e iptables simultáneamente?

Sí, pero con cuidado. ufw genera reglas de iptables, y las reglas manuales de iptables pueden entrar en conflicto con ellas. Si usas ambas, verifica la cadena completa de reglas con iptables -L -n -v para asegurar que no haya reglas contradictorias.

¿Cómo aseguro Ollama para acceso remoto a través de Internet?

No abras el puerto 11434 en el router. Usa una VPN como Tailscale, que establece un túnel cifrado entre tu dispositivo y el servidor. El puerto permanece invisible hacia el exterior, y solo los participantes VPN autenticados pueden acceder.

¿Por qué mi regla de ufw para Ollama no funciona?

Si Ollama corre en Docker, Docker puede eludir las reglas de ufw porque inserta sus propias reglas de iptables para mapeos de puertos. Verifica con iptables -L -n -v si Docker ha abierto el puerto directamente, y usa redes Docker en lugar de mapeos de puertos.

¿Debo configurar reglas IPv6 por separado?

Sí con iptables, porque solo maneja IPv4. Debes configurar ip6tables por separado. ufw maneja IPv4 e IPv6 conjuntamente, siempre que la opción IPV6=yes esté establecida en el archivo /etc/default/ufw.

¿Cuál es el costo de operar una firewall?

Ninguno. ufw e iptables son software de código abierto y vienen preinstalados en la mayoría de distribuciones Linux. El único esfuerzo es tu tiempo para la configuración y el mantenimiento.

¿Con qué frecuencia debo revisar mis reglas de firewall?

Cada pocas semanas o después de cualquier cambio en tus servicios. Elimina reglas para servicios que ya no usas y verifica que nuevos servicios no hayan abierto puertos accidentalmente.

Fuentes

  • Ubuntu Documentation, Uncomplicated Firewall
  • Ollama Documentation, Configuration and Environment Variables
  • Netfilter Project, iptables Documentation
  • Tailscale Documentation, Access Controls
Volver al blog
Share:

Entradas relacionadas