Внешняя аутентификация ldap или windows

Время на прочтение
7 мин

Количество просмотров 74K

Сегодня в любой организации есть LDAP-каталог, наполненный пользователями этой организации. Если присмотреться, вы найдете одно или несколько приложений, которые используют этот же каталог для «аутентификации». И кавычки здесь неспроста, ведь LDAP — это протокол доступа к каталогам, спроектированный для чтения, записи и поиска в службе каталогов. Это не протокол аутентификации. Термин «LDAP-аутентификация», скорее, относится к той части протокола (операции bind), где определяется, кто вы такой, и какие права доступа имеете к информации каталога.

Со временем LDAP стал службой аутентификации де-факто. Широко распространенные и доступные службы LDAP, такие, как Active Directory, стали лакомым кусочком для разработчиков программного обеспечения, которые хотят встроить аутентификацию в свои продукты. Клиентские библиотеки LDAP доступны практически для любого фреймворка, а реализовать интеграцию относительно легко.

Но несмотря на то, что применение LDAP может помочь решить задачу внедрения аутентификации пользователей в различных приложениях компании, оно создает множество проблем. В отличие от специально предназначенных протоколов аутентификации, при использовании LDAP возникают различные уязвимости информационной безопасности.

Чтобы разобраться в том, что это за уязвимости, сперва нужно понять, как работает LDAP-аутентификация.

Как работает LDAP-аутентификация

Представьте себе следующую ситуацию (она далека от реальности, но отлично передает суть).

Предположим, я делаю заказ в интернет-магазине так, чтобы его доставили мне домой в мое отсутствие. Курьер приезжает и оставляет под дверью записку с текстом «извините, мы вас не застали» и просит меня забрать заказ в ближайшем пункте выдачи в удобное время. В пункте выдачи сотрудник спрашивает мое имя, адрес и просит ключи от дома, чтобы подтвердить мою личность. Затем сотрудник службы доставки приезжает ко мне домой и открывает дверь моим ключом. Он заходит внутрь, чтобы убедиться, что я там живу, например, по фотографиям на стене или по имени адресата на корреспонденции. После этого сотрудник возвращается в пункт выдачи и сообщает мне, что успешно подтвердил мою личность, и я могу получить свою посылку! Ура!

Помимо проблем с логистикой, данная ситуация полна других вопросов. Что, если недобросовестный проверяющий сделал копию моего ключа? Или он оставил ключ надолго без присмотра, и это сделал кто-либо еще? Что, если на проверяющего напали и забрали мой ключ? Когда я отдаю ключ от своей квартиры незнакомцу, я не могу быть уверен в его порядочности и своей безопасности.

К счастью, в реальном мире у нас есть документы для подтверждения личности, например, водительские права или паспорт, которые выданы государственными органами, и их подлинность не вызывает сомнений. Я могу предоставить эти документы курьеру для собственной идентификации без передачи ключей.

В мире LDAP мы все еще должны передавать наши ключи, чтобы открыть дверь от нашего имени. Мы передаем наш пароль стороннему лицу, и он пытается с его помощью проникнуть на сервер LDAP. Если ему удается получить доступ, мы не можем быть уверены, что наши учетные данные не скомпрометированы. При этом злоумышленник получит не только возможность разблокировать дверь LDAP, но и доступ к любому приложению, использующему те же учетные данные.

К счастью, в более полном мире аутентификации у нас также есть паспорта и водительские права! Протоколы аутентификации, такие как Kerberos, SAML и OpenID Connect, выпускают токены третьим лицам. Токены подтверждают, что вы являетесь тем, за кого себя выдаете, и нет необходимости передавать кому-либо свои ключи. Поскольку LDAP никогда не разрабатывался как протокол аутентификации, соответствующие механизмы у него отсутствуют.

Недостатки LDAP как системы аутентификации

В 2007 году Шумон Хак выпустил фантастическую статью (LDAP Weaknesses as a Central Authentication System), в которой он описывает три конкретные проблемы при использовании LDAP в качестве системы аутентификации.

1. Приложение, вероятно, недостаточно защищено, чтобы оперировать учетными данными

Автор подчеркивает, что защитить от атаки небольшой набор серверов аутентификации гораздо проще, чем защитить большое количество серверов приложений.

В своем большинстве серверы аутентификации, как правило, находятся под тщательным присмотром специалистов, обладающих значительным опытом в области информационной безопасности.

С другой стороны, серверы приложений имеют совершенно иной уровень безопасности и более подвержены риску компрометации. Они менее защищены, работают с более сложными программными стеками и с большей вероятностью имеют уязвимости. И чаще они находятся под управлением людей, которые не имеют глубоких знаний о безопасности. Построение правильной системы безопасности — сложнейший процесс, в котором очень легко допустить ошибку.

Проблема заключается в том, что если один сервер приложений скомпрометирован, то все учетные данные, которыми пользовались их владельцы во время атаки, также скомпрометированы. Под угрозой находится и любая другая система, которая использует тот же каталог LDAP для аутентификации.

2. Сервер LDAP не может обеспечить безопасность механизма аутентификации, используемого для получения учетных данных

LDAP-сервер не может гарантировать безопасность транзакции. Несмотря на то, что LDAP-сервер, например, может обеспечить принудительное выполнение операции bind по TLS, чтобы гарантировать, что учетные данные не передаются в открытом виде, сам сервер никогда не принимал никакой роли в получении учетных данных от пользователя. Существует риск, что приложение будет получать пароль по небезопасному каналу.

3. Пользователь вынужден делиться своим секретом аутентификации с третьей стороной

Пароль пользователя или секрет аутентификации должен оставаться секретом. Он должен быть известен только самому пользователю и системе аутентификации. При использовании LDAP-аутентификации пользователь вынужден поделиться своим секретом с третьей стороной, чтобы она затем смогла использовать данный секрет для взаимодействия с LDAP-каталогом от имени пользователя.

Важно упомянуть, что при использовании специально предназначенных протоколов аутентификации, таких как Kerberos, и даже с более раннего — NTLM, секрет пользователя никогда не передается по сети. Клиентское устройство и сервер используют криптографические операции, чтобы доказать друг другу, что у них один и тот же секрет и при этом даже не обмениваются самим секретом.

К пунктам Шумона Хука добавлю описание нескольких нюансов LDAP-аутентификации, основываясь на собственном опыте. Прежде всего, тема касается использования Active Directory.

4. Многие разработчики знают о механизмах работы LDAP недостаточно, чтобы правильно его использовать

В одном из моих прошлых постов блога описывается, как анонимные и неаутентифицированные bind’ы позволяли обхитрить разработчиков приложений и заставляли пропускать неавторизованных пользователей. Возможность выполнения операции bind без проверки подлинности — одна из тонкостей протокола, о которой не знают даже самые опытные специалисты по LDAP.

Каталоги устроены непросто и способны хранить огромное количество организационной информации и предоставляют множество настраиваемых способов ее хранения. Я видел очень много случаев, когда разработчик приложения предполагал, что существует определенный класс объекта или атрибут, а когда их не обнаруживалось, приложение падало. Для аутентификации пользователя не должны требоваться и применяться знания о структуре данных, хранящихся в каталоге. Протокол аутентификации должен абстрагироваться от деталей хранилища объектов, расположенного уровнем ниже.

5. Администраторы приложений зачастую не настраивают LDAP-клиенты корректным образом

При управлении Active Directory в большой распределенной среде есть один неприятный нюанс: трудно определить, какие конкретно приложения используют Active Directory в качестве LDAP-каталога, и как именно администраторы приложений настроили LDAP-клиент.

Ниже представлены примеры ужасов некорректной настройки.

  • Хардкодинг DN в приложениях или использование DN при выполнении операции bind. Постоянно случаются неприятности при переименовании или перемещении объектов внутри директории, а все потому, что кто-то где-то захардкодил DN. (Примечание для тех, кто выполняет простые операции bind с Active Directory: нет необходимости использовать DN. Active Directory также предоставляет альтернативные форматы DN, которые являются более надежными, чем использование традиционного формата).
  • Для операции bind используется не сервисный аккаунт, а персональный аккаунт разработчика или администратора (представьте, что будет, когда владелец аккаунта покинет компанию).
  • Отправка паролей в открытом виде на 389-й порт.
  • Существуют приложения, где чекбокс «Валидировать сертификат» не является обязательным при подключении к AD с использованием TLS (порт 636). Почему такое вообще допустимо? Как можно передать пароль стороннему сервису, не убедившись в его достоверности?

Заставить LDAP-клиент работать легко. Но только тот факт, что он работает, не означает, что конфигурация правильная.

6. LDAP-аутентификация и современные сервисы аутентификации взаимоисключают друг друга

Приложение, использующее LDAP для аутентификации, всегда будет вынуждено опираться на имена пользователей и пароли. Попытка реализовать современные технологии, такие как многофакторная аутентификация и единый вход, практически невозможна (если только вы не собираетесь внедрять свои собственные технологии, что само по себе является плохой идеей). Альянс FIDO стремится сделать пароли пережитком прошлого, а каждое приложение, использующее аутентификацию LDAP, будет помехой на пути к беспарольной политике.

Какие есть варианты?

Сегодня веб-приложения действительно могут обойтись без LDAP-аутентификации. Существует множество прекрасных веб-протоколов аутентификации, таких как SAML, WS-Federation и OpenID Connect, которые не требуют учетных данных пользователя для работы со сторонними приложениями. Бесчисленное количество продуктов предоставляют эти услуги, включая Active Directory Federation Service (встроенные в Windows Server) или сторонние сервисы, такие как Microsoft Azure AD, Okta, Ping и другие. Если в организации нет федеративного IdP, первое, что нужно сделать — внедрить его.

Главное, на что стоит обратить внимание при выборе нового ПО — поддержка современных протоколов аутентификации. Даже если приложение требуется бизнесу здесь и сейчас, не стоит спешить с выбором решения, особенно, если этот выбор ограничен только продуктами с LDAP-аутентификацией. Стоит попробовать донести до выбранного вендора необходимость доработки продукта с использованием более современных протоколов аутентификации. Возможно он прислушается и пересмотрит свой план разработки.

Число десктоп-приложений с «толстым клиентом», поддерживающих современные протоколы аутентификации, растет, и это действительно радостная тенденция. Эти приложения обычно были оплотом LDAP-аутентификации. Растет число SDK, таких, как Microsoft Authentication Library (MSAL), которые позволяют разработчикам легко добавлять поддержку современных сервисов аутентификации в свои мобильные и десктоп-приложения.

В конечном счете, стоит признать, что в сегодняшней реальности не все приложения поддерживают современные протоколы аутентификации, и, возможно, никогда и не будут. Внедрение полного запрета LDAP-аутентификации, вероятно, невозможно ни в одной организации. Однако ни в коей мере не стоит поощрять применение LDAP-аутентификации внутри организации. Использование LDAP следует рассматривать только при отсутствии других вариантов.

Every organization has a well-defined structure that defines employees’ roles and responsibilities in various departments such as sales, marketing, and IT. To effectively use enterprise resources and remain productive, organizations must develop access control measures. 

Active Directory (AD) authentication is one such measure you can use to manage users, applications, and other assets within the organization. When deployed, Active Directory authentication can simplify IT administration and enhance the overall security posture of the enterprise. Learn more about AD authentication, how it works, and how JumpCloud can help you improve its operations. 

What Is Active Directory Authentication?

AD authentication is a Windows-based system that authenticates and authorizes users, endpoints, and services to Active Directory. IT teams can use AD authentication to streamline user and rights management while achieving centralized control over devices and user configurations through the AD Group Policy feature. 

