Syspanel: Guía para configurar un firewall básico (iptables)
¿Qué es un firewall y por qué tu servidor lo necesita?
Cuando tienes un servidor con Syspanel, este queda expuesto a Internet. Eso significa que cualquier persona en el mundo podría intentar conectarse a él. Un firewall actúa como un portero de discoteca: decide quién entra, quién sale y quién se queda esperando fuera.
En este artículo vamos a explicarte, paso a paso y sin tecnicismos innecesarios, cómo configurar un firewall básico usando iptables en tu servidor Syspanel. Al final, tendrás un servidor mucho más seguro y entenderás los conceptos clave para proteger tu inversión.
[INFO] Syspanel es un panel de control de hosting que incluye herramientas de administración. Su acceso principal se realiza por el puerto 2106 (https://tu-servidor:2106). Todo lo que configures con iptables no interferirá con este puerto si sigues las instrucciones correctamente.
¿Qué es iptables y cómo funciona?
iptables es el firewall que viene integrado en la mayoría de sistemas Linux. Funciona mediante reglas que se agrupan en cadenas. Cada paquete de datos que llega a tu servidor pasa por estas cadenas y se compara con las reglas. Si coincide, se aplica una acción (aceptar, rechazar, redirigir, etc.).
Las tres cadenas principales son:
- INPUT: Controla el tráfico que entra al servidor.
- OUTPUT: Controla el tráfico que sale del servidor.
- FORWARD: Controla el tráfico que pasa a través del servidor (como un router).
Para este tutorial, nos centraremos en INPUT y OUTPUT, que son las que necesitas para proteger tu servidor de accesos no deseados.
[TIP] Piensa en iptables como una lista de instrucciones. El servidor lee la lista de arriba a abajo y aplica la primera regla que coincida. Por eso, el orden de las reglas es crítico.
Requisitos previos antes de empezar
Antes de lanzarte a escribir reglas, asegúrate de tener esto listo:
- Acceso SSH a tu servidor con permisos de administrador (root o usuario con sudo).
- Conocer tu IP pública para no bloquearte accidentalmente. Puedes averiguarla con:
curl ifconfig.me - Tener a mano los puertos que usas: SSH (22), Syspanel (2106), HTTP (80), HTTPS (443), MySQL (3306), etc.
[WARNING] Si te equivocas con una regla, podrías quedarte sin acceso a tu servidor. Siempre ten una sesión SSH abierta mientras pruebas, y si algo sale mal, podrás revertir los cambios desde esa sesión.
Paso 1: Ver el estado actual de iptables
Lo primero es ver qué reglas existen actualmente. Ejecuta:
sudo iptables -L -n -v
Probablemente verás que no hay reglas o que todas las políticas están en ACCEPT (aceptar todo). Esto significa que tu servidor está abierto al mundo, algo que no es nada recomendable.
Paso 2: Configurar las políticas por defecto
Las políticas por defecto son lo que ocurre cuando un paquete no coincide con ninguna regla. Lo más seguro es:
- INPUT: DROP (descartar todo lo que no esté permitido).
- OUTPUT: ACCEPT (permitir todo lo que sale).
- FORWARD: DROP (no queremos actuar como router).
Ejecuta estos comandos:
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
[WARNING] A partir de este momento, tu servidor bloqueará todo el tráfico entrante. No te preocupes: ahora vamos a añadir las reglas para permitir lo necesario.
Paso 3: Permitir conexiones ya establecidas
Cuando tu servidor envía una respuesta a una petición, esa respuesta no debe ser bloqueada. Para ello, añadimos una regla que permita el tráfico relacionado con conexiones ya establecidas:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Esta regla es esencial. Sin ella, aunque abras puertos, las respuestas no llegarían a tu navegador o cliente SSH.
Paso 4: Permitir el acceso local (loopback)
El tráfico interno del servidor (por ejemplo, entre aplicaciones) usa la interfaz lo. Siempre debemos permitirlo:
sudo iptables -A INPUT -i lo -j ACCEPT
Si no haces esto, algunas aplicaciones internas podrían fallar sin razón aparente.
Paso 5: Abrir los puertos esenciales
Ahora viene la parte interesante. Debes abrir los puertos que realmente necesitas. Aquí tienes los más comunes:
5.1. Puerto SSH (22)
Necesitas mantener tu acceso remoto:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[TIP] Si cambiaste el puerto SSH, usa ese número. Nunca dejes el 22 abierto si tu servidor está en Internet y no usas llaves SSH.
5.2. Puerto Syspanel (2106)
Este es el puerto de acceso a tu panel de control:
sudo iptables -A INPUT -p tcp --dport 2106 -j ACCEPT
[INFO] Recuerda que Syspanel es tu panel de administración. Sin esta regla, no podrás acceder a la interfaz web en
https://tu-servidor:2106.
5.3. Puertos web (80 y 443)
Si alojas sitios web, necesitas permitir HTTP y HTTPS:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
5.4. Puertos adicionales (opcional)
- MySQL/MariaDB (3306): solo si necesitas acceso remoto a la base de datos (no recomendado).
- FTP (21, 20): si usas FTP, aunque es mejor usar SFTP.
- Puertos de email (25, 110, 143, 587, 993, 995): si tu servidor gestiona correo.
Ejemplo para MySQL:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
[WARNING] Si no necesitas un puerto, no lo abras. Cada puerto abierto es una posible vía de ataque.
Paso 6: Limitar el acceso SSH a tu IP (opcional pero muy recomendable)
Una práctica excelente es limitar el puerto SSH solo a tu IP. Así, aunque alguien intente conectarse, no podrá.
sudo iptables -A INPUT -p tcp --dport 22 -s TU_IP_PUBLICA -j ACCEPT
Sustituye TU_IP_PUBLICA por tu IP real. Si tu IP cambia (por ejemplo, con conexiones dinámicas), tendrás que actualizar la regla.
[TIP] También puedes hacer esto para el puerto 2106. Así solo tú podrás acceder al panel de Syspanel.
Paso 7: Protegerte contra ataques comunes
Un firewall no solo bloquea puertos; también puede mitigar ataques. Aquí tienes algunas reglas avanzadas pero fáciles de entender:
7.1. Bloquear paquetes inválidos
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
Esto descarta paquetes malformados o corruptos que suelen usarse en ataques.
7.2. Limitar conexiones SSH simultáneas
Evita fuerza bruta limitando conexiones por minuto:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Esto permite solo 4 intentos de conexión SSH por minuto. Después, bloquea temporalmente.
7.3. Bloquear ping (ICMP) si quieres ser invisible
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
[INFO] Bloquear el ping no te hace más seguro, pero evita que tu servidor responda a escaneos básicos.
Paso 8: Guardar las reglas para que persistan
Las reglas de iptables se pierden al reiniciar el servidor. Para guardarlas, usa:
sudo apt install iptables-persistent
sudo netfilter-persistent save
En distribuciones basadas en Red Hat (CentOS, AlmaLinux), puedes usar:
sudo service iptables save
Comprueba que las reglas se cargan al inicio:
sudo systemctl enable netfilter-persistent
Paso 9: Verificar que todo funciona
Después de aplicar las reglas, verifica:
- Acceso SSH: Abre una nueva terminal y conéctate. Si funciona, todo bien.
- Acceso a Syspanel: Abre tu navegador y entra a
https://tu-servidor:2106. - Acceso a tus sitios web: Carga una página de tu servidor.
Si todo funciona, ¡enhorabuena! Tu firewall está operativo.
Para ver las reglas activas:
sudo iptables -L -n -v
Solución de problemas comunes
"Me he bloqueado el acceso SSH"
Si te quedas fuera, reinicia el servidor desde el panel de tu proveedor (VPS o dedicado). Las reglas se perderán si no las guardaste. Luego, repite el proceso con más cuidado.
"Syspanel no carga después de configurar el firewall"
Comprueba que la regla para el puerto 2106 está antes de la política DROP. Repasa el orden de las reglas.
"El sitio web tarda en responder"
Puede ser que estés bloqueando paquetes relacionados. Revisa que la regla de ESTABLISHED,RELATED esté presente y sea la primera.
Preguntas frecuentes (FAQ)
¿Qué es exactamente Syspanel?
Syspanel es un panel de control de hosting que te permite gestionar dominios, correos, bases de datos y más. Su interfaz web está en el puerto 2106. Es una herramienta potente, pero como cualquier servicio, debe estar protegida por un firewall.
¿Es necesario configurar iptables si uso Syspanel?
Sí, absolutamente. Syspanel te da herramientas, pero la seguridad de red es tu responsabilidad. Un firewall básico es la primera línea de defensa.
¿Puedo usar un firewall más fácil como UFW?
Sí, UFW (Uncomplicated Firewall) es una capa sobre iptables que simplifica el proceso. Puedes instalarlo con sudo apt install ufw. Sin embargo, entender iptables te da un control total y te permite depurar problemas.
¿Cada cuánto debo revisar mis reglas?
Recomendamos revisar las reglas cada vez que hagas cambios importantes en tu servidor (nuevos servicios, cambios de IP, etc.). También es buena práctica auditar la seguridad mensualmente.
¿Qué pasa si mi IP cambia?
Si limitaste el acceso SSH o a Syspanel por IP, tendrás que actualizar la regla. Para evitar problemas, puedes usar una IP fija o servicios como Dynamic DNS.
Conclusión
Configurar un firewall básico con iptables en tu servidor Syspanel no es complicado, pero requiere atención al detalle. Siguiendo esta guía, has aprendido a:
- Establecer políticas seguras por defecto.
- Permitir solo los puertos necesarios (incluido el 2106 de Syspanel).
- Añadir reglas de protección contra ataques.
- Guardar tus configuraciones para que persistan.
La seguridad es un proceso continuo. Empieza con lo básico y ve añadiendo capas de protección poco a poco. Tu servidor, tus clientes y tu tranquilidad te lo agradecerán.
[TIP] Guarda esta guía en un lugar seguro. Cada vez que configures un servidor nuevo, te será de gran ayuda. Y recuerda: ante la duda, menos puertos abiertos y más seguridad.
