Saltar al contenido

🔥 Configurando iptables para ggRock

Esta guía proporciona una configuración de referencia para configurar el firewall iptables para permitir el funcionamiento adecuado del servidor y cliente de ggRock.

📝 Nota:
Reemplaza los rangos de IP de marcador de posición (por ejemplo, X.X.X.X/X, Y.Y.Y.Y/Y) con las direcciones IP correctamente formateadas en CIDR para tu entorno.


🔄 Reinicia el Firewall a un Estado Limpio

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -X
iptables -F

🚫 Deshabilita el Reenvío de IP (Enrutamiento)

iptables -P FORWARD DROP

✅ Permite el Tráfico Entrante Esperado

# Drop malformed/invalid traffic
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
# Allow already established or related connections
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Allow localhost (loopback)
iptables -A INPUT -i lo -j ACCEPT

📦 Permite DHCP Entrante (para Arranque PXE)

iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT

🛠️ Acceso de Gestión Remota (p. ej., Interfaz Web de ggRock, HTTPS)

iptables -A INPUT -p tcp -s X.X.X.X/X --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s X.X.X.X/X --dport 443 -j ACCEPT

🖥️ Permite Acceso desde la Subred del Cliente ggRock

iptables -A INPUT -p icmp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p tcp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p udp -s Y.Y.Y.Y/Y -j ACCEPT

🔐 Permisos de IP de VPN ggCircuit

# Region 1
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 34.255.111.148/25 --dport 443 -j ACCEPT
# Region 2
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 54.228.150.30/25 --dport 443 -j ACCEPT

🚫 Bloquea Todo Otro Tráfico Entrante

# Optional: log dropped input traffic
# iptables -A INPUT -j LOG
iptables -P INPUT DROP

📤 Permite el Tráfico Saliente Esperado

# Allow responses to connections
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
# Allow localhost
iptables -A OUTPUT -o lo -j ACCEPT
# Allow ICMP (ping, etc.)
iptables -A OUTPUT -p icmp -j ACCEPT
# DHCP
iptables -A OUTPUT -p udp --dport 67 --sport 68 -j ACCEPT
# DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
# NTP (time sync)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
# HTTP/S for updates and web access
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 443 -j ACCEPT

🌐 Permite Todo Otro Tráfico Saliente

# Optional: log outgoing traffic
# iptables -A OUTPUT -j LOG
iptables -P OUTPUT ACCEPT

⚠️ Importante:
Antes de ejecutar este script, reemplaza los rangos de IP de marcador de posición (X.X.X.X/X, Y.Y.Y.Y/Y) con los valores reales de tu entorno.

#!/bin/bash
# ggRock iptables Firewall Configuration Script
# Replace X.X.X.X/X and Y.Y.Y.Y/Y with actual CIDR blocks before running!
echo "⚙️ Applying iptables rules for ggRock..."
# === Reset existing rules ===
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -F
iptables -X
# === Allow expected incoming traffic ===
# Drop invalid packets
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
# Allow established and related traffic
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Allow loopback
iptables -A INPUT -i lo -j ACCEPT
# Allow DHCP (PXE boot)
iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
# Remote management (Web UI)
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s X.X.X.X/X --dport 443 -j ACCEPT
# Allow all traffic from ggRock PC subnet
iptables -A INPUT -p icmp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p tcp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p udp -s Y.Y.Y.Y/Y -j ACCEPT
# ggCircuit VPN IPs
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 34.255.111.148/25 --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 54.228.150.30/25 --dport 443 -j ACCEPT
# Drop all other incoming traffic
# Uncomment to enable logging:
# iptables -A INPUT -j LOG
iptables -P INPUT DROP
# === Allow expected outgoing traffic ===
# Allow related outbound traffic
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
# Allow loopback
iptables -A OUTPUT -o lo -j ACCEPT
# Allow ICMP (ping)
iptables -A OUTPUT -p icmp -j ACCEPT
# DHCP
iptables -A OUTPUT -p udp --dport 67 --sport 68 -j ACCEPT
# DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
# NTP
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
# HTTP/S
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 443 -j ACCEPT
# Allow all other outbound traffic
# Uncomment to enable logging:
# iptables -A OUTPUT -j LOG
iptables -P OUTPUT ACCEPT
echo "✅ iptables rules applied successfully!"

🔐 Para Usar:

  1. Guarda este script como configure-iptables.sh
  2. Hazlo ejecutable:
   chmod +x configure-iptables.sh
  1. Ejecútalo como root (o con sudo):
   sudo ./configure-iptables.sh

Opcional:

Para hacer tus reglas iptables persistentes entre reinicios:


🧊 Paso 1: Instala Herramientas de Persistencia

Ejecuta este comando para instalar el paquete requerido:

sudo apt-get update && sudo apt-get install -y iptables-persistent

Durante la instalación, te pedirá que guardes las reglas actuales — di Sí cuando se te pregunte.


💾 Paso 2: Guarda las Reglas Actuales de iptables

Después de ejecutar tu script configure-iptables.sh, guarda las reglas activas así:

sudo netfilter-persistent save

Esto guarda las reglas de IPv4 e IPv6 en:

  • /etc/iptables/rules.v4
  • /etc/iptables/rules.v6

Si solo estás usando IPv4, totalmente está bien — el archivo IPv6 puede quedarse vacío.


🔁 Paso 3: Carga Automáticamente al Iniciar

El servicio netfilter-persistent se encarga de cargar las reglas al iniciar automáticamente. Puedes verificar que esté habilitado con:

sudo systemctl is-enabled netfilter-persistent

Si no está habilitado, puedes habilitarlo:

sudo systemctl enable netfilter-persistent

🧪 Opcional: Recarga Sin Reiniciar

Para aplicar las reglas guardadas sin reiniciar:

sudo netfilter-persistent reload

✅ ¡Eso es! Tu configuración personalizada de iptables ahora persistirá entre reinicios del sistema.

¿Te ha sido útil este artículo?

Más en Actualizaciones y seguridad

¿No encuentras lo que buscas?

Chatea con nosotros o envíanos un correo. El chat está abierto 24/7 desde la burbuja de abajo a la derecha.

Envíanos un correo