It also provides single sign-on (SSO) functionality, allowing users only to authenticate once and then seamlessly access any corporate resource in the domain for which they’re authorized. AD authentication is a successor to LAN Manager (LM) and NT LAN Manager (NTLM), protocols which were easily exploitable.

For example, LM used a fragile cryptographic scheme that modern processors could easily crack. Although NTLM — which succeeded LM — had some security enhancements around the strength of cryptography, it couldn’t provide mutual authentication and smart card authentication services. Due to these weaknesses, Microsoft replaced LM and NTLM protocols with AD starting with Windows 2000 Server operating systems (OSs). 

How Does Authentication Work in Active Directory?

Active Directory authentication is a process that supports two standards: Kerberos and Lightweight Directory Access Protocol (LDAP). 

1. Kerberos protocol

In a Kerberos-based AD authentication, users only log in once to gain access to enterprise resources. Instead of passing on the login credentials over the network, as is the case with LM and NTLM protocols, the Kerberos system generates a session key for the user. The generated session key lasts for a designated period, providing flexibility to users when it comes to authentication. 

Besides the session key, the Kerberos system also generates a token containing all the access policies and rights associated with the user. This ensures that users only access resources they are authorized to. 

If a client wants to connect to the AD server or the domain controller (DC) in this case, they must authenticate themselves to a key distribution center (KDC), which is a trusted third party. The KDC consists of two servers: authentication server (AS) and ticket granting server (TGS). The AS encrypts clients’ login credentials by using their password’s secret key. This is how the AS authenticates clients to the network.

After getting authenticated, the AS sends the user a ticket granting ticket (TGT), which is encrypted with a different secret key. When the client receives the TGT, it transmits it to the TGS alongside an authorization request to access the target resource on the server. The TGS then decrypts the TGT with its secret key that it shares with the AS. 

Next, the TGS issues a token to the client that it encrypts with another key. The third secret key is shared between the target server and TGS. Finally, the client transmits the received token to the target server. When the target server receives the token, it decrypts it with the TGS shared key to allow the client to access resources for a limited time (session). 

2. Lightweight Directory Access Protocol

LDAP is an open source and cross-platform protocol that provides AD authentication services. There are two options associated with LDAP-based authentication in AD:

  • Simple authentication. In simple authentication, LDAP relies on login credentials to create a request to the server. It also supports anonymous and unauthenticated requests to corporate resources. 
  • Simple authentication and security layer (SASL). The SASL approach uses other authentication services such as Kerberos to connect to the LDAP server. IT teams can use this method to enhance security because it separates authentication methods from application protocols.

Authenticating Linux Devices Through Active Directory

AD works seamlessly with Windows-based systems and services. While Windows may have dominated the OS market share in the 1990s, the same is not true today. Linux and macOS are now integral components in any IT infrastructure. As companies continue to leverage different OSs, the pressure to provide centralized access management becomes real. 

There are two primary methods you can leverage to connect Linux-based devices to AD.

LDAP

This approach requires the IT teams to reconfigure Linux-based devices to leverage the LDAP’s pluggable authentication module (PAM). Since AD authentication largely focuses on the Kerberos protocol, IT teams must manually manage the entire authentication process.

Samba

This is a standard Windows interoperability tool for Linux systems. IT teams can use Samba as an intermediary to support AD authentication in Linux machines. For example, IT teams can use the service to create domains, set up a shared print server, and configure PAM to allow users to authenticate to locally installed services. 

Authenticating Macs Through Active Directory

IT teams can use an LDAP and AD connector to configure Macs to access basic account details in AD DS (Active Directory Domain Services) infrastructures. These tools allow IT teams to leverage AD authentication to allow users access corporate resources from their Macs when deployed. AD connector can also provide federated SSO by mapping AD identities to macOS identity and access management (IAM) roles. 

For example, the AD connector can generate all the attributes needed to authenticate macOS devices to AD infrastructure. However, machines with macOS 10.12 or later cannot join an AD domain without domain services of at least Windows Server 2008. To use AD on such devices, IT teams must enable weak cryptography, which jeopardizes the organization’s security. 

Shortcomings of Active Directory Authentication

In the 1990s and early 2000s, most device management tools and systems were largely driven by on-prem Windows OSs, and AD authentication worked well with such IT environments. However, today’s OS landscape has increasingly become heterogeneous, with Linux and macOS platforms emerging on the scene as well as cloud-based infrastructure. 

Consequently, providing access controls and management in a heterogeneous IT environment has become a headache for IT teams in organizations. While legacy AD authentication can address IAM, it is far from efficient. In most cases, IT teams have been forced to use LDAP to authenticate Linux and macOS devices to AD, which creates an added layer to integrate and manage.

Essentially, organizations end up with multiple “mini directories” rather than one centralized and authoritative directory platform to offer authentication and authorization services. Besides heterogeneous OSs, the adoption rate for software-as-a-service (SaaS) applications and other cloud-based services has been dramatic in recent years.

This adoption comes with its own fair share of challenges in the IAM landscape. For example, most SaaS applications tend to be siloed, which complicates their management from an authorization perspective. Also, onboarding users in a SaaS-first environment is time-consuming and tedious because it involves users across multiple departments. 

Leverage JumpCloud Directory to Extend Active Directory Authentication in Heterogeneous IT Environments

JumpCloud is a comprehensive cloud-based directory platform that businesses can leverage to address the shortcomings of AD authentication in heterogeneous IT environments. You can use the JumpCloud Directory Platform to extend AD authentication to virtually all IT resources within the organization. You can also use JumpCloud to extend AD to the cloud or eliminate on-prem DCs entirely.

Серверы аутентификации

Documentation:

Product: UserGate NGFW

Version: 7.0.0

