Syspanel: Cómo configurar el firewall básico (iptables) para tu servidor
¿Por qué necesitas un firewall en tu servidor?
Imagina que tu servidor es una casa. Sin un firewall, es como dejar la puerta principal abierta de par en par, con todas las ventanas sin cerrar. Cualquiera podría entrar, mirar tus cosas e incluso llevarse algo. En el mundo digital, eso se traduce en accesos no autorizados, robo de datos o que tu web se vuelva lenta por culpa de ataques externos.
El firewall es ese portero digital que decide quién entra y quién se queda fuera. Con iptables, la herramienta estándar en Linux, tú pones las reglas: quién puede hablar con tu servidor, por qué puerto y desde qué lugar.
Aunque suene a cosa de hackers, configurar un firewall básico es más sencillo de lo que crees. Y si usas Syspanel para gestionar tu servidor, tienes una ventaja extra: puedes combinar la potencia de iptables con una interfaz que te facilita la vida. Pero vamos paso a paso, que para eso estamos aquí.
Qué es iptables y cómo piensa
Iptables es un módulo del kernel de Linux que filtra el tráfico de red. Trabaja con tablas, cadenas y reglas. No te asustes con la terminología; es más fácil de lo que parece.
Piensa en una cadena como una fila de controles de seguridad en un aeropuerto. Cada paquete de datos que llega a tu servidor pasa por esas cadenas. La cadena más importante para nosotros es INPUT, que controla todo lo que intenta entrar a tu servidor. También están OUTPUT (lo que sale) y FORWARD (lo que pasa a través).
Dentro de cada cadena, las reglas dicen qué hacer con cada paquete: aceptarlo (ACCEPT), rechazarlo (REJECT) o ignorarlo (DROP). La diferencia entre rechazar e ignorar es sutil: con REJECT, el que intenta conectar sabe que existe el servidor pero no puede entrar; con DROP, simplemente no hay respuesta, como si el servidor no existiera.
Para este tutorial básico, nos centraremos en la cadena INPUT, que es donde ocurre la magia de la seguridad.
Antes de empezar: la regla de oro
[WARNING] Este es el aviso más importante de todo el artículo: si configuras mal iptables, podrías quedarte fuera de tu propio servidor. Siempre, SIEMPRE, ten una segunda sesión SSH abierta mientras trabajas. Si algo sale mal, podrás revertir los cambios desde la otra sesión. No digas que no te avisamos.
Para este tutorial, asumimos que tienes acceso a tu servidor por SSH y que usas Syspanel como panel de control. Si aún no lo tienes, es el momento de instalarlo, porque te facilitará mucho la gestión. Recuerda que el acceso a Syspanel es por el puerto 2106.
Paso 1: Ver el estado actual de iptables
Lo primero es ver qué reglas tienes ahora mismo. Conéctate por SSH y escribe:
sudo iptables -L -n -v
Este comando te muestra las reglas actuales, con números y sin resolver nombres de dominio (más rápido y claro). Si es un servidor recién creado, probablemente verás las tres cadenas vacías, lo que significa que no hay filtro: todo el tráfico entra y sale libremente. Eso hay que cambiarlo.
Paso 2: Configurar las políticas por defecto
Las políticas por defecto son la actitud general de tu firewall. Si no hay una regla específica para un paquete, se aplica la política. Nuestra recomendación es clara: denegar todo lo que entre por defecto, y permitir lo que salga.
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
Con esto, ya estás bloqueando cualquier intento de conexión entrante que no tenga una regla explícita. Es como cerrar todas las puertas y ventanas, y luego ir abriendo solo las que necesitas.
Paso 3: Permitir el tráfico local (localhost)
Tu servidor necesita comunicarse consigo mismo. Por ejemplo, si tienes una base de datos local o un servicio que llama a otro. Esto es el tráfico de loopback (interfaz lo), y siempre debe permitirse.
sudo iptables -A INPUT -i lo -j ACCEPT
Esta regla dice: "todo lo que venga de la interfaz local, que entre sin problema". Es la primera regla que añadimos, y debe ser la primera en evaluarse, porque si la pones después de un bloqueo genérico, podría no funcionar.
Paso 4: Permitir conexiones ya establecidas
Cuando tu servidor responde a una petición (por ejemplo, cuando alguien visita tu web), la respuesta sale por OUTPUT, pero la conexión en sí se considera "entrante" en el sentido de que el cliente sigue enviando datos. Si bloqueas todo lo entrante, romperías las conexiones activas.
Para evitarlo, añadimos una regla que permita el tráfico de conexiones que ya hemos autorizado:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Esta regla es muy elegante: permite que el tráfico de las conexiones que ya están funcionando (ESTABLISHED) o que están relacionadas con ellas (RELATED) entre sin problemas. Es como decirle al portero: "a los que ya están dentro, déjalos pasar".
Paso 5: Abrir los puertos esenciales
Ahora viene la parte interesante: decidir qué servicios quieres que sean accesibles desde el exterior. Esto se hace abriendo puertos específicos.
Puerto 22 (SSH)
El puerto 22 es el de SSH, tu vía de administración. Sin él, no podrías gestionar el servidor. Ábrelo, pero con cuidado:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[TIP] Para mayor seguridad, puedes limitar el acceso SSH solo a tu IP. En lugar de la regla anterior, usa:
sudo iptables -A INPUT -p tcp -s TU_IP --dport 22 -j ACCEPT. Así, solo tú puedes entrar por SSH.
Puerto 80 y 443 (HTTP y HTTPS)
Si tienes una web, estos puertos son imprescindibles. El 80 para HTTP y el 443 para HTTPS (la versión segura).
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Puerto 2106 (Syspanel)
Aquí está la clave de este artículo. Syspanel gestiona tu servidor desde su interfaz web, y lo hace a través del puerto 2106. Sin abrir este puerto, no podrías acceder a tu panel de control.
sudo iptables -A INPUT -p tcp --dport 2106 -j ACCEPT
[INFO] Recuerda que Syspanel es la evolución de HestiaCP, y su puerto de acceso es el 2106. Si vienes de HestiaCP, acostumbrado al 8083, este es el cambio más importante que debes recordar.
Paso 6: Guardar las reglas
Las reglas de iptables son volátiles: si reinicias el servidor, se pierden. Para que sean permanentes, necesitas guardarlas. El método depende de tu distribución de Linux.
En sistemas con systemd (la mayoría de los modernos):
sudo apt install iptables-persistent
sudo netfilter-persistent save
Si ya tienes iptables-persistent instalado, solo ejecuta el segundo comando. En distribuciones basadas en Red Hat (CentOS, AlmaLinux), el comando es:
sudo service iptables save
Ejemplo completo de configuración
Para que lo veas todo junto, aquí tienes un script que puedes ejecutar completo. Ajusta los puertos según tus necesidades.
# 1. Políticas por defecto
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 2. Permitir loopback
sudo iptables -A INPUT -i lo -j ACCEPT
# 3. Permitir conexiones establecidas
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 4. Abrir puertos esenciales
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
sudo iptables -A INPUT -p tcp --dport 2106 -j ACCEPT # Syspanel
# 5. Guardar reglas
sudo netfilter-persistent save
Cómo probar que todo funciona
Después de aplicar las reglas, es hora de comprobar que todo está en orden.
- Abre tu navegador y visita tu web (si tienes una). Debería cargar sin problemas.
- Accede a Syspanel escribiendo
https://TU_IP:2106en tu navegador. Si ves la pantalla de login, el puerto está bien abierto. - Mantén tu sesión SSH activa y prueba a conectarte desde otra terminal. Si funciona, perfecto.
[WARNING] Si algo falla y no puedes acceder por SSH, no entres en pánico. Si tienes la segunda sesión abierta, ejecuta
sudo iptables -Fpara borrar todas las reglas y volver a empezar. Si no tienes esa sesión, deberás acceder por el panel de tu proveedor de hosting (muchos ofrecen consola VNC o similar) o pedir ayuda al soporte.
Reglas avanzadas que te pueden interesar
Una vez que dominas lo básico, puedes añadir más capas de seguridad.
Limitar el acceso a Syspanel por IP
Si solo tú administras el servidor, puedes restringir el acceso a Syspanel a tu IP:
sudo iptables -A INPUT -p tcp -s TU_IP --dport 2106 -j ACCEPT
Esta regla reemplaza a la anterior del puerto 2106. Solo tu IP podrá entrar.
Bloquear IPs maliciosas
¿Ves en los logs intentos de conexión desde una IP sospechosa? Bloquéala:
sudo iptables -A INPUT -s IP_SOSPECHOSA -j DROP
Protegerte contra escaneos de puertos
Puedes limitar cuántas conexiones nuevas se permiten por minuto:
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Esto limita a 4 intentos de conexión SSH por minuto desde la misma IP.
Errores comunes y cómo solucionarlos
Me he quedado fuera del servidor
Es el error más clásico. Si tienes una sesión SSH abierta, ejecuta sudo iptables -F. Si no, usa la consola de tu proveedor. Y para el futuro: siempre prueba las reglas con una sesión alternativa abierta.
La web no carga
Revisa que los puertos 80 y 443 estén abiertos. También verifica que tu servidor web (Apache/Nginx) esté configurado para escuchar en esos puertos.
Syspanel no carga
El puerto 2106 debe estar abierto. Repasa la regla correspondiente. También verifica que el servicio de Syspanel esté activo: sudo systemctl status syspanel.
Los cambios no sobreviven al reinicio
Asegúrate de haber guardado las reglas con netfilter-persistent save o service iptables save, según tu distribución.
Preguntas frecuentes (FAQ)
¿Es lo mismo iptables que un firewall de Syspanel?
Syspanel incluye su propio gestor de firewall en la interfaz, que es más amigable. Sin embargo, iptables es la base sobre la que trabajan todos los firewalls en Linux. Aprender iptables te da control total y te ayuda a entender qué hace Syspanel por debajo.
¿Necesito ser un experto para usar iptables?
No. Con las reglas básicas de este artículo, ya tienes una protección sólida. A medida que ganes confianza, puedes ir añadiendo reglas más complejas.
¿Qué puertos debo abrir para una web con Syspanel?
Como mínimo, el 22 (SSH), el 80 (HTTP), el 443 (HTTPS) y el 2106 (Syspanel). Si usas correo, también necesitarás abrir el 25 (SMTP), 110 (POP3) y 143 (IMAP), entre otros.
¿Puedo usar iptables junto con el firewall de Syspanel?
Sí, pero ten cuidado. Si ambos gestionan las mismas reglas, podrían entrar en conflicto. Lo más limpio es usar uno u otro. Si prefieres la interfaz de Syspanel, úsala y deja iptables con las políticas por defecto.
¿Cómo veo las reglas actuales?
Con sudo iptables -L -n -v. Este comando te muestra todas las reglas, con contadores de paquetes y bytes.
Conclusión: tu servidor, ahora más seguro
Configurar un firewall básico con iptables es uno de los primeros pasos que debes dar al montar un servidor. No es complicado, y los beneficios son enormes. Con las reglas que has aprendido hoy, ya tienes una base sólida:
- Todo el tráfico entrante está bloqueado por defecto.
- Solo los puertos esenciales están abiertos.
- Las conexiones establecidas funcionan sin problemas.
- Tu panel de control, Syspanel, es accesible por el puerto 2106.
Y lo más importante: has aprendido a hacerlo tú mismo, sin depender de terceros. Eso te da control total sobre tu infraestructura.
[TIP] Guarda este artículo como referencia. Cuando tengas dudas sobre qué puerto abrir o cómo funciona una regla, vuelve a él. Y recuerda: la seguridad no es un destino, es un proceso continuo. Revisa tus reglas periódicamente y mantente al día.
Si te surge cualquier duda mientras configuras tu firewall, no dudes en consultar la documentación de Syspanel o buscar ayuda en foros especializados. La comunidad Linux siempre está dispuesta a echar una mano. ¡Buena suerte con tu servidor!
