Как предотвратить использование 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.
2. Поменять настройки NTP
Для этого в файле /etc/ntp.conf необходимо добавить параметр noquery в строку restrict default:
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
Ссылки по теме
- Hackers Spend Christmas Break Launching Large Scale NTP-Reflection Attacks
- DoS attacks that took down big game sites abused Web’s time-sync protocol
- Technical Details Behind a 400Gbps NTP Amplification DDoS Attack
- NTP reflection attack
- NTP DoS reflection attacks
- Using Tech Support Mode in ESXi 4.1 and ESXi 5.x
- Editing configuration files in VMware ESXi and ESX
- Enabling remote query of NTP service on ESX/ESXi 4.0
Поделиться!
Как защитить сервер VMware ESXi от использования в атаках NTP amplification (команда monlist)?