Серверы аутентификации — это внешние источники учетных записей пользователей, например, LDAP-сервер, или серверы, производящие аутентификацию для UserGate, например, RADIUS, TACACS+, Kerberos, SAML. Система поддерживает следующие типы серверов аутентификации:

Серверы аутентификации RADIUS, TACACS+, NTLM, SAML могут осуществлять только аутентификацию пользователей, в то время как LDAP-коннектор позволяет также получать информацию о пользователях и их свойствах.

LDAP-коннектор

LDAP-коннектор позволяет:

  • Получать информацию о пользователях и группах Active Directory или других LDAP-серверов. Поддерживается работа с LDAP-сервером FreeIPA. Пользователи и группы могут быть использованы при настройке правил фильтрации.

  • Осуществлять авторизацию пользователей через домены Active Directory/FreeIPA с использованием методов аутентификации Captive-портал, Kerberos, NTLM.

Для создания LDAP-коннектора необходимо нажать на кнопку Добавить, выбрать Добавить LDAP-коннектор и указать следующие параметры:

Наименование

Описание

Включено

Включает или отключает использование данного сервера аутентификации.

Название

Название сервера аутентификации.

SSL

Определяет, требуется ли SSL-соединение для подключения к LDAP-серверу.

Доменное имя LDAP или IP-адрес

IP-адрес контроллера домена, FQDN контроллера домена или FQDN домена (например, test.local). Если указан FQDN, то UserGate получит адрес контроллера домена с помощью DNS-запроса. Если указан FQDN домена, то при отключении основного контроллера домена, UserGate будет использовать резервный.

Bind DN («login»)

Имя пользователя, которое необходимо использовать для подключения к серверу LDAP. Имя необходимо использовать в формате DOMAIN\username или username@domain. Данный пользователь уже должен быть заведен в домене.

Пароль

Пароль пользователя для подключения к домену.

Домены LDAP

Список доменов, которые обслуживаются указанным контроллером домена, например, в случае дерева доменов или леса доменов Active Directory. Здесь же можно указать короткое netbios имя домена. Список доменов, указанный здесь будет использован для выбора на странице авторизации Captive-портала при включении соответствующей опции. Более подробно о настройке Captive-портала смотрите раздел Настройка Captive-портала.

Пути поиска

Список путей в сервере LDAP, начиная с которых система будет осуществлять поиск пользователей и групп. Необходимо указывать полное имя, например, ou=Office,dc=example,dc=com.

Kerberos keytab

Здесь можно загрузить keytab-файл для аутентификации Kerberos. Подробно об аутентификации Kerberos и создании keytab-файла смотрите в разделе Метод аутентификации Kerberos.

Важно! Рекомендуется загрузить keytab-файл даже в случае, если вы не планируете использовать аутентификацию Kerberos. При загруженном keytab-файле UserGate использует механизм kerberos для получения списка пользователей и их групп с серверов LDAP, что очень сильно снижает нагрузку на серверы LDAP. Если у вас в организации серверы LDAP содержат большое количество объектов (более 1000 групп и пользователей) использование keytab-файла обязательно.

После создания сервера необходимо проверить корректность параметров, нажав на кнопку Проверить соединение. Если параметры указаны верно, система сообщит об этом либо укажет на причину невозможности соединения.

ПримечаниеДля авторизации пользователей с помощью LDAP-коннектора необходимо, чтобы пользователи входили в доменную группу Domain users.

Настройка LDAP-коннектора завершена. Для авторизации LDAP-пользователей по имени и паролю необходимо создать правила Captive-портала. Более подробно о Captive-портале рассказывается в следующих главах руководства.

Для добавления пользователя или группы пользователей LDAP в правила фильтрации необходимо нажать на Добавить пользователя LDAP/Добавить группу LDAP, в поле поиска указать как минимум один символ, входящий в имена искомых объектов, после чего нажать на Поиск и выбрать желаемые группы/пользователей.

Сервер аутентификации пользователей RADIUS

Сервер RADIUS позволяет производить аутентификацию пользователей на серверах RADIUS, то есть UserGate выступает в роли RADIUS-клиента. При авторизации через RADIUS-сервер UserGate посылает на серверы RADIUS информацию с именем и паролем пользователя, а RADIUS-сервер отвечает, успешно прошла аутентификация или нет.

Сервер RADIUS не может предоставить список пользователей в UserGate, поэтому, если пользователи не были заведены в UserGate предварительно (например, локальные пользователи или полученные из домена AD с помощью LDAP-коннектора), в политиках фильтрации можно использовать только пользователей типа Known (успешно прошедших аутентификацию на сервере RADIUS) или Unknown (не прошедших авторизацию).

Для создания сервера аутентификации RADIUS необходимо нажать на кнопку Добавить, выбрать Добавить RADIUS-сервер и указать следующие параметры:

Наименование

Описание

Включен

Включает или отключает использование данного сервера аутентификации.

Название сервера

Название сервера аутентификации.

Секрет

Общий ключ, используемый протоколом RADIUS для аутентификации.

Хост

IP-адрес сервера RADIUS.

Порт

UDP-порт, на котором сервер RADIUS слушает запросы на аутентификацию. По умолчанию это порт UDP 1812.

После создания сервера аутентификации необходимо настроить Captive-портал для использования метода RADIUS. Более подробно о Captive-портале рассказывается в следующих главах руководства.

Сервер аутентификации пользователей TACACS+

Сервер TACACS+ позволяет производить аутентификацию пользователей на серверах TACACS+. При авторизации через TACACS+ сервер UserGate посылает на серверы TACACS+ информацию с именем и паролем пользователя, а сервер TACACS+ отвечает, успешно прошла аутентификация или нет.

