Применимость: Linux
Слова для поиска:
Об атаках этого типа было известно еще в 2006 году, но сегодня это обретает масштабы бедствия.
Основные симптомы:
Обнаруживается командой:
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 единиц.
Отключение рекурсии - минимально необходимое действие. Для усиления защиты используйте методики описанные в статьях по ссылкам внизу. Но следует знать, что использование этих методик требует специальных знаний и опыта.
Бездумное повторение описанных действий может привести ваш сервер к неработоспособности.