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 не выполнялась вашими контроллерами домена.