Выпуск PowerDNS Authoritative Server 4.1

Представлен значительный релиз авторитетного (authoritative) DNS-сервера PowerDNS Authoritative Server 4.1, предназначенного для организации отдачи DNS-зон. По данным разработчиков проекта, PowerDNS Authoritative Server обслуживает примерно 30% из общего числа доменов в Европе (если рассматривать только домены с подписями DNSSEC, то 90%). Код проекта распространяется под лицензией GPLv2.

PowerDNS Authoritative Server предоставляет возможность хранения информации о доменах в различных базах данных, включая MySQL, PostgreSQL, SQLite3, Oracle, и Microsoft SQL Server, а также в LDAP и обычных текстовых файлах в формате BIND. Отдача ответа может быть дополнительно отфильтрована (например, для отсеивания спама) или перенаправлена при помощи подключения собственных обработчиков на языках Lua, Java, Perl, Python, Ruby, C и C++. Из особенностей также выделяются средства для удалённого сбора статистики, в том числе по SNMP или через Web API (для статистики и управления встроен http-сервер), мгновенный перезапуск, встроенный движок для подключения обработчиков на языке Lua, возможность балансировки нагрузки с учётом географического местоположения клиента.

Основные новшества:

  • Проведена большая работа по увеличению производительности. Например, в результате переработки системы кэширования скорость выполнения некоторых видов запросов при работе в роли корневого сервера, обслуживающего сотни тысяч доменов, возросла до 4 раз. Кроме того более чем в два раза увеличена скорость генерации пакетов, оптимизирован процесс выделения памяти, расширено кэширование данных с бэкендов, добавлены дополнительные индексы для данных в бэкендах;

    0_1512108818.png
  • Обеспечен полный набор средств для управления ключами шифрования и настройками DNSSEC через RESTful API. Из достоинств нового API называется возможность управления зонами с DNSSEC без оглядки на особенности DNSSEC;
  • Добавлена поддержка механизма быстрого открытия TCP-соединений (TFO — TCP Fast Open, RFC 7413), который позволяет сократить число шагов установки соединения за счёт комбинирования в один запрос первого и второго шагов классического 3-этапного процесса согласования соединения и даёт возможность отправки данных на начальном этапе установки соединения;
  • Возможность привязки к нелокальным сетевым адресам (non-local-bind), например, можно привязать обработчик к пока отсутствующему на сетевом интерфейсе IP при настройке отказоустойчивых конфигураций;
  • Поддержка криптографической библиотеки Botan 2.x и прекращение поддержки Botan 1.10;
  • Включена поддержка спецификации PKCS #11 для доступа к криптографическим устройствам и смарткартам (ранее для поддержки PKCS #11 требовалась перекомпиляция);
  • Расширено число проблем, выявляемых командой «pdnsutil check-zone»;
  • Улучшена интеграция с системой ведения логов systemd;
  • Изменена логика отслеживания обрывов соединения с СУБД, что позволило снизить задержки на установку повторного соединения. Структуры хранения данных в СУБД переведены на использование 64-разрядных идентификаторов;
  • Удалена поддержка проброса запросов для резолвинга через рекурсивный DNS-сервер PowerDNS Recursor (опция «recursor=»). В качестве причин называется неверная трактовка данной возможности многими администраторами, что часто приводит к непредсказуемым результатам (например, когда запрос заканчивается ссылкой на CNAME). Для двух типовых применений проброса на рекурсивный сервер (использование авторитетного сервера как рекурсивного с несколькими приватными зонами или одновременное использования для резолвинга запросов клиентов и обслуживание общедоступных зон) подготовлена инструкция по решению данных задач другими способами.
  • Расширены возможности бэкенда для хранения зон в текстовых файлах в формате BIND (например, добавлена поддержка зон с типом «native»), а также скрипта для миграции зон из BIND в хранилища на базе СУБД;
  • Переработан бэкенд для хранения DNS-зон в LDAP;

Дополнительно можно отметить выход корректирующих выпусков PowerDNS Authoritative Server 4.0.5 и PowerDNS Recursor 4.0.7, в которых устранено несколько уязвимостей и бэкпортирована большая порция исправлений из ветки 4.1.x. В частности, устранены уязвимости, связанные с неверной проверкой доступа к API (CVE-2017–15091), некорректной валидацией сигнатур DNSSEC (CVE-2017–15090), межсайтовым скриптингом в web-интерфейсе (CVE-2017–15092), подстановкой сторонних конфигурационных файлов через API (CVE-2017–15093) и отказом в обслуживании из-за исчерпания доступной памяти при разборе запросов DNSSEC (CVE-2017–15094).

© OpenNet