Сервер TACACS+ не может предоставить список пользователей в UserGate, поэтому, если пользователи не были заведены в UserGate предварительно (например, локальные пользователи или полученные из домена AD с помощью LDAP-коннектора), в политиках фильтрации можно использовать только пользователей типа Known (успешно прошедших аутентификацию на сервере TACACS+) или Unknown (не прошедших авторизацию).

Для создания сервера аутентификации TACACS+ необходимо нажать на кнопку Добавить, выбрать Добавить TACACS+-сервер и указать следующие параметры:

Наименование

Описание

Включен

Включает или отключает использование данного сервера аутентификации.

Название сервера

Название сервера аутентификации.

Секретный ключ

Общий ключ, используемый протоколом TACACS+ для аутентификации.

Адрес

IP-адрес сервера TACACS+.

Порт

UDP-порт, на котором сервер TACACS+ слушает запросы на аутентификацию. По умолчанию это порт UDP 1812.

Использовать одно TCP-соединение

Использовать одно TCP-соединение для работы с сервером TACACS+.

Таймаут (сек)

Время ожидания сервера TACACS+ для получения аутентификации. По умолчанию 4 секунды.

Сервер аутентификации пользователей SAML IDP

Сервер аутентификации SAML IDP (Security Assertion Markup Language Identity Provider) позволяет авторизовать пользователей c помощью развернутой на предприятии системе Single Sign-On (SSO), например, Microsoft Active Directory Federation Service. Это позволяет пользователю, единожды авторизовавшись в системе SSO, прозрачно проходить авторизацию на всех ресурсах, поддерживающих аутентификацию SAML. UserGate может быть настроен в качестве SAML сервис-провайдера, использующего сервера SAML IDP для авторизации клиента.

Сервер SAML IDP не может предоставить свойства пользователей в UserGate поэтому, если не настроено подключение к домену AD с помощью LDAP-коннектора, в политиках фильтрации можно использовать только пользователей типа Known (успешно прошедших аутентификацию на сервере SAML) или Unknown (не прошедших аутентификацию).

Для использования авторизации с помощью сервера SAML IDP необходимо выполнить следующие шаги:

Наименование

Описание

Шаг 1. Создать DNS-записи для сервера UserGate.

На контроллере домена создать DNS-запись, соответствующую серверу UserGate, для использования в качестве домена для auth.captive, например, utm.domain.loc. В качестве IP-адреса укажите адрес интерфейса UserGate, подключенного в сеть Trusted.

Шаг 2. Настроить DNS-серверы на UserGate.

В настройках UserGate в качестве системных DNS-серверов указать IP-адреса контроллеров домена.

Шаг 3. Изменить адрес Домен auth captive-портала.

Изменить адрес Домен auth captive-портала в разделе Настройки на созданную на предыдущем шаге запись DNS. Подробно об изменении адреса домена Auth Captive-портала смотрите в разделе Общие настройки.

Шаг 4. Настроить сервер SAML IDP.

Добавить на сервере SAML IDP запись о сервис-провайдере UserGate, указывая созданное на шаге 1 FQDN имя.

Шаг 5. Создать сервер аутентификации пользователей SAML IDP.

Создать в UserGate сервер аутентификации пользователей SAML IDP.

Для создания сервера аутентификации пользователей SAML IDP необходимо в разделе Пользователи и устройства ➜ Серверы аутентификации нажать на кнопку Добавить, выбрать Добавить SAML IDP-сервер и указать следующие параметры:

Наименование

Описание

Включен

Включает или отключает использование данного сервера аутентификации.

Название сервера

Название сервера аутентификации.

Описание

Описание сервера аутентификации.

SAML metadata URL

URL на сервере SAML IDP, где можно скачать xml-файл с корректной конфигурацией для сервис-провайдера (клиента) SAML. При нажатии на кнопку Загрузить происходит заполнение необходимых полей настройки сервера аутентификации данными, полученными из xml-файла. Это предпочтительный метод настройки сервера аутентификации SAML IDP. Подробно о сервере SAML смотрите в соответствующей документации.

Сертификат SAML IDP

Сертификат, который будет использован в SAML-клиенте. Возможны варианты:

  • Создать новый сертификат из скачанного — если при настройке был использован метод загрузки xml- файла, то сертификат автоматически создается и ему назначается роль SAML IDP (смотрите раздел Управление сертификатами).

  • Использовать существующий сертификат. Сертификат уже должен быть создан или импортирован в разделе Сертификаты, и ему не должна быть назначена роль. После создания и сохранения сервера аутентификации этому сертификату будет назначена роль SAML IDP.

  • Не использовать сертификат.

Single sign-on URL

URL, используемая в сервере SAML IDP в качестве единой точки входа. Смотрите документацию на используемый у вас сервер SAML IDP для более детальной информации.

Single sign-on binding

Метод, используемый для работы с единой точкой входа SSO. Возможны варианты POST и Redirect. Смотрите документацию на используемый у вас сервер SAML IDP для более детальной информации.

Single logout URL

URL, используемый в сервере SAML IDP в качестве единой точки выхода. Смотрите документацию на используемый у вас сервер SAML IDP для более детальной информации.

Single logout binding

Метод, используемый для работы с единой точкой выхода SSO. Возможны варианты POST и Redirect. Смотрите документацию на используемый у вас сервер SAML IDP для более детальной информации.

Сервер аутентификации NTLM

Аутентификация NTLM позволяет прозрачно (без запроса имени пользователя и его пароля) авторизовать пользователей домена Active Directory. При авторизации с помощью NTLM сервер UserGate работает с контроллерами домена, выполняющими проверку пользователя с целью получения доступа в Интернет.

Сервер NTLM не может предоставить список пользователей в UserGate, поэтому, если пользователи не были заведены в UserGate предварительно (например, локальные пользователи или полученные из домена AD с помощью LDAP-коннектора), в политиках фильтрации можно использовать только пользователей типа Known (успешно прошедших аутентификацию на сервере NTLM) или Unknown (не прошедших аутентификацию).

