противодействие атакам dns amplification ddos

Применимость: Linux

Слова для поиска:


Задача:

Об атаках этого типа было известно еще в 2006 году, но сегодня это обретает масштабы бедствия.

Основные симптомы:

  • Ваш сервер сильно тормозит.
  • Вы можете наблюдать неоправданно значительный исходящий трафик udp пакетов.

Обнаруживается командой:

tcpdump proto UDP -n

Или утилитой iptraf:

Решение:

Обновление пакетов

Обновите bind. Старые версии более подвержены уязвимости и имеют еще несколько дырок кроме этой.

Для Centos:

yum install bind

Для Debian (Ubuntu):

apt-get install bind9

Проверка рекурсии

Проверьте выполняет ли ваш DNS сервер рекурсивные запросы. В этом случае кто угодно через ваш сервер может получить сведения о любом домене. Этого не должно быть. Ваш сервер должен обслуживать только ваши домены. Те, что прописаны на этом сервере. То есть - кто угодно в интернете может получить от вашего сервера подробные сведения только о вашем домене, рекурсивно перенаправлять запросы на другие домены (серверы) должно быть запрещено.

Это создает условия для проведения DDOS атак методом DNS Amplification (DNS усиление). Ваш сервер, являясь соучастником таких атак, при этом очень перенапрягается и сильно тормозит при отсутствии признаков большой нагрузки.

Для проверки рекурсии вы должны запросить у вашего сервера сведения о чужом домене:

host -a ya.ru <IP адрес вашего сервера>

или

dig -t all ya.ru @<IP адрес вашего сервера>
Команда должна выполнятся извне, для таких запросов, выполняемых непосредственно на вашем сервере, рекурсия должна выполняться.

Ответ защищенного сервера (не поддерживающего рекурсию):

host ya.ru 77.72.133.217
Using domain server:
Name: 77.72.133.217
Address: 77.72.133.217#53
Aliases: 

Host ya.ru.keyweb.ru not found: 5(REFUSED)

Если ваш сервер выдаст вам подробную информацию о домене, то ваш сервер уязвим.

host ya.ru 77.72.133.216
Using domain server:
Name: 77.72.133.216
Address: 77.72.133.216#53
Aliases: 

ya.ru has address 213.180.204.3
ya.ru has address 77.88.21.3
ya.ru has address 87.250.250.3
ya.ru has address 87.250.250.203
ya.ru has address 87.250.251.3
ya.ru has address 93.158.134.3
ya.ru has address 93.158.134.203
ya.ru has address 213.180.193.3
ya.ru mail is handled by 10 mx.yandex.ru.
Рекурсию надо отключить.

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

Обладатели MS Windows могут использовать nslookup

Или используйте онлайновые службы: http://www.intodns.com

На этом снимке видно - наш сервер DNS успешно прошел проверку. Рекурсия у нас выполняется только для своих.

Отключение рекурсии

Отключение рекурсии в DNS Named (Bind) На CentOS выполняется в файле: /etc/named.conf

На Debian (Ubuntu): /etc/bind/named.conf.options

И в самый верх файла /etc/named.conf (CentOS ):

options {
recursion no;
};

Или в существующий блок значений options файла /etc/bind/named.conf.options (Debian) добавляем следующее:

recursion no;

Затем перезапускаем демон named (CentOS):

/etc/init.d/named restart

или Debian/Ubuntu:

/etc/init.d/bind9 restart

Не должно быть сообщений об ошибках

Проверка

И снова следует проверить работу вашей службы DNS и доступность рекурсии.

Через некоторое время проверьте как изменился трафик на вашем сервере в статистике панели управления виртуальным сервером.

Примечание:

Как видите хотя трафик был относительно небольшой, но огромное количество мелких UDP пакетов создавало загрузку (Load Average) этого сервера при минимальном количестве клиентов на уровне 30 единиц.

Отключение рекурсии - минимально необходимое действие. Для усиления защиты используйте методики описанные в статьях по ссылкам внизу. Но следует знать, что использование этих методик требует специальных знаний и опыта.

Бездумное повторение описанных действий может привести ваш сервер к неработоспособности.

Смотрите также: