DNS – это достаточно простая служба, но от ее работы
зависит вся сетевая инфраструктура, поэтому очень важно
обеспечить ее безопасность. Даже, несмотря на то, что DNS –
это просто база данных с названиями и номерами, злоумышленник
может завладеть этой информацией из взломанной базы данных.
Некоторые атаки могут быть проведены для сбора данных из вашей
базы данных, чтобы в дальнейшем использовать эту информацию
против вас для построения структуры того, как выглядит ваша
сеть. Другие атаки используются для добавления информации в
вашу базу данных, в надежде на то, что ваши сервера DNS затем
смогут осуществлять преобразование таких название, которых не
смогли производить в обычном штатном режиме работы. Вы должны
позаботиться о вашей инфраструктуре DNS и уберечь ее от атак
до того, как эти атаки произошли, и стало слишком поздно.
Основы DNS
DNS, или служба доменных имен (Domain Naming Service) – это
служба, которая позволяет преобразовать IP адреса в названия.
Ключом здесь является понимание того, о каких названиях идет
речь. Как следует из названия, DNS хранит информацию,
связанную с доменом. Например, Active Directory использует DNS
для хранения всех доменных имен (domain name) и всех имен
компьютеров в сети. Если домен называется policy.org, а первым
контроллером домена (domain controller) в вашем домене
является PDC1, то у вас будут записи в DNS, аналогичные тем,
что представлены на рисунке 1.
Рисунок 1: Записи DNS
для первых компьютеров в вашем домене Active Directory domain
Обратите внимание, на рисунке 1 есть не только запись для
PDC1, есть также IP адрес, связанный с PDC1 X.X.X.X. Причина
существования этого связанного IP адреса заключается в том,
что ваш компьютер и многие другие службы в сети не используют
имена, а используют IP адреса. Однако, нам людям, гораздо
удобнее использовать имена вместо IP адресов. DNS приходит нам
на помощь и позволяет преобразовать имя в IP адрес. DNS можно
настроить также для работы в обратном режиме (reverse lookup
zone), т.е. получить имя по введенному IP адресу.
Обеспечение безопасности DNS внутри Active Directory
Первое решение, которое вы должны принять, связано с типом
базы данных DNS database, которую вы будете настраивать для
поддержки вашего домена Active Directory domain. Вы можете
хранить информацию в стандартной базе данных (standard DNS
database), у которой будет главный сервер (primary DNS server)
и дополнительные сервера (secondary DNS server), или же вы
можете сделать так, чтобы база данных DNS database была
интегрирована в Active Directory, как показано на рисунке
2.
Рисунок 2: База данных
DNS database можно интегрировать в Active Directory
Строго рекомендуется, чтобы ваши сервера DNS server были
интегрированы в Active Directory, если они поддерживают
Windows Active Directory, из-за преимуществ в безопасности,
которые вы при этом получаете. Благодаря этому также
достигается некоторая избыточность и стабильность базы данных
DNS такого типа, но в этой статье мы хотим сфокусироваться на
аспектах безопасности.
Основное преимущество для безопасности, которое вы
получаете при интеграции вашей базы DNS database в Active
Directory – это динамические обновления (dynamic update),
конфигурацию которых можно увидеть на рисунке 3. Динамические
обновления – это ключевая возможность DNS, которая позволяет
компьютерам домена автоматически регистрировать свои имена и
IP адреса на сервере DNS при входе в сеть или изменении IP
адресов с помощью сервера DHCP. Такая форма обновления
устраняет необходимость ручного ввода названий и IP адресов в
базу данных DNS database, как было раньше. Аспект безопасности
вступает в игру, когда автоматическое обновление от клиента
может открыть дверь в базу данных DNS для внесения незаконных
изменений. Поэтому обеспечение безопасности динамического
обновления позволить гарантировать, что компьютер, который
запрашивает обновление на сервере DNS server также имеет
запись в баз данных Active Directory database. Это значит, что
только компьютеры, подключенные к домену Active Directory
domain могут осуществлять динамические обновления в базе
данных DNS database.
Рисунок 3: Базу данных
DNS, интегрированную в Active Directory, можно настроить для
выполнения безопасных динамических обновлений
Выполнение динамических обновлений с помощью DHCP
В среде Windows environment у вас возможность настроить
DHCP для осуществления динамических обновлений на клиенте. Это
не требуется для компьютеров, работающих под управлением
операционных систем Windows 2000/XP/Server 2003/Vista, но
требуется для компьютеров, работающих под управлением
операционной системы Windows NT/9x. В некоторых случаях, это
оказывается не просто удобно, но и необходимо, чтобы сервер
DHCP осуществлял обновление на клиентских компьютерах.
Подводным камнем в такой конфигурации является то, что
теперь сервера DHCP являются владельцами записей, запрещая
другим серверам DHCP или клиентам обновлять запись в будущем.
Чтобы решить это, существует групп DNSUpdateProxy group. Для
решения этой проблемы добавьте учетные записи (account)
сервера DHCP в эту группу, в результате чего записи в DNS для
этих клиентов освободятся от списка контроля на доступ (Access
Control List или ACL). Новый список ACL будет включать
пользователей, прошедших аутентификацию (Authenticated Users),
у которых будет существовать возможность обновления записи DNS
для клиента. Это спроектировано для того, чтобы другие сервера
DHCP или даже клиенты смогли в будущем обновлять записи в DNS
для этого клиента.
Безопасность в предоставлении аутентифицированным
пользователям (Authenticated Users) возможности обновлять
клиента достаточно не плоха, но возникает другая проблема.
Если вы установите DHCP на контроллере домена (domain
controller), а затем добавить этот компьютер в группу, то в
результате этого все записи, которые сделаны контроллером
домена будут иметь те же самые свободные списки ACL. А эти
записи для контроллеров домена настолько важны для
безопасности и стабильности Active Directory, что забота об их
безопасности является одним из важных интересов вашей
организации. Записи, которые при этом могут быть вскрыты,
включают в себя записи SRV (Service Resource Records), которые
управляют тем, как клиенты и серверы находят службы Active
Directory внутри сети. Это включает Kerberos, site, TCP, IP, и
многие другие записи SRV.
Поэтому решение этой проблемы заключается в том, чтобы не
устанавливать DHCP на ваших контроллерах домена (domain
controller). Если у вас есть DHCP, установленный на
контроллерах домена, то лучше всего запретить этим серверам
DHCP осуществлять динамические обновления для клиентов. В
противном случае, вы можете добавить небезопасные настройки
для контроллера домена в DNS.
Как вы видели, DNS – это простая, но потенциально сложная
служба. Выполняя лишь одну задачу по преобразованию названий в
IP адреса, или наоборот, можно подумать, что ее очень легко
настроить и обеспечить ее безопасность. Однако, есть
настройки, благодаря которым достигается более безопасное и
стабильное окружение DNS. Во-первых, за счет возможности
интеграции базы данных DNS database в Active Directory
достигается гладкая совместимость с Active Directory, а также
возможность выполнять безопасные динамические обновления. Эти
безопасные динамические обновления помогают в защите от
посторонних записей в базе данных DNS database с компьютеров,
которые не являются частью домена. Благодаря этим динамическим
обновлениям, клиент может выполнять их по своему желанию или
же переложить эту задачу на DHCP. Если вы выберите
использование DHCP и группы DNSUpdateProxy, то вы должны
убедиться, что эта конфигурация не переводит записи вашего
контроллера домена в DNS. Простое решение для этого
заключается в том, чтобы эта задача DHCP не выполнялась вашими
контроллерами домена.