Как предотвратить использование VMware ESXi 4.1 в NTP DDoS атаках


ОБНОВЛЕНИЕ: NTP в ESXi содержит серьёзные уязвимости, официальных заплаток нет. Рекомендую прекратить использовать ESXi либо остановить сервис NTP и смириться с тем что время будет неточным (возможно и в виртуальных машинах). 24 декабря 2014


На днях я получил письмо от хостинг-провайдера о том, что один из арендованных у него IP адресов используется для проведения масштабных UDP атак. Данный IP адрес не принадлежит ни одной из виртуальных машин и назначен хосту VMware ESXi 4.1. После изучения проблемы выяснилось:

  • Система VMware ESXi 4.1 поставлена самим хостером при аренде сервера
  • ESXi это Linux и он содержит ntpd 4.2.4p6
  • Настройки ntpd по умолчанию почему-то разрешают опрос статуса демона при помощи команды monlist
  • Команда monlist оправляет запросившему список из последних 600 клиентов обращавшихся к этому NTP серверу
  • NTP работает по UDP и соответственно обратный адрес элементарно подделывается

Путём последовательного сканирования адресов в сети интернет, атакующие составили список NTP серверов допускающих проверку статуса извне. Далее на эти сервера был организован поток NTP-запросов с командой monlist и поддельным обратным адресом. В качестве обратного адреса использован адрес атакуемой жертвы. В ответ на команду monlist каждый NTP сервер послушно высылает список последних 600 клиентов который по размеру существенно больше чем сам запрос (40-байтовый запрос генерирует ответ длиной 18252 байта). В итоге имеем огромный поток UDP трафика который можно направить куда угодно.

Как проверить что сервер подвержен уязвимости

$ ntpdc -c monlist 1.2.3.4

remote address          port local address      count m ver rstr avgint  lstint
===============================================================================
example.com            64059 1.2.3.4               52 7 2    590      0       0
host.example.com         123 1.2.3.4                1 4 4    590      0      57
....

Как починить

1. Нужно добраться до локальной или ssh консоли сервера ESXi

Для этого необходимо запустить VMware vSphere Client и подключиться к серверу ESXi. В клиенте на закладке "Configuration" необходимо в "Security Profile" стартовать сервис "Local Tech Support" или "Remote Tech Support (SSH)". Для доступа в локальном режиме необходим доступ к монитору/клавиатуре сервера (KVM), для удалённого доступа достаточно SSH.

Configuration -> Security Profile

Tech Support

2. Поменять настройки NTP

Для этого в файле /etc/ntp.conf необходимо добавить параметр noquery в строку restrict default:

Tech Support Console

restrict default kod nomodify notrap noquery nopeer
restrict 127.0.0.1
server pool.ntp.org
driftfile /etc/ntp.drift

После этого нужно рестартовать NTP

$ /etc/init.d/ntpd restart

И убедиться что сервис запустился нормально:

$ ps ax | grep ntp

1234 1234 ntpd /sbin/ntpd

3. Проверяем что команда monlist более не работает

$ ntpdc -c monlist 1.2.3.4

1.2.3.4: timed out, nothing received
***Request timed out

Прочие возможные меры защиты

  • Обновить NTP до последней версии которая уже не содержит команду "monlist" (это довольно проблематично на ESXi)
  • Добавьте правила для файерволла или самого NTPD разрешающие доступ только для доверенных клиентов
  • Ограничьте количество ответов в секунду на индивидуальные IP адреса

В идеале же каждый провайдер должен фильтровать исходящие пакеты с поддельным адресом непосредственно в месте их появления (исходные адреса не принадлежат подсетям провайдера). Подробнее это описано в BCP38

Ссылки по теме

Поделиться!

Как защитить сервер VMware ESXi от использования в атаках NTP amplification (команда monlist)?

Comments