Защита DNS сервера
Как и для многих других сервисов, запуск BIND в так называемом chroot jail окружении является хорошей идеей. Это ограничивает доступ BIND к другим файлам или системным ресурсам, при взломе BIND или наличии в нем ошибок. Более детальную информацию о запуске BIND в chroot окружении можно найти в "Chroot-BIND HOWTO" (см. в разделе Ресурсы).
Суть этой процедуры заключается в том, что запуск BIND под суперпользователем root или даже под традиционным спец. пользователем типа "nobody". Обычно для запуска BIND создается пользователь "named". Файлы, используемые этим спец. пользователем, помещаются в локальный каталог, например /chroot/named/, и соответствующие подкаталоги.
BIND 9 предоставляет более четкую поддержку для chroot, чем BIND 8; для ее включения достаточно обычной сборки без специальных опций или установок в Makefile.
Кроме проведения работ по общему повышению защищенности машины, на которой работает BIND, также возможно обеспечить гарантированную защиту в рамках самого протокола DNS. DNS Security Extensions (DNSSEC) представляет из себя набор расширений DNS, обеспечивающих аутентификацию и целостность.
DNS базируется на UDP в большей степени, чем на TCP, а стало быть, не имеет механизма верификации источника пакета. Другими словами, посылающие запрос к DNS могут получить в ответ ложные данные, например перенаправляющие соединение на хост взломщика. Добавлением криптографических Transactional Signatures (TSIG) в DNS запросы DNSSEC может предупредить подмену (spoofing) DNS ответов. На каждом сервере BIND 9, который должен работать в защищенном режиме, должен быть включен DNSSEC. Расширенный протокол, с другой стороны, обладает обратной совместимостью. В первую очередь DNS сервера, которые желают обмениваться данными в защищенном режиме, должны каким-то образом сгенерировать пару ключей. Это работает так же, как и SSH ключи для хоста и сервера. Например:
Листинг 15. Генерация ключей DNSSEC
dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n HOST \
primary-secondary.my.dom
# ls Kprimary-secondary.my.dom.*
Kprimary-secondary.my.dom.+157+46713.key
Kprimary-secondary.my.dom.+157+46713.private
|
Как подсказывают нам имена файлов, генерируются открытый (public) и закрытый (private) ключи для конфигурируемого хоста и публичный ключ для распространения по другим серверам. Хорошим введением в DNSSEC является "The Basics of DNSSEC" из O'Reilly Network (см. в разделе Ресурсы).