Ddos atacam passando por iptables [duplicados]

1

Eu tenho usado as minhas próprias "regras de iptables" para bloquear todos os principais tipos de ataques de DDOS em servidores de jogos, pois esses ataques eram específicos de aplicativos / servidores de jogos, em vez dos ataques gerais de DDOS. Demorei quase 3 anos para estudar esses ataques e responder com essas regras. Até agora, eu estava usando um limite de taxa no iptables que automaticamente DROP o IP se ele fizesse 250 contas de conta / segundo, já que a taxa do cliente é muito mais baixa do que isso (o máximo é de 500kb / s). Isso ocorre porque os atacantes geralmente enviavam um grande número de contagens de acertos com pacotes do tamanho 15:30, pois esse é o tamanho geral do pacote em que o servidor do jogo responde bem. Isso funcionou muito bem até que alguém atacou com algo diferente hoje para passar por essa regra.

-A INPUT -p udp -m udp --dport 16000:29000 -m recent --set 
-A INPUT -p udp -m udp --dport 16000:29000 -m recent --update --seconds 1 --hitcount 250 -j DROP 

Recentemente, observei ataques que estavam facilmente produzindo 1-3mb / s de entrada, como visto através de "iftop" para meus servidores e as regras acima não os estavam bloqueando porque meu servidor de jogo estava respondendo com "... .disconnect "pacotes para todas as conexões de entrada. Isso acontece quando o servidor de jogo não reconhece a string de entrada ou o comprimento do pacote. Este foi o conteúdo do pacote:

link

Agora, como você pode ver, o pacote tem um tamanho enorme. De acordo com o Wireshark, onde peguei o pacote, o comprimento do pacote era 700 e o tamanho / tamanho dos dados era de cerca de 5000 bytes. E eu já vi isso antes, se você tiver um comprimento / tamanho de dados maior do pacote, ainda poderá ter uma taxa mais alta, mesmo com um número menor de contagens . Então, isso explica, talvez, por que ele teve uma entrada de cerca de 3mb / se não foi bloqueado pelas contagens de contas, porque nunca teve contagens maiores que 250.

Agora preciso de algo que seja mais específico para largura de banda do que o número de pacotes / segundo. Eu preciso de uma regra iptables que bloqueia automaticamente uma entrada > 1mb / s e pode usar o tamanho do pacote, se necessário. O tamanho geral dos dados / comprimento de um cliente de servidor de jogo justo normalmente teria comprimentos de pacotes e tamanho de dados de menos de 500 bytes, mas pode aumentar em alguns casos, mas nunca ocupará mais de 500kb / s de largura de banda.

A pergunta é diferente do resto das perguntas respondidas anteriormente, porque é a primeira aplicação específica. Em segundo lugar, estou pedindo uma solução iptables que negaria qualquer entrada > 1mb / s?

Atualização:

Eu fiz alguns trabalhos teóricos para explicar por que uma largura de banda de entrada de 3 Mb / s não é mais que 250 hitcounts / second e aqui está o trabalho:

3 Mb = 3x1024x1024 = 3,145,728 bits / s = 393,216 Bytes / s

Por isso,

Se um pacote tivesse o tamanho de 5000 bytes, o número máximo de pacotes por segundo deveria ser:

393216/5000 = 78,6 pacotes / segundo

E isso significa que se as regras do iptables tiverem que funcionar, o pacote deve ter sido menor que 393216/250 = 1516 bytes .

    
por Asad Moeen 19.08.2013 / 15:27

1 resposta

0

Você já olhou para o fail2ban? Isso pode ajudá-lo a reagir aos ataques recebidos descartando os IPs de origem no firewall.

    
por 19.08.2013 / 15:47