Аутентификация NTLM может работать как при явном указании прокси-сервера в браузере пользователя (это стандартный режим), так и в прозрачном режиме, когда прокси-сервер в браузере не указан. Настройка UserGate не отличается от режима работы авторизации.

Для настройки авторизации с помощью NTLM необходимо выполнить следующие действия:

Наименование

Описание

Шаг 1. Настроить синхронизацию времени с контроллером домена.

В настройках UserGate включить синхронизацию времени с серверами NTP, в качестве основного и — опционально — запасного NTP-сервера указать IP-адреса контроллеров домена.

Шаг 2. Создать DNS-запись для сервера UserGate.

На контроллере домена создать DNS-записи, соответствующие серверу UserGate для использования в качестве домена для auth.captive и logout.captive, например, auth.domain.loc и logout.domain.loc.

В качестве IP-адреса укажите адрес интерфейса UserGate, подключенного в сеть Trusted.

Шаг 3. Изменить адрес Домен Auth Captive-портала.

Изменить адрес домена Auth Captive-портала и опционально адрес домена Logout Captive-портала в разделе Настройки.

Для домена Auth Captive-портала необходимо указать созданную на предыдущем шаге запись DNS.

Для домена Logout Captive-портала необходимо указать созданную на предыдущем шаге запись DNS.

Подробно об изменении адресов доменов Auth Captive-портала и Logout Captive-портала смотрите в разделе Настройка Captive-портала.

Шаг 4. Добавить NTLM-сервер.

В разделе Серверы аутентификации нажать на кнопку Добавить, выбрать Добавить NTLM-сервер и указать название и имя домена Windows. Для корректной работы аутентификации NTLM, необходимо, чтобы указанное здесь имя домена резолвилось в IP-адреса контроллеров домена.

Шаг 5. Создать правило Captive-портала с аутентификацией NTLM.

Настроить Captive-портал для использования метода аутентификации NTLM. Более подробно о Captive-портале рассказывается в следующих главах руководства.

Шаг 6. Разрешить доступ к сервису HTTP(S) для зоны.

В разделе Зоны разрешить доступ к сервису HTTP(S)-прокси для зоны, к которой подключены пользователи, авторизующиеся с помощью NTLM

Шаг 7. Для авторизации в стандартном режиме настроить прокси-сервер на компьютерах пользователей.

На компьютерах пользователей указать обязательное использование прокси-сервера, указать IP-адрес Trusted интерфейса UserGate в качестве адреса прокси сервера.

Важно! Вместо IP-адреса можно использовать доменное имя, но для NTLM важно, чтобы это имя было не из домена Active Directory, иначе Windows-компьютер будет пытаться использовать аутентификацию Kerberos.

Важно! В настройках UserGate имена, используемые в качестве домена для auth.captive и logout.captive, не должны быть из домена Active Directory, иначе Windows-компьютер будет пытаться использовать аутентификацию Kerberos.

Шаг 8. Для авторизации в прозрачном режиме настроить автоматическую проверку подлинности пользователя браузером для всех зон.

На компьютерах пользователей зайдите в Панель управления ➜ Свойства браузера ➜ Безопасность, выберите зону Интернет ➜ Уровень безопасности ➜ Другой ➜ Проверка подлинности пользователя и установите Автоматический вход в сеть с текущем именем пользователя и паролем (Control panel ➜ Internet options ➜ Security, выберите зону Internet ➜ Custom level ➜ User Authentication ➜ Logon и установите Automatic logon with current name and password).

Повторите данную настройку для всех других зон, настроенных на данном компьютере (Local intranet, Trusted sites).

Метод аутентификации Kerberos

Аутентификация Kerberos позволяет прозрачно (без запроса имени пользователя и его пароля) авторизовать пользователей домена Active Directory. При авторизации через Kerberos сервер UserGate работает с контроллерами домена, которые выполняют проверку пользователя, получающего доступ в Интернет.

Аутентификация Kerberos может работать как при явном указании прокси-сервера в браузере пользователя (это стандартный режим), так и в прозрачном режиме, когда прокси-сервер в браузере не указан.

Для авторизации с помощью Kerberos необходимо выполнить следующие действия:

Наименование

Описание

Шаг 1. Создать DNS-записи для сервера UserGate.

На контроллере домена создать DNS-записи, соответствующие серверу UserGate, для использования в качестве доменов для auth.captive и logout.captive, например, auth.domain.loc и logout.domain.loc

В качестве IP-адреса укажите адрес интерфейса UserGate, подключенного в сеть Trusted.

Важно! Для корректной работы создайте записи типа A, не используйте CNAME-записи.

Шаг 2. Создать пользователя для сервера UserGate.

Создать пользователя в домене AD, например, kerb@domain.loc с опцией password never expires. Установите пароль пользователю kerb.

Важно! Не используйте символы национальных алфавитов, например, кириллицу, в именах пользователя kerb или в организационных единицах Active Directory, где вы планируете создать учетную запись пользователя kerb.

Важно! Не используйте в качестве пользователя для Kerberos пользователя, созданного для работы LDAP-коннектора. Необходимо использовать отдельную учетную запись.

Шаг 3. Создать keytab-файл.

На контроллере домена, создать keytab файл, выполнив следующую команду из-под администратора (команда в одну строку!):

ktpass.exe /princ HTTP/auth.domain.loc@DOMAIN.LOC /mapuser kerb@DOMAIN.LOC /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass * /out C:\utm.keytab

Введите пароль пользователя kerb.

Важно! Команда чувствительна к регистру букв. В данном примере:

auth.domain.loc — DNS-запись, созданная для сервера UserGate на шаге 1

DOMAIN.LOC — Kerberos realm domain, обязательно большими буквами!

kerb@DOMAIN.LOC — имя пользователя в домене, созданное на шаге 2, имя realm-домена обязательно большими буквами!

