Pesquisando na net alguns parâmetros de kernel do linux para evitar/contornar um ataque de syn flood, achei algumas modificações interessantes a ser realizadas no seu firewall linux. São parâmetros que alteram o tamanho da fila syn, diminuir o tempo de manutenção da fila entre outros, segue abaixo os comentários:
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
Para abrir o outro lado da conexão, o kernel envia um SYN com ACK agregado a ele, para
reconhecer o SYN recebido anteriormente. Essa é a parte 2 do handshake de três vias.
Esse parâmetro determina o número de pacotes SYN+ACK enviados antes de o kernel liberar a conexão.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 4096 > /proc/sys/net/core/netdev_max_backlog
echo 4096 > /proc/sys/net/core/netdev_max_backlog
echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog
Número máximo de requisições de conexões lembradas, que ainda não recebeu um ACKnowledgment de clientes conectando. O valor padrão é 1024 para sistemas com mais de 128MB de memória, e 128 para maquinas com baixa memória. Se o servidor sofrer de sobrecarga, tente aumentar esse número. Aviso! Se você torná-lo maior que 1024, seria melhor alterar TCP_SYNQ_HSIZE em include/net/tcp.h para manter TCP_SYNQ_HSIZE*16 <= tcp_max_syn_backlog e recompilar o kernel.
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
O tempo para manter o soquete no estado FIN-WAIT-2, se ele foi fechado pelo nosso lado. O par pode estar quebrado e nunca fechar de seu lado, ou mesmo morrido inesperadamente. O valor padrão é 60 segundos. Valor normal usado no kernel 2.2 era 180 segundos, você pode restaurá-lo, mas lembre-se que se sua maquina estiver o servidor WEB sob carga, você corre o riso de estouro de memória com kilotons de soquetes mortos, os soquetes FIN-WAIT-2 são menos perigosos que os soquetes FIN-WAIT-1, porque eles comem 1,5K de memória máxima, mas eles tendem a viver mais tempo.
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
Quão freqüente o TCP envia mensagens keepalive quando o keepalive é habilitado. O padrão é 2 horas.
Se a situação for grave mesmo, vale a pena alterar para as configurações abaixo:
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
Números de pacotes SYN que o kernel enviará antes de liberar nova conexão.
echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog
Mesmo depois de tudo isso, não foi o suficiente para barrar o C4. =/
[]‘s Sergito