problemas simulando o TCP SYN flood

4

Estou tentando simular um TCP SYN flood para ajustar um servidor da Web (planejando implantar na AWS).

Eu configurei uma VM de 'destino', desativei iptables e executei hping (hping -p 80 -i u1000 -c 1000 -S destaddr) de algumas máquinas locais de 'origem' (filtrando RST na cadeia OUTPUT daquelas). / p>

Eu esperava ver 1000 registros SYN_RECV na saída netstat do servidor de destino, mas vejo apenas 256 max (256 por cada máquina de 'origem'). Parece que estou atingindo algum limite na máquina "alvo" e não consigo encontrar onde está. tcp_max_syn_backlog foi aumentado para 8096.

Alguma ideia de onde esse limite está definido?

    
por Alex I 20.06.2013 / 22:42

1 resposta

2

OK, então eu fiz a mesma pergunta no webhostingtalk e, embora não tenha obtido uma resposta direta, isso ajudou a ampliar o horizonte :)

Basicamente, ignorei os limites do nível de aplicativo (servidor da Web). Mas esses gentis cavalheiros da Holanda aprofundaram-se e postaram suas descobertas muito relevantes aqui:

link

Basicamente, o servidor web (eu estava usando o nginx) está passando uma constante (escute o limite do backlog) para escutar a função, ela é definida aqui:

link

define NGX_LISTEN_BACKLOG 511

Portanto, os limites do kernel ainda não estão em jogo.

A constante Nginx é compilada, por isso verifiquei rapidamente o apache - por sorte, é configurável:

link

Então eu configurei para 8k e consegui o que eu precisava (bem, 2 pacotes perdidos:

fonte:
hping -S -c 20000 -i u20 -p 80 alvo

target:
netstat -nta | grep SYN_RECV | banheiro    8192 49152 729088

Por fim, meu limite original de 256 conexões foi devido ao fato de que eu inicialmente enviei pedidos para a porta 22 (e o sshd obviamente tem backlog de conexão tcp configurado em 256).

    
por 22.06.2013 / 18:13