Шаг 4. Настроить DNS-серверы на UserGate.

В настройках UserGate в качестве системных DNS-серверов указать IP-адреса контроллеров домена.

Шаг 5. Настроить синхронизацию времени с контроллером домена.

В настройках UserGate включить синхронизацию времени с серверами NTP, в качестве основного и — опционально — запасного NTP-сервера указать IP-адреса контроллеров домена.

Шаг 6. Изменить адрес Домен auth captive-портала.

Изменить адрес Домен auth captive-портала и опционально адрес Домен logout captive-портала в разделе Настройки на созданные на предыдущем шаге записи DNS. Подробно об изменении адресов доменов смотрите в разделе Общие настройки.

Шаг 7. Создать LDAP-коннектор и загрузить в него keytab-файл.

Создать сервер аутентификации типа LDAP-коннектор и загрузить полученный на предыдущем шаге keytab-файл.

Важно! Не используйте в качестве пользователя для LDAP-коннектора, пользователя, созданного ранее для работы Kerberos. Необходимо использовать отдельную учетную запись.

Подробно о настройке LDAP-коннектора смотрите раздел LDAP-коннектор.

Шаг 8. Создать правило Captive-портала с аутентификацией по Kerberos.

Настроить Captive-портал для использования метода аутентификации Kerberos. Более подробно о Captive-портале рассказывается в разделе Настройка Captive-портала.

Шаг 9. Разрешить доступ к сервису HTTP(S) для зоны.

В разделе Зоны разрешить доступ к сервису HTTP(S)-прокси для зоны, к которой подключены пользователи, авторизующиеся с помощью Kerberos.

Шаг 10. Для авторизации в стандартном режиме настроить прокси-сервер на компьютерах пользователей.

На компьютерах пользователей указать обязательное использование прокси-сервера в виде FQDN-имени UserGate, созданного на шаге 3.

Шаг 11. Для авторизации в прозрачном режиме настроить автоматическую проверку подлинности пользователя браузером для всех зон.

На компьютерах пользователей зайдите в Панель управления ➜ Свойства браузера ➜ Безопасность, выберите зону Интернет ➜ Уровень безопасности ➜ Другой ➜ Проверка подлинности пользователя и установите Автоматический вход в сеть с текущем именем пользователя и паролем (Control panel ➜ Internet options ➜ Security, выберите зону Internet ➜ Custom level ➜ User Authentication ➜ Logon и установите Automatic logon with current name and password).

Повторите данную настройку для всех других зон, настроенных на данном компьютере (Local intranet, Trusted sites).

Метод аутентификации HTTP Basic

Аутентификация Basic позволяет авторизовать пользователей с явно указанным прокси сервером по базе локальных и LDAP-пользователей. Не рекомендуется использовать данный тип аутентификации поскольку имя пользователя и пароль передаются в открытом виде по сети. Аутентификация HTTP Basic можно использовать для автоматической авторизации утилит командной строки, которым необходим доступ в Интернет, например:

curl -x 192.168.179.10:8090 -U user: password http://www.msn.com

Для авторизации по HTTP Basic необходимо выполнить следующие действия:

Наименование

Описание

Шаг 1. Создать DNS-запись для сервера UserGate.

На контроллере домена создать DNS-записи, соответствующие серверу UserGate для использования в качестве домена для auth.captive и logout.captive, например, auth.domain.loc и logout.domain.loc.

В качестве IP-адреса укажите адрес интерфейса UserGate, подключенного в сеть Trusted.

Шаг 2. Изменить адрес Домен Auth Captive-портала.

Изменить адрес домена Auth Captive-портала и опционально адрес домена Logout Captive-портала в разделе Настройки.

Для домена Auth Captive-портала необходимо указать созданную на предыдущем шаге запись DNS.

Для домена Logout Captive-портала необходимо указать созданную на предыдущем шаге запись DNS.

Подробно об изменении адресов доменов Auth Captive-портала и Logout Captive-портала смотрите в разделе Настройка Captive-портала.

Шаг 3. Создать правило Captive-портала с аутентификацией по HTTP Basic.

Настроить Captive-портал для использования метода аутентификации HTTP Basic.

При настройке, помимо метода HTTP Basic, необходимо добавить базу пользователей, по которой будет проверяться аутентификация (например, добавить методы аутентификации Локальный пользователь или Сервер LDAP).

Более подробно о Captive-портале рассказывается в следующих главах руководства.

Шаг 4. Разрешить доступ к сервису HTTP(S) для зоны.

В разделе Зоны разрешить доступ к сервису HTTP(S)-прокси для зоны, к которой подключены пользователи, авторизующиеся с помощью HTTP Basic.

Шаг 5. Настроить прокси-сервер на компьютерах пользователей

На компьютерах пользователей указать обязательное использование прокси-сервера, указать IP-адрес Trusted интерфейса UserGate в качестве адреса прокси сервера.


Эта статья была:  

Полезна |

Не полезна


Сообщить об ошибке

ID статьи: 394

Последнее обновление: 15 ноя, 2022

Ревизия: 3

Просмотры: 1310

Комментарии: 0

Теги

What Is LDAP Authentication? 

LDAP (Lightweight Directory Access Protocol) is a widely-used open directory services protocol, which allows computer systems to access user directory information over a network.. LDAP provides a way to organize information (often user authentication information) in a hierarchical manner and to access this information quickly.

LDAP authentication is a process of verifying the identity of a user by checking the provided credentials (username and password) against the data stored in an LDAP directory server. The directory server holds information about all authorized users in the system and their attributes such as passwords, names, and access privileges. 

When a user tries to log in, the system sends the user’s credentials to the directory server and the server validates the information. If the information matches what is stored in the directory, the user is granted access, otherwise the authentication request is denied.

