Qué es un firewall y cómo proteger los puertos de un servidor Linux
Publicado el 2026-10-20 por frfrand
Aprendé qué filtra un firewall, cómo usar UFW sin perder el acceso SSH y por qué abrir solo los puertos necesarios reduce riesgos.

Un firewall o cortafuegos es un mecanismo que permite o bloquea tráfico de red según reglas definidas. En un servidor Linux se utiliza para reducir qué servicios quedan accesibles desde Internet o desde una red privada. No elimina las vulnerabilidades de una aplicación, pero limita una parte importante de la superficie de exposición.
Si tu VPS aloja una web, una base de datos y un panel interno, probablemente no quieras que cualquier persona pueda conectarse directamente a los tres. El firewall ayuda a establecer esa diferencia.
¿Qué revisa un firewall?
Las reglas pueden tener en cuenta direcciones IP de origen o destino, protocolos como TCP y UDP, puertos y el estado de las conexiones. Algunos productos más avanzados inspeccionan información adicional, pero no todos los firewalls entienden el contenido de una petición web.
En Linux, el subsistema Netfilter del kernel participa en el filtrado. Herramientas como nftables o iptables permiten gestionar reglas, mientras que ufw ofrece una interfaz más sencilla para tareas habituales.
Pensalo como la recepción de un edificio: puede decidir quién entra por qué puerta. Eso no garantiza que una persona autorizada nunca haga algo indebido dentro.
Un ejemplo concreto con tres servicios
Imaginá que tenés:
- Nginx escuchando en los puertos 80 y 443 para la web pública.
- SSH escuchando en el 22 para administración.
- PostgreSQL escuchando en el 5432 para la aplicación.
Una configuración razonable podría permitir 80 y 443 desde Internet, restringir SSH a una red administrativa y evitar que PostgreSQL quede accesible públicamente. La aplicación y la base de datos pueden comunicarse por una interfaz local o red privada.
La decisión exacta depende de tu arquitectura. No copies una lista de puertos de otro proyecto sin entender cuáles necesitas.
¿Cómo ver el estado del firewall con UFW?
En Ubuntu Server, UFW suele estar disponible como herramienta sencilla de administración. Primero inspecciona el estado:
sudo ufw status verbose
Si el firewall aparece inactivo, no lo actives a ciegas mientras estás conectado por SSH. Podrías bloquear tu propio acceso si no existe una regla adecuada.
Antes de cambiar nada, comprueba el puerto SSH real, tu ruta de administración, las reglas del proveedor y si dispones de una consola de recuperación.
Un ejemplo de reglas, no una receta universal
Para un servidor con SSH en el puerto estándar y una web pública, estas órdenes ilustran el concepto:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status numbered
Solo después de verificar el acceso y el entorno podrías considerar activar UFW con sudo ufw enable. Si administras SSH desde una IP fija, es preferible estudiar una regla que limite el origen, por ejemplo sudo ufw allow from 203.0.113.10 to any port 22 proto tcp (esa dirección es solo un ejemplo de documentación, no tu IP real).
Un error frecuente es permitir 22/tcp desde todo Internet porque resulta cómodo y olvidarse de revisar quién necesita ese acceso.
¿Qué pasa con Docker y los puertos publicados?
Los contenedores añaden una capa de redes y reglas que puede modificar cómo se expone el tráfico. Dependiendo de la configuración, publicar un puerto de Docker puede interactuar con reglas de firewall de maneras inesperadas.
No des por hecho que UFW por sí solo restringirá todos los puertos publicados por contenedores. Revisá la documentación de tu motor de contenedores, probá desde otra máquina y comprobá qué interfaces están escuchando.
Para una aplicación interna, suele ser mejor enlazar el servicio a una interfaz privada o a localhost y publicarlo solo mediante el proxy adecuado.
Firewall del servidor y firewall del proveedor
Un VPS puede tener reglas en varias capas: dentro del sistema operativo, en la infraestructura del proveedor y en un balanceador o proxy de entrada.
Estas capas pueden complementarse, pero también complicar el diagnóstico. Si una conexión falla, revisá el servicio, su interfaz de escucha, las reglas del host y las reglas externas. Un puerto permitido en UFW no necesariamente está accesible si otro firewall lo bloquea.
¿Un firewall evita ataques DDoS o SQL injection?
No por sí solo. Un firewall de host puede filtrar conexiones, pero un ataque volumétrico puede saturar el enlace antes de que el tráfico llegue al servidor. Para eso suelen necesitarse defensas de red aguas arriba.
Tampoco detecta automáticamente una consulta SQL maliciosa dentro de una petición HTTPS permitida. La seguridad de aplicaciones requiere validaciones, consultas parametrizadas, controles de acceso y otras medidas.
Podés ampliar este tema con qué es un ataque DDoS y por qué no conviene usar root para todo.
Una comprobación defensiva que vale la pena repetir
Después de cada despliegue importante, revisá qué servicios escuchan, en qué interfaces y qué puertos quedan expuestos. En Linux, ss -tulpen puede ayudarte a inspeccionar sockets, aunque para comprobar accesibilidad externa necesitás una prueba desde otra ubicación autorizada.
Documentá los puertos imprescindibles y eliminá reglas que ya no se utilizan. Un firewall bien configurado es uno que refleja los servicios reales, no una colección de excepciones acumuladas.
¿Y en ArduMaker?
Cuando alojes una aplicación en un VPS de ArduMaker, sigue siendo necesario definir qué puertos deben ser públicos y cuáles deben quedar en redes privadas. Gestionar un despliegue desde una plataforma no sustituye revisar el acceso de red del sistema y de cada servicio.
En resumen: empieza por identificar los servicios que deben recibir tráfico, permite únicamente los accesos necesarios y comprueba las reglas sin perder la conexión de administración.
Fuentes oficiales: Firewall en Ubuntu Server · Netfilter en la documentación de Ubuntu · Redes y publicación de puertos de Docker.
