Eu gerencio um site de tecnologia popular e há semanas meu site está sob ataques DDOS. Os ataques acontecem em horários aleatórios e, geralmente, cerca de 10 vezes por dia. Normalmente, os ataques duram apenas alguns minutos e param.
Quando meu site está sob ataque, ele fica inacessível. A carga do servidor não sobe, serviços como o MySQL, Nginx & FPM não são afetados. Parece ser um ataque SYN ou algo semelhante.
Eu corro o CentOS 5.6 (64bit), em uma máquina poderosa. Eu tentei endurecer um pouco o SYSCTL, minhas configurações podem ser encontradas abaixo. Além disso, eu configurei o iptables para bloquear todas as portas, exceto as que eu preciso. Esse script também pode ser encontrado abaixo.
Eu sei que essa pergunta já foi feita muitas vezes por pessoas, mas há alguma outra dica que alguém possa me dar para combater esses ataques? Está realmente ficando muito chato.
Estou aberto para tentar qualquer coisa.
CONFIGURAÇÕES DE SYSCTL
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
DEFINIÇÕES DE IPTABLES
*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 22 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
-A INPUT -p tcp --dport 22 --syn -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
Gráfico MRTG das últimas 24h. Spikes são ataques, e é quando o servidor se torna inacessível.