Apache SYN flood…

A veces notamos que el servidor web tiene poca carga, pero apache falla al momento de servir la pagina.
Luego al mirar en dmesg encontramos algo como esto

[16590810.892761] TCP: Peer 174.236.197.187:7377/80 unexpectedly shrunk window 574714916:574715466 (repaired)
[22992297.864035] TCP: Peer 174.232.192.250:3334/80 unexpectedly shrunk window 2347755170:2347755728 (repaired)
[24616687.480045] TCP: Peer 76.123.19.19:50908/80 unexpectedly shrunk window 4096699729:4096703868 (repaired)
[24616693.480042] TCP: Peer 76.123.19.19:50908/80 unexpectedly shrunk window 4096699729:4096703868 (repaired)
[24616705.480056] TCP: Peer 76.123.19.19:50908/80 unexpectedly shrunk window 4096699729:4096703868 (repaired)
[24616729.480042] TCP: Peer 76.123.19.19:50908/80 unexpectedly shrunk window 4096699729:4096703868 (repaired)
[24616777.480048] TCP: Peer 76.123.19.19:50908/80 unexpectedly shrunk window 4096699729:4096703868 (repaired)
[24616873.480042] TCP: Peer 76.123.19.19:50908/80 unexpectedly shrunk window 4096699729:4096703868 (repaired)
[24996200.260041] TCP: Peer 69.146.204.86:55049/80 unexpectedly shrunk window 3403383198:3403387337 (repaired)

Generalmente esto es indicación de un ataque SYN, lo que podemos hacer en este caso es algo como


iptables -N syn-flood
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP

Debemos cambiar eth0 por la interfaz de red que tengamos, esto debe ser suficiente para detener el ataque, pero no debemos olvidarnos de reiniciar apache, ya que sus procesos deben estar exhaustos.

Un saludo

Deja tu comentario

%d bloggers like this: