En iptables
puedes aplicar reglas para mitigar ataques de inundación SYN-ACK (SYN-ACK Flood), que suelen ser parte de ataques DDoS.:
1. Limitar la tasa de respuestas SYN-ACK
Puedes evitar responder con demasiados paquetes SYN-ACK a un mismo origen mediante --limit
:
iptables -A OUTPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m limit --limit 10/s --limit-burst 20 -j ACCEPT
Explicación:
-A OUTPUT
: Aplica la regla a los paquetes salientes.-p tcp --tcp-flags SYN,ACK SYN,ACK
: Filtra los paquetes SYN-ACK.-m limit --limit 10/s --limit-burst 20
: Permite un máximo de 10 respuestas por segundo con un ráfaga inicial de 20.-j ACCEPT
: Permite el tráfico que cumple la regla.
2. Usar SYN Cookies (a nivel de kernel)
Asegúrate de que syncookies
está activado en el kernel para evitar que la tabla de conexiones se llene:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
O, para hacerlo permanente:
echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
sysctl -p
3. Limitar conexiones por IP
Para evitar que un solo host sature el servidor con demasiadas conexiones simultáneas:
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 -j DROP
Explicación:
-A INPUT
: Aplica la regla al tráfico entrante.-p tcp --syn
: Filtra las nuevas conexiones TCP.-m connlimit --connlimit-above 10
: Bloquea IPs que intenten abrir más de 10 conexiones concurrentes.
4. Bloquear IPs con un alto número de peticiones SYN
Si quieres bloquear IPs que hacen muchas solicitudes SYN en poco tiempo:
iptables -A INPUT -p tcp --syn -m hashlimit --hashlimit 10/sec --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name syn_rate -j DROP
Explicación:
--hashlimit 10/sec --hashlimit-burst 20
: Limita a 10 solicitudes por segundo con un máximo de 20 en ráfaga.--hashlimit-mode srcip
: Aplica el límite por IP de origen.
Estas reglas pueden ayudar a mitigar un ataque de SYN-ACK Flood sin afectar demasiado el tráfico legítimo.