Lidando com ataques de reflexão NTP no IPTables

16

Estamos lidando com um ataque de reflexão / amplificação NTP em nossos servidores colocados. Esta pergunta é específica para responder a ataques de reflexão NTP e não direcionada ao DDoS em geral.

Aqui está o tráfego:

gráfico de tráfego de rede do roteador

Está produzindo um pouco de CPU em nosso roteador:

gráfico de uso da CPU do roteador

Infelizmente, não é grande o suficiente para fazer com que nosso provedor upstream bloqueie o tráfego, o que significa que está passando por nós.

Usamos a regra a seguir para bloquear o tráfego NTP, que se origina na porta 123:

-p udp --sport 123 -j DROP

Esta é a primeira regra no IPTables.

Pesquisei bastante e não consigo encontrar muitas informações sobre como usar o IPTables para mitigar um ataque de reflexão NTP. E algumas das informações lá fora parecem totalmente incorretas. Esta regra do IPTables está correta? Há algo mais que possamos adicionar ou fazer para mitigar um ataque de reflexão / amplificação de NTP que não entre em contato com nosso provedor de rede upstream?

Além disso: como esses invasores devem usar redes que

  • permitir falsificação de endereço IP em pacotes
  • ter remendado, por volta do código NTP 2010

existe alguma câmara de compensação global para a qual possamos reportar esses endereços IP, para que eles sejam corrigidos para parar de permitir pacotes falsificados e consertar seus servidores NTP?

Jeff Atwood
fonte
10
Sim, a regra iptables está correta, mas a execução de um filtro de pacotes no final do seu pipe, no servidor, não impedirá que o pipe seja preenchido. Para obter mais informações, consulte: serverfault.com/questions/531941/i-am- O que você pode fazer é fazer o seguinte
HBruijn

Respostas:

20

Essencialmente, você não terá sorte se o ataque DDoS conseguir encher qualquer canal que você tiver na Internet (que é o objetivo de qualquer ataque de reflexão UDP - encher o canal). Se o seu link upstream puder receber 1Gbps de tráfego e houver (digamos) 2Gbps de tráfego total para descer no link, metade dele será descartado pelo roteador ou switch que está colocando os pacotes no link. O invasor não se importa com a queda de metade do tráfego de ataque, mas seus clientes o fazem: 50% de perda de pacotes em uma conexão TCP causam coisas terríveis ao desempenho e à confiabilidade dessas conexões.

Existem apenas duas maneiras de interromper um ataque volumétrico de DDoS:

  1. Tenha um tubo grande o suficiente para que o tráfego de ataque não o encha.
  2. Pare os pacotes de ataque antes que eles desçam pelo cano.
  3. Mude para um endereço IP diferente que não esteja sob ataque de reflexão NTP.

Bloqueá-los em iptables não fará agachamento, porque, a essa altura, o tráfego de ataque já espremeu o tráfego legítimo e o fez cair no chão, de modo que o atacante venceu. Como você (presumivelmente) não controla o roteador upstream ou o switch que está encaminhando o tráfego de ataque, sim, será necessário entrar em contato com seu provedor de rede upstream e fazer com que eles façam algo para impedir que o tráfego de ataque atinja sua rede link, seja esse

  • bloquear todo o tráfego na porta de ataque (não é algo que a maioria dos ISPs está disposto a fazer em seus roteadores de acesso ao cliente colo, por $REASONS)

  • filtrar os endereços IP de origem do ataque (mais plausível, com S / RTBH, mas não algo que todo provedor já tenha disponível)

  • Na pior das hipóteses, coloque o endereço IP de destino no buraco negro

Observe que o bloqueio do IP só funcionará se você tiver outros endereços IP que possam continuar funcionando - se o seu provedor bloquear o seu único endereço IP, o invasor conseguiu porque você está fora da Internet, o que eles estavam tentando alcançar em primeiro lugar.

mulher
fonte
Você tem alguma idéia de por que os ISPs não gostariam de bloquear o tráfego?
André Borie 28/06
4
Há muitas razões. 1. Os ISPs são pagos para entregar tráfego, não para bloqueá-lo. 2. Somente equipamentos de rede de ponta são capazes de realizar inspeção de taxa de linha em grandes volumes de tráfego (100 G +), o que é caro. 3. Não é trivial passar da solicitação do cliente para as linhas de configuração em um roteador principal.
Womble
5

Suponho que você tenha um canal no provedor de serviços de Internet que termina em seu próprio roteador / firewall. Então, atrás desse roteador / firewall, você tem suas próprias máquinas. O ISP não bloqueia o tráfego, então você precisa lidar com isso sozinho. Você deseja bloquear o tráfego no roteador / firewall para impedir que ele atinja as máquinas atrás dele, minimizando a carga no roteador / firewall.

Sua regra parece correta ao descartar tudo o que veio de um servidor ntp na porta padrão. Lembre-se, se você realmente usa o ntp, pode ser necessário abrir brechas nas regras do firewall

Se o seu firewall usa o rastreamento de conexão (a maioria faz), convém usar a tabela "bruta" para descartar os pacotes antes que eles atinjam o mecanismo de rastreamento de conexão.

iptables -t raw -A PREROUTING -p udp --sport 123 -j DROP

Peter Green
fonte
1

Parece que podemos relatar os IPs por abuso de NTP (e, esperançosamente, correção de NTP) para

http://openntpproject.org/

Quanto às redes de relatórios que permitem IPs falsificados, não consigo encontrar muita coisa :

Nossas medidas mostram que a falsificação ainda prevalece entre aproximadamente 25% dos sistemas autônomos e bloqueios de rede que pesquisamos. Mais importante, um ponto de entrada único para tráfego falsificado fornece aos invasores um meio de enviar tráfego falsificado para toda a Internet. Os ISPs podem empregar filtragem [RFC2827] para garantir que seu tráfego de saída não seja falsificado.

Talvez o único método seja entrar em contato diretamente com o ISP?

Jeff Atwood
fonte