Дэн Камински описал, как DNS-серверы могут быть отравлены поддельными DNS-ответами [1]. Насколько я понимаю, проблема заключалась в том, что Камински нашел способ учитывать большинство других источников случайности в DNS-запросе, так что основным препятствием для злоумышленника было угадание идентификатора DNS-запроса (16 бит энтропии) при генерации поддельного ответ. В среднем злоумышленник может подделать ответ в пределах 32 тысяч предположений. Итак, рекомендуемое смягчение - случайное изменение исходного порта, все применили свои патчи, и все было хорошо.
За исключением того, что это только увеличило количество предположений с 32 тысяч до 134-4 тысяч. Конечно, это не может быть сделано быстро, но терпеливый злоумышленник может делать это медленно - на самом деле, Берт Хьюберт подсчитал, что атака со скоростью 100qps имеет 50% шанс успеха в течение 6 недель. [2]
У меня недостаточно репутации, чтобы размещать больше ссылок. Однако я вижу, что были рассмотрены многие технические подходы, такие как draft-wijngaards-dnsext-resolver-side-mitigation-01 и draft-vixie-dnsext-dns0x20-00 на tools.ietf.org, RFC5452, а также в Google Документы по безопасности общедоступного DNS:
Бит метки DNS 0x20 (т. Е. CAsE.gAmEs)
Группировка RTT, выбор IPv4 / IPv6, рандомизация исходного адреса (от wijngaards)
Запрос полномочий для NS / nameserver / A / AAAA после направления (от wijngaards)
Счетчик неисправностей в режиме атаки
Откат к TCP (особенно после перехода в режим атаки)
Спросите дважды / трижды (особенно после перехода в режим атаки)
Удаление повторяющихся запросов (из Google Public DNS)
К сожалению, я не вижу никаких параметров конфигурации для их включения даже в последней версии Bind.
Поэтому я хотел бы спросить, что еще можно сделать для защиты от такого типа атак с подменой, особенно когда я запускаю Bind. Если смягчение последствий останется вероятным, я бы хотел, чтобы шансы на успех атаки были увеличены через миллион лет.
[1] http://s3.amazonaws.com/dmk/DMK_BO2K8.ppt
[2] http://ds9a.nl/har-presentation-bert-hubert-3.pdf слайд 24.
Большинство TTL составляет менее 30 дней, верно? Очищайте кеш каждый месяц.
Невозможно остановить кого-либо от взлома ваших серверов.
Безопасность просто ставит достаточно препятствий на пути, чтобы 99,9% людей сдались.
Вы также можете попробовать поставить IPS перед своим DNS, например Snort, и создать правила, чтобы предупреждать вас, когда кто-то делает X чрезмерное количество DNS-запросов за X промежутков времени.
Просто чтобы вы знали, я запустил кластер DNS-серверов с сотнями зон. Эти серверы не только авторитетны, но и рекурсивны. Они использовались в атаках с усилением DNS, но ни разу не возникало проблемы с отравлением кеша. Они работают уже 15 лет.
Один из них - контроллер домена. Да, это смешно. Я не проектировал это.
Хотя я понимаю, что DNSSEC не является повсеместным, подписанные зоны должны добавить еще один уровень сложности, как упоминает Берт на стр. 30-31, в более поздних версиях Bind это довольно легко реализовать (хотя ваши журналы могут быть немного подробными, когда разговаривает с серверами без поддержки DNSSEC).