Dealing with NTP reflection attacks in IPTables

We're dealing with an NTP reflection / amplification attack at our colocated servers. This question is specific to responding to NTP reflection attacks, and not directed at DDoS in general.

Here's the traffic:

router network traffic graph

It's churning a bit of CPU on our router:

router CPU usage graph

Unfortunately it is not big enough to cause our upstream provider to blackhole the traffic, which means it's passing through to us.

We've used the following rule to block the NTP traffic, which originates on port 123:

-p udp --sport 123 -j DROP

This is the first rule in IPTables.

I searched a lot, and I can't find very much information on how to use IPTables to mitigate a NTP reflection attack. And some of the information out there seems flat out incorrect. Is this IPTables rule correct? Is there anything else we can add, or do, to mitigate a NTP reflection / amplification attack other than contact our upstream network provider?

Also: since these attackers must be using networks that

  • allow spoofing of IP address in packets
  • have unpatched, circa 2010 NTP code

is there any global clearinghouse we can report these IP addresses to, so that they get fixed to stop allowing spoofed packets, and patch their NTP servers?

16
задан 30 June 2016 в 08:58
3 ответа

По сути, вам не повезло, если DDoS-атаке удается заполнить любой канал, который у вас есть, в Интернет (что является целью любой атаки с отражением UDP - заполнить канал). Если ваш восходящий канал может принимать 1 Гбит / с трафика, и есть (скажем) 2 Гбит / с общего трафика для нисходящего канала, то половина его будет отброшена маршрутизатором или коммутатором, который отправляет пакеты по каналу. Злоумышленнику все равно, что половина его атакующего трафика будет сброшена, но ваши клиенты это сделают: потеря 50% пакетов в TCP-соединении приведет к ужасным, ужасным последствиям для производительности и надежности этих соединений. .

Есть только два три способа остановить объемную DDoS-атаку:

  1. Иметь достаточно большой канал, чтобы трафик атаки не заполнял его.
  2. Остановите пакеты атаки, прежде чем они
  3. Переключитесь на другой IP-адрес, который не подвергается атаке отражения NTP.

Блокирование их в iptables не принесет результата, потому что к тому времени трафик атаки уже вытеснил законный трафик и заставил его упасть на пол, так что атакующий выиграл. Поскольку вы (предположительно) не контролируете восходящий маршрутизатор или коммутатор, который перенаправляет трафик атаки, да, вам нужно будет связаться с вашим провайдером восходящей сети и попросить их сделать что-то , чтобы остановить атакующий трафик от достижения вашей сетевой ссылки, будь то

  • блокировать весь трафик на атакующем порту (не то, что большинство интернет-провайдеров готовы делать на своих маршрутизаторах клиентского доступа colo, для $ REASONS )

  • отфильтровать исходные IP-адреса атаки (более правдоподобно, с помощью S / RTBH, но не то, что уже есть у каждого провайдера)

  • худший случай, скрыть IP-адрес назначения

Обратите внимание, что закрытие IP-адреса работает, только если у вас есть другие IP-адреса, которые могут продолжать работать - если ваш провайдер скрывает ваш единственный IP-адрес, злоумышленник добился успеха, потому что вы не подключены к Интернету, чего они и пытались добиться в первую очередь.

20
ответ дан 2 December 2019 в 20:40

Я предполагаю, что у вас есть канал к вашему провайдеру, который заканчивается на вашем собственном маршрутизаторе / межсетевом экране. Тогда за этим маршрутизатором / брандмауэром у вас будут свои машины. Интернет-провайдер не будет блокировать трафик, поэтому вам придется решать это самостоятельно. Вы хотите заблокировать трафик на маршрутизаторе / брандмауэре, чтобы он не попадал на машины, находящиеся за ним, одновременно минимизируя нагрузку на маршрутизатор / брандмауэр.

Ваше правило выглядит правильным для отбрасывания всего, что приходит с сервера ntp на стандартный порт.Помните, что если вы на самом деле используете ntp, вам может потребоваться проделать дыры в правилах брандмауэра

. Если ваш брандмауэр использует отслеживание соединений (большинство из них), тогда вы можете использовать «сырую» таблицу для отбрасывания пакетов до того, как они достигнут отслеживания соединения machinary.

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

5
ответ дан 2 December 2019 в 20:40

Похоже, мы можем сообщить IP-адреса для злоупотребления NTP (и, надеюсь, исправления NTP) на

http: // openntpproject. org /

Что касается сетей, в которых разрешены поддельные IP-адреса, Я не могу найти много :

Наши измерения показывают, что спуфинг по-прежнему распространен примерно среди 25% автономных систем и сетевых блоков, которые мы исследовали. Что еще более важно, единая точка входа для поддельного трафика предоставляет злоумышленникам возможность отправлять поддельный трафик на весь Интернет. Интернет-провайдеры могут использовать фильтрацию [RFC2827], чтобы гарантировать, что их исходящий трафик не подделан.

Возможно, единственный способ - связаться с Интернет-провайдером напрямую?

1
ответ дан 2 December 2019 в 20:40

Теги

Похожие вопросы