В качестве стандартного протокола для считывания данных с контроллеров доменов Active Directory (AD), а также для записи данных на такие контроллеры используется LDAP. LDAP-трафик AD по умолчанию является незащищенным, и именно по этой причине мы можем отслеживать обмен данными по протоколу LDAP между клиентами и контроллерами доменов с помощью программных средств сетевого мониторинга. Не имеют средств защиты и подпротоколы LDAP, такие как LDAP bind, применяемый приложениями, службами, а также пользователями для передачи учетных данных и проверки подлинности на контроллерах доменов Windows.
Используемые в организациях политики в области безопасности, как правило, предполагают шифрование всего трафика между клиентами и серверами. Кроме того, некоторые приложения, интегрированные с AD, предусматривают шифрование данных, передаваемых по протоколу LDAP.
.
Требования к сертификату LDAPS Server
Для использования протокола LDAPS необходимо, чтобы на всех контроллерах доменов Windows были установлены должным образом отформатированные сертификаты X.509. При наличии такого сертификата служба LDAP контроллера домена имеет возможность ожидать передачи данных и автоматически устанавливать соединения SSL как для трафика LDAP, так и для трафика сервера глобального каталога (GC). Сертификат сервера используется для проверки полномочий контроллера домена на клиенте в процессе установки LDAPS и для создания коммуникационного туннеля между клиентом и сервером после завершения установки. При желании протокол LDAPS можно использовать для проверки полномочий клиентов, но в этом случае необходимо предварительно установить сертификат аутентификации клиента на каждом из компьютеров пользователей.
В следующем разделе я подробно остановлюсь на том, как можно получить серверный сертификат LDAPS для контроллеров доменов, но сначала давайте рассмотрим другой вопрос: каким правилам должен соответствовать такой сертификат?
Сертификат LDAPS и ассоциированный с ним закрытый ключ должны размещаться в хранилище сертификатов Personal соответствующего контроллера домена (это хранилище именуется также хранилищем сертификатов MY). Для просмотра содержимого хранилища сертификатов контроллера домена выполните следующие действия.
- На контроллере домена нажмите кнопку Start, введите mmc и нажмите OK.
- Откройте меню File и выберите в нем пункт Add/Remove Snap-in.
- Выберите пункты Certificates, Add.
- В диалоговом окне оснастки Certificates консоли MMC (Microsoft Management Console) выберите пункт Computer account и нажмите кнопку Next.
- В разделе Select Computer выберите компьютер Local и нажмите Finish.
- В разделе Add or Remove Snap-ins нажмите кнопку OK.
- В дереве консоли раскройте контейнер Certificates (Local Computer), потом контейнер Personal и, наконец, контейнер Certificates.
- В правой панели оснастки Certificates вы увидите список всех сертификатов, размещенных в хранилище Personal контроллера домена (см. экран 1).
Экран 1. Сертификаты в хранилище Personal контроллера домена |
Сертификат LDAPS должен отвечать определенным требованиям к расширениям сертификатов X.509.
- Расширение сертификатов Extended Key Usage должно включать идентификатор Server Authentication Object Identifier (OID): 1.3.6.1.5.5.7.3.1.
- Полное доменное имя Fully Qualified Domain Name (FQDN) соответствующего контроллера домена AD (например, mydomaincontroller.company.net) необходимо указывать либо в части Common Name (CN) поля Subject расширения сертификата, либо в записи DNS расширения сертификата Subject Alternative Name (SAN).
Содержимое расширений X.509 сертификата можно легко проверить в окне Windows Certificate Viewer, которое открывается также из оснастки Certificates. Дважды щелкните на сертификате в правой панели оснастки Certificates, а затем перейдите на вкладку Details, как показано на экране 2.
Экран 2. Расширения сертификатов на вкладке Details в окне просмотра Certificate Viewer |
Как и при использовании любого другого сертификата, следует удостовериться в том, что сертификат LDAPS выдан удостоверяющим центром Certification Authority (CA), которому доверяют и контроллер домена, и клиенты LDAPS. Для установления доверительных отношений необходимо настроить клиенты и сервер так, чтобы они доверяли сертификату выдающего удостоверяющего центра (при одноуровневой конфигурации удостоверяющих центров) или сертификату корневого удостоверяющего центра, с которым выдающий удостоверяющий центр связан по цепочке (при многоуровневой конфигурации удостоверяющих центров).
Список всех пользующихся доверием сертификатов удостоверяющих центров размещается в контейнере Trusted Root Certification Authorities хранилища сертификатов соответствующей системы. В данном хранилище содержатся сертификаты удостоверяющих центров, которые администратором домена считаются надежными и которые Windows может использовать в качестве якорей доверия при проверке надежности других сертификатов. Если сертификат выдан удостоверяющим центром, установленным на системе, которая входит в состав инфраструктуры AD, он будет автоматически добавлен в хранилище сертификатов клиентской системы; эта операция осуществляется с помощью механизма обновления объектов групповой политики Group Policy Object (GPO). Если сертификат удостоверяющего центра, выдавшего сертификат LDAPS, не представлен в контейнере Trusted Root CA Certification Authorities, такой сертификат вы можете импортировать вручную, выбрав пункт Import в контекстном меню данного контейнера.
Еще одно важное условие: в хранилище сертификатов контроллера домена должен содержаться не только соответствующий сертификат LDAPS, но и закрытый ключ для него. Удостовериться в том, что хранилище сертификатов содержит закрытый ключ для того или иного сертификата LDAPS, вы можете, перейдя на вкладку General средства просмотра Certificate Viewer, как показано на экране 3. Если такой ключ имеется в данном хранилище, в нижней части диалогового окна будет отображен символ ключа и текст «You have a private key that corresponds to this certificate».
Экран 3. Свойства закрытого ключа на вкладке General в окне просмотра Certificate Viewer |
Кроме того, нужно проследить за тем, чтобы не были активированы усиленные средства защиты закрытого ключа; это означает, что система Windows не должна требовать ввода пароля всякий раз при обращении пользователя к ключу. По умолчанию усиленные средства защиты закрытых ключей в системе Windows всегда отключены; сказанное относится и к сертификатам LDAPS.
Если вы хотите, не покидая окна командной строки, удостовериться в том, что сертификат, содержащийся в контроллере домена, является действительным, можете воспользоваться утилитой certutil, которая вызывается с помощью следующей команды:
certutil-verifyStore MY
Более подробные сведения об использовании полученных при выполнении этой команды данных в процессе диагностики сертификатов LDAPS можно найти в статье «Troubleshooting LDAP Over SSL» на Microsoft TechNet, размещенной по адресу blogs.technet.com/b/askds/archive/2008/03/13/troubleshootingldap-over-ssl.aspx.
Получение серверного сертификата LDAPS
При установлении на серверах домена или на контроллерах домена корневого удостоверяющего центра предприятия (то есть удостоверяющего центра, интегрированного в службу AD) контроллеры доменов автоматически получают действительный сертификат LDAPS. Но этот способ обеспечения пользователей сертификатами никак нельзя считать ни самым безопасным, ни самым гибким. Как правило, в организациях, которые стремятся добиться более высокой степени защищенности и универсальности служб сертификатов, формируются многоуровневые иерархии удостоверяющих центров Windows, состоящие из корневого удостоверяющего центра и различных выдающих удостоверяющих центров. Если ваша организация уже создала или собирается создать иерархию удостоверяющих центров Windows, рекомендую вам создавать сертификаты LDAPS для контроллеров доменов в соответствии с указаниями, изложенными в настоящем разделе. Кстати, сертификаты LDAPS могут выдаваться не только удостоверяющими центрами от корпорации Microsoft. Подробные инструкции по работе с удостоверяющим центром от сторонних производителей приведены в статье Microsoft «How to enable LDAP over SSL with a third-party certification authority», опубликованной по адресу support.microsoft.com/kb/321051.
Если вы работаете с иерархией многоуровневой инфраструктуры открытых ключей Windows public key infrastructure (PKI), вам нужно, прежде всего, создать особый шаблон сертификата для сертификатов LDAPS в каталоге AD, затем активировать этот особый шаблон на всех выдающих удостоверяющих центрах и, наконец, вручную настроить все контроллеры доменов для работы с сертификатом LDAPS, построенным на основе данного особого шаблона.
Чтобы создать особый шаблон сертификата для сертификатов LDAPS в каталоге AD, откройте оснастку Certificate Templates консоли MMC в одном из удостоверяющих центров предприятия (интегрированных в AD). Откройте меню Start, введите mmc и нажмите кнопку ОК. Щелкните на меню File и откройте оснастку Add/Remove Snap-in. Выберите пункт Certificate Templates, затем нажмите кнопки Add и OK. В окне оснастки Certificate Templates откройте контейнер Certificate Templates, правой кнопкой мыши щелкните на одном из шаблонов (скажем, на шаблоне Kerberos Authentication) и выделите пункт Duplicate Template. Вы можете также создать дубликат другого шаблона (например, шаблона Controller Authentication); нужно только, чтобы в расширении сертификата Extended Key Usage выбранного вами шаблона содержался идентификатор Server Authentication OID.
В окне Duplicate Template нажмите кнопку ОК, не снимая выделения с выбранного по умолчанию пункта WindowsServer 2003 Enterprise. В результате свойства нового шаблона будут отображены так, как показано на экране 4. Уделите особое внимание следующим свойствам нового шаблона.
Экран 4. Свойства шаблона сертификата |
- На вкладке General: введите отображаемое имя шаблона (например, «LDAPS»), установите периоды действия и обновления (они должны соответствовать применяемой в вашей организации политике сертификатов) и укажите, намереваетесь ли вы публиковать сертификат в каталоге AD (переключатель Active Directory установите в положение Publish certificate).
- На вкладке Request Handling: убедитесь, что значение минимального размера ключа установлено в соответствии с применяемой в вашей организации политикой сертификатов, и укажите, следует ли пометить закрытый ключ как exportable (установите флажок Allow private key to be exported). Вы должны пометить закрытый ключ как exportable (экспорт закрытого ключа допускается), если намереваетесь импортировать данный сертификат в хранилище сертификатов AD NTDS, о чем речь пойдет ниже.
- На вкладке Subject Name: проследите за тем, чтобы имя DNS, а также имя SPN (Service Principal Name) были выделены. Наконец, нажмите кнопку ОК; в результате окно свойств шаблона будет закрыто, и настройка нового шаблона на этом закончится.
Теперь требуется активировать выдающие удостоверяющие центры, дабы они могли выдавать сертификаты на основе нового шаблона LDAPS. Добавьте новый шаблон в контейнер удостоверяющего центра Certificate Templates. Делается это так: на одном из удостоверяющих центров предприятия откройте оснастку MMC Certification Authority, затем контейнер удостоверяющего центра, правой кнопкой мыши щелкните на контейнере Certificate Templates и в открывшемся меню выберите пункты New, Certificate Template to Issue. В окне Enable Certificate Templates, показанном на экране 5, вы можете выбрать имя вновь созданного шаблона. Закройте диалоговое окно, нажав кнопку ОК.
Экран 5. Диалоговое окно Enable Certificate Templates |
На последнем этапе работы запросите сертификаты LDAPS для каждого контроллера домена, который должен будет устанавливать соединения по протоколу LDAPS. Для этого на всех таких контроллерах домена выполните следующие действия.
- В окне оснастки MMC Certificates откройте контейнер Personal хранилища сертификатов соответствующей системы согласно пояснениям, которые я дал в предыдущем разделе, посвященном требованиям к серверным сертификатам LDAPS.
- Правой кнопкой мыши щелкните на контейнере Certificates и в открывшемся меню выберите пункты All Tasks, Request New Certificate. Откроется окно мастера Certificate Enrollment. Нажмите кнопку Next.
- На странице мастера Select Certificate Enrollment Policy оставьте применяемую по умолчанию настройку Active Directory Enrollment Policy и нажмите кнопку Next.
- Выберите шаблон сертификата LDAPS и щелкните на пункте Enroll.
- Убедитесь в том, что регистрация прошла успешно, и проверьте свойства новых сертификатов LDAPS с помощью кнопки View Certificate в разделе Details.
- Закройте окно мастера нажатием кнопки Finish.
В системе Windows Server 2008 реализована новая возможность, позволяющая пользователю сохранять сертификат LDAPS контроллера домена в хранилище сертификатов Personal каталога AD данного контроллера домена. Эта возможность оказывается весьма кстати в ситуациях, когда в хранилище Local Machines Personal store содержится несколько сертификатов контроллеров домена с идентификатором Server Authentication OID. В таких случаях бывает трудно предсказать, какой сертификат служба AD выберет для LDAPS-аутентификации. Так вот, в соответствии с новой логикой, реализованной в системе Windows Server 2008, служба AD, осуществляя поиск сертификатов для аутентификации серверов, прежде всего обращается к хранилищу сертификатов AD. Таким образом, это новое средство может принудить службу AD использовать именно тот сертификат аутентификации серверов, который вы сгенерировали с помощью особого шаблона LDAPS. Дополнительную информацию о том, как добавлять сертификаты в хранилище сертификатов Personal службы AD можно найти в статье «Event ID 1220-LDAP over SSL», которая опубликована по адресу technet.microsoft.com/en-us/library/dd941846 (WS.10).aspx.
Проверка средств подключения LDAPS
Для проверки правильности настройки протокола LDAPS на контроллерах доменов можно использовать инструмент LDP, который по умолчанию устанавливается на контроллерах доменов Windows Server 2008. Чтобы получить доступ к LDP на рядовых серверах Windows Server 2008, системах Windows 7 или на машинах Windows Vista, необходимо установить на них средства удаленного администрирования сервера Microsoft Remote Server Administration Tools (RSAT).
Чтобы запустить LDP, откройте меню Start и в окне Search введите символы ldp. Выберите пункт меню Ldp Connection и нажмите кнопку Connect. В поле Server введите полное доменное имя контроллера домена, к которому хотите подключиться. Удостоверьтесь в том, что в поле port выбрано значение Port 636 (которое по умолчанию применяется для портов LDAPS), что флажок Connectionless сброшен, а флажок SSL установлен, и нажмите кнопку ОК. Если протокол LDAPS настроен надлежащим образом, после выполнения команды LDP на экране должно появиться извещение Host supports SSL, как показано на экране 6.
Экран 6. Проверка подключения LDAPS с помощью программы LDP |
Вновь откройте меню Connection, выберите пункт Bind и нажмите кнопку ОК. Если LDAPS настроен правильно, после выполнения команды LDP на экране появится имя пользователя, а также доменное имя, которое вы использовали для аутентификации программы LDP в службе AD.
Закрываем еще один шлюз AD
Разработчики Microsoft не предусмотрели особого интерфейса для выполнения процедуры настройки, но, несмотря на это, операция защиты направляемого на контроллеры доменов AD LDAP-трафика с использованием технологии SSL/TLS осуществляется относительно просто. В настоящей статье я показал, как, установив на контроллерах доменов должным образом отформатированный сертификат, пользователь может задействовать протокол LDAPS. С помощью этого протокола вы можете заблокировать важный шлюз аутентификации и доступа к каталогу AD. Кроме того, имеется еще два основных протокола аутентификации AD — Kerberos и NTLM. В этих протоколах передача данных осуществляется с помощью удаленных вызовов процедур remote procedure call (RPC), оба они по умолчанию оснащены механизмами защиты и шифрования данных.
Жан де Клерк (jan.declercq@hp.com) — сотрудник Security Office компании HP. Специализируется на управлении идентификационными параметрами и безопасностью в продуктах Microsoft