Inundação de conexão http do iPhone OS 11_3

Inundação de conexão http do iPhone OS 11_3

Tenho tentado limitar o máximo de conexões TCP à porta 80 do meu servidor provenientes do mesmo IP. Eu usei iptables para esta tarefa:

-A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m connlimit --connlimit-above 24 --connlimit-mask 32 -j LOG_THROT

A regra envia pacotes para minha cadeia LOG_THROT, onde eu os registro e o tcp reinicia a conexão.

O problema é que todos os IPs que são registrados (sobrecarregando a regra de conexão http paralela 24) e são encontrados nos logs de acesso do Apache parecem usuários legítimos com referências do Google, vindos de ISPs móveis padrão como Vodafone etc. agente e é:

Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 como Mac OS X) AppleWebKit/605.1.15 (KHTML, como Gecko) Versão/ 11.0 Mobile/15E148 Safari/604.1

Eu queria saber se o novo sistema operacional/navegador tem um limite maior do que o padrão 6 conexões paralelas, talvez ele use algum tipo de pré-carregamento dos links encontrados no site e gere conexões adicionais ou é algum tipo de rastreador falsificando o UA?

Se for legítimo, o que você sugere para um limite de contagem de conexões seguras? 50, 100?

Responder1

Por que você não ajusta sua web e usa HTTP/2 (eventual HTTPS)

Ambos usam conexão única e multiplexada, em vez de conexões múltiplas em HTTP1.x. As técnicas de fragmentação de domínio não são mais necessárias.

Responder2

Resolvi isso. A resposta difere da melhor solução. A melhor solução é a resposta de prosti.

O que está acontecendo é que o mencionado Safari/iOS não reutiliza a conexão keep-alive. As razões para isso podem ser muitas e a internet está repleta de diferentes respostas sobre este assunto, podendo até ser um recurso obsoleto em suas versões mais recentes. Os fóruns da Apple foram inúteis neste tópico.

Portanto, para cada ativo que ele precisa carregar do site, ele gera uma nova conexão, mas o servidor que mantém as conexões ativas por X segundos eventualmente atinge o limite da regra iptables.

A solução que me ajudou foi adicionar a diretiva BrowserMatch no httpd.conf, que corresponde a todos os dispositivos iphone/ipod e desativa o suporte keepalive para eles.

BrowserMatch "iPhone|iPad|iPod" nokeepalive

no que diz respeito ao máximo de conexões que o Safari pode gerar, descobri documentado que, em alguma situação errônea, chegará a 15.000 !! (https://www.wiktorzychla.com/2017/06/http2-keep-alive-and-safari-browsers.html). Mas em circunstâncias normais será mais próximo dos valores 4-8 por domínio ou 15-30 fragmentação, a julgar por estas estatísticas:http://www.browserscope.org/?category=network&ua=Safari*&v=3

informação relacionada