DDOS Protection Atack

Iniciado por Swarlog, Jun 22, 2025, 10:13 PM

Tema anterior - Siguiente tema

Swarlog

CitarPreguntas más frecuentes:

Q: ¿Qué es iptables?
R: Iptables es la interfaz utilizada por los administradores para interactuar con los módulos de Netfilter. En otras palabras, es el programa que se utiliza para configurar el firewall integrado en el servidor.

Q: Me dice "iptables: comando no encontrado" o "Acceso denegado"
R: No estás ejecutando como root.

Q: No funciona
R: No confíes en una pregunta tan vaga. Si esto no funciona, verifica tu IP/puertos y escribe "iptables -L" para ver todas tus reglas.

Q: El plugin XYZ no funciona después de configurar iptables
R: Los únicos plugins afectados son los que usan sockets o requieren información externa como GameME o HLXstats. Asegúrate de añadir tu puerto log_serveraddress a las conexiones permitidas, así como cualquier otro puerto requerido.

Q: Cuando copio los comandos no funcionan
R: Este tutorial es para que aprendas a configurar tus propias reglas, no para hacerlo por ti. Si no entiendes, pregunta en lugar de decir que no funciona.

Q: ¿Cómo configuro esto en un servidor compartido? (servidores alquilados)
R: No puedes, necesitas acceso root. Si tienes un VPS o servidor dedicado, podrás hacerlo.

Nota: Si usas Ubuntu puedes utilizar UFW



CitarFuncionamiento:

Primero identifiquemos los puertos que necesitamos permitir y sus protocolos:

FTP 21 (TCP)
SSH 22 (TCP)
MySql 3306 (TCP)
Steam Friends Service UDP 1200
Steam Principal UDP 27000
Steam Principal TCP 27020-27039
Steam CyberCafe TCP 27040-27041
Servidor Dedicado Steam HLDS/SRCDS UDP 27015
Servidor Dedicado Steam HLTV UDP 27020
SRCDS Rcon TCP 27015

Para comenzar, limpiemos las reglas existentes:

iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

-F = Limpia todas las reglas.
-P = Establece la política por defecto para una cadena.

Configuración básica de reglas:
# Aceptar localhost
iptables -A INPUT -s 127.0.0.1/32 -j ACCEPT

# FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# SSH
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

# MySQL
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# Steam
iptables -A INPUT -p udp --dport 1200 -j ACCEPT
iptables -A INPUT -p udp --dport 27000 -j ACCEPT
iptables -A INPUT -p tcp --dport 27020:27039 -j ACCEPT

# Tu servidor
iptables -A INPUT -p udp -d tu-IP --dport puerto-servidor -j ACCEPT
iptables -A INPUT -p tcp -d tu-IP --dport puerto-servidor -j ACCEPT

# Bloquear resto
iptables -A INPUT -p tcp --dport 1:1023 -j DROP
iptables -A INPUT -p udp --dport 1:1023 -j DROP

Protección contra DDoS usando fail2ban:
1. Instalación:
apt-get install fail2ban
2. Configuración:
Crear /etc/fail2ban/filter.d/srcdsdos.conf con:
[Definition]
failregex= IPTABLES-FLOOD LENGTH (28|48): IN=eth0 OUT= MAC=[a-zA-F0-9:]+ SRC=<HOST> DST=([0-9]{1,3}\.?){4} LEN=28

3. Añadir a jail.conf:
[srcdsdos]
enabled = true
port = 27015,27025,27035
protocol = udp
filter = srcdsdos
logpath = /var/log/messages.log
maxretry = 3
bantime = 6000

4. Reglas iptables adicionales:
# Protección contra flood
iptables -N REJECT_FLOOD28
iptables -A REJECT_FLOOD28 -j LOG --log-prefix 'IPTABLES-FLOOD LENGTH 28: ' --log-level info
iptables -A REJECT_FLOOD28 -j DROP

iptables -A INPUT -i eth0 -p udp --dport tu_puerto -m length --length 28 -j REJECT_FLOOD28

Para más información consulta: http://linux.die.net/man/8/iptables



CitarCréditos:
http://linux.die.net/man/8/iptables - Comandos
https://forums.alliedmods.net/member.php?u=51244 - fail2ban
http://en.wikipedia.org/wiki/Iptables - iptables