- Establecimiento de una política de denegación por defecto para reducir la superficie de ataque.
- Configuración de reglas específicas para servicios críticos como SSH, HTTP y HTTPS.
- Restricción de accesos sensibles mediante el filtrado por direcciones IP y subredes.
- Gestión de frameworks avanzados y resolución de conflictos de red con Docker.
Cuando montamos un servidor en Linux, es muy habitual dejarse llevar por la emoción de instalar el software, configurar la base de datos y lanzar la web al aire, olvidando que exponer un equipo a internet sin protección es como dejar la puerta de casa abierta de par en par. En cuestión de minutos, los bots y escáneres automatizados empezarán a dar golpes en tus puertos buscando cualquier rendija para entrar, por lo que cerrar todo lo que no sea estrictamente necesario es la primera línea de defensa real.
Para no tener que pelearse con la sintaxis críptica de iptables, contamos con herramientas como UFW (Uncomplicated Firewall), que simplifica la gestión del tráfico de red mediante comandos sencillos. En esta guía vamos a desgranar paso a paso cómo blindar tu servidor, desde la configuración básica hasta el uso de frameworks más avanzados como nftables, asegurando que tu infraestructura sea robusta y no te quedes bloqueado fuera de tu propia máquina en el proceso.
¿Qué es exactamente el Firewall y por qué es vital?

Imagina que el firewall es el portero de una discoteca; él decide quién pasa y quién se queda fuera basándose en una lista de invitados. Técnicamente, se encarga de regular el flujo de datos entrantes y salientes, permitiendo solo aquellas conexiones relacionadas con los servicios que ofrecemos (como el tráfico web o la gestión remota) y denegando el resto.
Tener un cortafuegos bien ajustado ayuda a reducir la superficie de ataque, evitando que servicios internos, paneles de administración o bases de datos queden expuestos accidentalmente. No sustituye a otras medidas de seguridad en Linux y autenticación fuerte, pero es el cimiento sobre el cual se construye un servidor seguro, ayudando incluso a mitigar ataques de denegación de servicio (DDoS) y manteniendo la estabilidad del sistema.
Primeros pasos con UFW: Instalación y Estado

UFW suele venir preinstalado en distribuciones como Ubuntu, pero si por algún motivo no lo tienes, puedes instalarlo rápidamente desde los repositorios oficiales. En sistemas basados en Debian, basta con ejecutar sudo apt install ufw para tenerlo listo. Una vez instalado, es fundamental comprobar si está activo o inactivo con el comando sudo ufw status.
Por defecto, el firewall suele estar desactivado para evitar que el administrador pierda el acceso al servidor antes de configurar las reglas. Antes de darle al interruptor de encendido, debemos definir qué aplicaciones queremos habilitar. Puedes listar los perfiles disponibles en tu sistema usando sudo ufw app list, lo que te permitirá ver servicios como OpenSSH o Apache sin tener que recordar los números de puerto.
La Regla de Oro: No te bloquees el acceso SSH

Este es el error más típico y doloroso para cualquier administrador. Si activas el firewall en un servidor remoto sin haber permitido primero el puerto de gestión, perderás la conexión instantáneamente y te quedarás fuera. Por ello, antes de cualquier otra acción, debes ejecutar sudo ufw allow OpenSSH o, si usas un puerto personalizado (por ejemplo, el 2222), el comando sudo ufw allow 2222/tcp.
Si alguna vez cometieras la imprudencia de bloquearte, la única solución es recurrir a la consola VNC o acceso serie que ofrece tu proveedor de hosting. Desde allí puedes entrar al sistema y ejecutar sudo ufw disable para recuperar el control. Para evitar sustos, una buena práctica es abrir una segunda terminal y probar la conexión antes de cerrar la sesión actual.
Configurando el tráfico web y servicios comunes