In this article:

  • Why Is LDAP Important for Authentication?
  • LDAP vs. Active Directory: What Is the Difference?
  • How LDAP Authentication Works
  • LDAP Authentication Code Examples
    • Simple Authentication
    • Authentication with Two Organizational Units (OUs)
  • Authentication and Authorization with Frontegg

Why Is LDAP Authentication Important? 

The following are some of the key benefits of using LDAP for authentication:

  • Centralized management: With LDAP, user authentication information is stored in a centralized location, making it easier to manage and update.
  • Scalability: LDAP is designed to handle large volumes of user authentication data, making it an ideal solution for large organizations with many users.
  • Interoperability: LDAP is a standard protocol and is supported by many different platforms, making it easy to integrate with other systems and applications.
  • Security: LDAP uses encryption for transmitting authentication information, ensuring that user credentials are protected during transmission.
  • Efficiency: LDAP is designed to be fast and efficient, making it well-suited for real-time authentication requests.

LDAP vs. Active Directory: What Are the Differences?

Active Directory is a directory service created by Microsoft for use in Windows-based networks. It provides centralized management of resources, including users, computers, and other network devices, and is designed to make administration and management of large, complex enterprise networks easier.

LDAP and Active Directory are both directory services used for managing and organizing information, but they have some key differences, including:

LDAP Active Directory
Purpose Open, vendor-neutral directory protocol Microsoft-specific directory service for Windows-based networks
Functionality Mainly focused on directory services, often used for authentication Comprehensive directory service including authentication, authorization, etc.
Scalability Basic scalability features Advanced scalability features, such as multiple domain controllers and replication
Integration Can be integrated with a wide range of technologies Tightly integrated with other Microsoft technologies, such as Windows Server
Security Supports encryption for secure transmission of data Supports advanced security features, such as fine-grained access control
Ease of Administration Basic administration tools Advanced administration tools and a graphical user interface

To summarize, LDAP is a basic directory protocol that is often used for authentication, while Active Directory is a comprehensive directory service that is well-suited for large, complex enterprise networks. The choice between the two will depend on the specific requirements of the organization.

How Does LDAP Authentication Work? 

LDAP authentication typically works as follows:

  1. The user provides their credentials (username and password) to the system.
  2. The system sends a bind request to the LDAP server, containing the user’s credentials.
  3. The LDAP server checks the user’s credentials against the data stored in its directory.
  4. If the credentials match, the server sends a success message to the system, indicating that the user has been authenticated.
  5. The system grants the user access to the requested resource.
  6. If the credentials do not match, the server sends a failure message to the system, indicating that the user has not been authenticated.
  7. The system denies the user access to the requested resource.

LDAP uses encryption to protect the transmission of user credentials between the system and the LDAP server, ensuring that sensitive information is kept secure. Additionally, the LDAP directory is designed to be highly available and reliable, to ensure that user authentication requests can be processed quickly and efficiently.

LDAP Authentication Code Examples 

Simple Authentication

The code below uses the Python ldap library to connect to the Active Directory server and verify the user’s credentials. If the bind is successful, the user’s credentials are correct, and the function returns True. If the bind fails due to invalid credentials, the function returns False. If something else goes wrong, an error message is printed, and the function returns False.

The code looks like this:

import ldap

def authenticate(username, password):
    ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
    server = "ldaps://ldap.example.com:636"
    base_dn = "dc=example.com"
    user_dn = "uid={},{}".format(username, base_dn)
    try:
        l = ldap.initialize(server)
        l.protocol_version = ldap.VERSION3
        
        l.simple_bind_s(user_dn, password)

If the bind was successful:

        return True
    except ldap.INVALID_CREDENTIALS:

If the bind failed:

        return False
    except ldap.LDAPError as error:
        print("Error:", error)
        return False

Authentication with Two Organizational Units (OUs)

The code below is similar to the previous example, with one key difference: the user_dn is specified with two organizational units (OUs), ou=users and ou=intranet. This makes it possible to have separate user directories for different parts of the organization. 

The ou=intranet OU ensures that only users within the intranet can authenticate, while the ou=users OU narrows it down to the specific user directory. The rest of the code remains the same, performing the LDAP bind and checking the user’s credentials.

Here’s an example of how to perform LDAP authentication using Active Directory with a compartmentalized intranet in Python:

import ldap

def authenticate(username, password):
    ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
    server = "ldaps://ldap.example.com:636"
    base_dn = "dc=example.com"
    user_dn = "uid={},ou=users,ou=intranet,{}".format(username, base_dn)

    try:
        l = ldap.initialize(server)
        l.protocol_version = ldap.VERSION3
        l.simple_bind_s(user_dn, password)

If the bind was successful, the credentials are correct:

        return True
    except ldap.INVALID_CREDENTIALS:

If the bind failed, the credentials are incorrect:

    return False
    except ldap.LDAPError as error:

If something else went wrong and the authentication failed:

 print("Error:", error)
        return False
    finally:
        # close the connection to the server
        l.unbind_s()

Authentication and Authorization with Frontegg

The industry standard today is to use Authentication providers to “build the door”, but what about Authorization (the door knob)? Most authentication vendors don’t go that extra mile, forcing SaaS vendors to invest in expensive in-house development. This often delays investment in core technology development, which negatively impacts innovation and time-to-market (TTM) metrics. 

Frontegg’s end-to-end user management platform allows you to authenticate and authorize users with just a few clicks. Integration takes just a few minutes, thanks to its plug-and-play nature. It’s also multi-tenant by design. 

Start For Free

The Complete Guide to SaaS Multi-Tenant Architecture

Read case study

Looking to take your User Management to the next level?

Sign up. It’s free

  • Вместо windows загружается efi shell
  • Вместо текста знаки вопроса в windows
  • Вместо загрузки windows запускается биос
  • Вместо сампа запускается обычная гта windows 10
  • Вместо завершения работы компьютер перезагружается windows 10