Si tu servidor aloja una página web, necesitarás abrir los puertos 80 (HTTP) y 443 (HTTPS). Puedes hacerlo de forma individual o utilizando perfiles predefinidos. Por ejemplo, si usas Apache, el comando sudo ufw allow ‘Apache Full’ abre ambos puertos de una sola vez. Si prefieres Nginx, el equivalente sería sudo ufw allow ‘Nginx Full’.
Para otros servicios específicos, puedes abrir puertos concretos indicando el protocolo. Para un panel de control en el puerto 8080, usaríamos sudo ufw allow 8080/tcp, mientras que para un servicio UDP, como WireGuard en el puerto 51820, ejecutaríamos sudo ufw allow 51820/udp. Una vez que todas las reglas necesarias estén creadas, ya podemos activar el firewall definitivamente con sudo ufw enable.
Políticas avanzadas y restricciones por IP
La configuración más sensata para un servidor es aplicar una política de denegación por defecto para el tráfico entrante y permitir todo el tráfico saliente. Esto se logra con los comandos sudo ufw default deny incoming y sudo ufw default allow outgoing. De este modo, cualquier conexión que no haya sido explícitamente autorizada será descartada.
Para elevar el nivel de seguridad, es recomendable restringir el acceso por IP. En lugar de abrir el puerto SSH a todo el mundo, puedes hacer que solo tu dirección IP tenga acceso: sudo ufw allow from to any port 22 proto tcp. Esto es especialmente crítico para las bases de datos como MySQL (puerto 3306) o PostgreSQL (puerto 5432), que jamás deben estar abiertas a internet, sino limitadas a IPs confiables o redes privadas.
Gestión, Limpieza y Auditoría de Reglas
A medida que el servidor evoluciona, algunas reglas dejan de ser útiles. Para borrarlas, puedes usar el comando de borrado directo, como sudo ufw delete allow 80/tcp. Sin embargo, es mucho más cómodo usar la vista numerada con sudo ufw status numbered, lo que te permite eliminar una regla simplemente indicando su índice, por ejemplo: sudo ufw delete 3.
Para aquellos que quieren combatir los ataques de fuerza bruta, UFW ofrece una función de limitación de tasa. Al ejecutar sudo ufw limit ssh, el firewall denegará conexiones de una IP que intente entrar demasiadas veces en un corto periodo. Para un monitoreo más profundo, puedes activar los registros con sudo ufw logging on y revisar los intentos bloqueados en el archivo /var/log/ufw.log.
Saltando al siguiente nivel: nftables y Docker
Para administradores que necesitan un control granular o trabajan con contenedores, nftables es la evolución natural. A diferencia de UFW, que es una interfaz simplificada, nftables permite crear tablas y cadenas con una sintaxis más potente. Es capaz de gestionar el tráfico dual-stack (IPv4 e IPv6) de forma más eficiente y ofrece sets dinámicos para limitar la tasa de conexiones con mucha más precisión que el comando ‘limit’ de UFW.
Un punto crítico es la relación con Docker. Es fundamental saber que Docker ignora las reglas de UFW porque manipula iptables directamente. Si publicas un puerto en un contenedor, quedará expuesto al mundo aunque UFW diga que está bloqueado. Para solucionar esto, se recomienda usar nftables o configurar Docker en Linux con seguridad mediante la cadena DOCKER-USER para forzar el filtrado del tráfico que se dirige a los contenedores.
Resumen de comandos esenciales
- Estado y Activación:
ufw statuspara ver el estado yufw enablepara activar. - Permisos básicos:
ufw allow 22/tcp(SSH),ufw allow 80/tcp(HTTP) yufw allow 443/tcp(HTTPS). - Restricciones:
ufw deny frompara bloquear un atacante yufw allow from to any portpara accesos privados. - Mantenimiento:
ufw status numberedpara listar reglas yufw resetpara borrar toda la configuración y empezar de cero.
Implementar un sistema de filtrado de paquetes es la base de cualquier servidor profesional, permitiéndonos decidir con precisión qué servicios quedan expuestos y cuáles permanecen ocultos. Combinando una política restrictiva por defecto, la limitación de accesos mediante IPs conocidas y herramientas complementarias como Fail2Ban, logramos reducir drásticamente la superficie de ataque y proteger los datos críticos frente a los constantes escaneos de la red.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.