|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поскольку все сотрудники перешли на удаленную работу, для доступа к внутренним сетям потребовалась установка сервера VPN. В результате администрирование всех этих ресурсов – добавление новых сотрудников и блокирование уволившихся – резко повысило нагрузку на ИТ-отдел. Поэтому возникла острая необходимость во внедрении единой корпоративной системы управления идентификационной информацией сотрудников, которая, с одной стороны, хранила бы организационную информацию о пользователях, такую как имя, контакты, отдел, должность, с другой – позволяла бы управлять политиками доступа к корпоративным ресурсам – как к веб-сайтам, так и серверам и виртуальным машинам в режиме командной строки. FreeIPA и IpsilonПоскольку у нас уже была готовая база сотрудников в G Suite, звучали предложения использовать именно его в качестве первичного источника идентификационной информации. И действительно, вход на некоторые ресурсы уже был организован с использованием Google OAuth2. Но предлагаемые способы доступа на системы Linux по ssh в консольном окружении были крайне неудобными. Более правильным было бы иметь свою систему управления идентификационной информацией, которая бы управляла доступом на системы Linux правильным образом и при этом служила бы источником идентификационной информации для Google. Но у Google предусмотрен только один способ получения идентификации пользователей от сторонних источников – протокол SAML (security assertion markup language – язык разметки декларации безопасности). Наиболее популярной реализацией IdP (Identity Provider – поставщик услуг) на тот момент были решения от Microsoft. Но для нас использование этих решений было неприемлемым, поскольку приоритет в компании отдается исключительно продуктам Open Source. И вот при изучении новых пакетов, вошедших в состав CentOS 7.2, был обнаружен пакет ipsilon версии 1.0.0, в состав которого входил не только совместимый с G Suite сервер IdP, поддерживающий протоколы SAML2, OpenID Connect, OAuth2, Persona, OpenID 2.0, но и инструментарий, позволяющий легко подключать сайты поставщиков услуг на базе веб-сервера Apache. Поскольку обязательным предварительным условием для установки Ipsilon являлось наличие установленного и настроенного сервера FreeIPA, был сделан однозначный выбор в пользу связки FreeIPA + Ipsilon. Введение в SAMLПри использовании инициируемой поставщиком услуг аутентификации по протоколу SAML обмен идентификационной информацией выглядит следующим образом:
Более подробное описание SAML выходит за рамки данной статьи. Возможности FreeIPAFreeIPA (от Free Identity, Policy, Audit) – открытый проект для создания централизованной системы масштаба предприятия по управлению идентификацией пользователей, задания политик доступа и аудита сетей. Поддерживается компанией Red Hat, является апстрим-проектом для Red Hat Identity Manager. Включает в себя следующие компоненты:
Начиная с версии 3.0.0, FreeIPA также использует Samba для интеграции с Active Directory от Microsoft путем доверительных отношений. В отличие от серверов каталогов общего назначения, таких как Red Hat Directory Server или Fedora Directory Server, FreeIPA является специализированным контроллером домена, используемые цели и механизмы которого схожи с Microsoft Active Directory. Управление политиками реализуется на основе правил HBAC (host based access control, управление доступом на уровне узла – описывает, какие службы доступны пользователям на том или ином зарегистрированном хосте) и правил sudo (какие команды может выполнять пользователь от имени root или другого пользователя). Также система позволяет очень гибко делегировать пользователям различные роли, не передавая им пароль администратора. Например, можно присвоить пользователю специальную роль Enroll hosts, которая даст возможность регистрировать хосты. Реализован также механизм построения многоуровневой системы управления доступом, то есть руководителю группы пользователей можно дать полномочия добавлять в нее новых пользователей. Установка сервера FreeIPAДля безопасной установки сервера FreeIPA на свежеустановленный CentOS 7 необходимо провести определенные подготовительные действия. Предположим, установка планируется для домена corp.example.com, а имя сервера будет auth.corp.example.com. Поскольку наш сервер будет первичным сервером DNS для этого домена, чтобы исключить возможность использования его дляDоS-атак, необходимо разрешить рекурсивные запросы только из внутренней сети. Для этого нужно установить пакет bind, в файле /etc/named.conf добавить секцию с адресами локальной сети:
В строке allow-recursion нужно заменить any на internal. Следующим этапом будет настройка firewall. На CentOS 7 это можно сделать, выполнив следующую последовательность команд:
Проверить правильность настройки можно командой:
Также, поскольку в FreeIPA используется ntpd, нужно отключить и остановить службу cronyd. По умолчанию FreeIPA генерирует самоподписанные сертификаты. Чтобы не тратить время на установку CA-сертификата на клиентские компьютеры, рекомендуется запастись сертификатами, выданными авторизованным центром. Мыиспользовали сертификаты Comodo, но можно воспользоваться и бесплатными Letsencrypt. Теперь мы готовы к установке сервера FreeIPA. Установка производится следующими командами:
Здесь мы устанавливаем сервер для домена corp.example.com и Kerberos Realm CORP.EXAMPLE.COM, разрешаем настройку DNS при отключенных forwarders, разрешаем создание домашних каталогов при первом подключении пользователей, указываем начинать ID добавляемых пользователей с 10 000. Дальше указывается комплект полученных от авторизованного центра сертификатов:
После этого сервер FreeIPA готов к работе. Но нужно иметь в виду, что после установки по умолчанию в нем будет существовать HBAC-правило allow_all, которое разрешает доступ всем пользователям ко всем сервисам на всех зарегистрированных узлах. Рекомендуется сразу же изменить это правило так, чтобы полный доступ имели только члены группы системных администраторов. Ниже приведен пример измененной группы allow_all:
Как видно из примера, теперь доступ ко всем службам на всех хостах разрешен только пользователям из группы infrastructure. Регистрация клиента, установка IpsilonТеоретически Ipsilon может быть установлен на ту же систему, что и FreeIPA, но в целях безопасности мы рассмотрим установку на отдельную систему. Сначала нужно установить клиент и зарегистрировать сервер в домене IPA. Установка и регистрация производятся следующими командами:
Для установки Ipsilon необходимо в /etc/yum.repos.d создать файл конфигурации репозитория следующего вида:
После этого установить необходимые для подключения к FreeIPA компоненты командой:
Теперь осталось перезапустить httpd, и Ipsilon готов к работе – можно заходить на его веб-страницу https://idp.corp.example.com/idp с логином и паролем администратора FreeIPA и приступать к добавлению поставщиков услуг. Чтобы недобавлять исключения безопасности в браузер, рекомендуется сразу же заменить автоматически сгенерированные самоподписанные сертификаты на Letsencrypt. Рисунок 1. Административная консоль Ipsilon в браузере Если у вас уже отключено HBAC-правило allow_all, как было рекомендовано выше, необходимо создать новое правило, которое разрешает всем пользователям организации доступ на Ipsilon. Оно может выглядеть следующим образом:
Интеграция с G SuiteДля настройки интеграции с G Suite необходимо иметь полномочия администратора домена G Suite и администратора домена FreeIPA. Первый этап – настройка Ipsilon. Для этого необходимо зайти на Ipsilon с правами администратора, перейти к вводу нового поставщика услуг по пути Administration → Identity Providers → SAML2 → Manage и нажать Add New. После этого заполнить произвольным образом поля Name и Description, в поле ссылки на поставщика услуг указать адрес перехода https://mail.google.com/a/example.com, где example.com – ваш домен, а в поле метаданных ввести следующие метаданные, заменив предварительно example.com на ваш домен:
Рисунок 2. Добавление поставщика услуг G Suite Следующим этапом является настройка G Suite.
После этого необходимо подождать 15 минут для синхронизации серверов Google, и можно пользоваться единым входом. Единый вход с использованием KerberosПри использовании домена FreeIPA каждый пользователь имеет возможность заходить по ssh на разрешенные серверы с использованием билетов Kerberos. Подключение рабочей станции к домену при этом не требуется. На операционной системе Mac OS все необходимые для этого компоненты установлены по умолчанию, на Linux требуется доустановить соответствующие пакеты. Для получения билета Kerberos требуется ввести команду:
где:
После этого будет предложено ввести пароль единого входа. Просмотреть полученный билет можно командой klist, удалить – командой kdestroy. Также можно использовать команду kpasswd для изменения пароля единого входа. Приналичии билета Kerberos доступ на разрешенные контроллером домена системы происходит без пароля при помощи авторизации gssapi. Для использования gssapi в среде OS Windows необходимо либо установить Windows Subsystem for Linux, либо настроить интеграцию putty и MIT Kerberos for Windows. Большинство современных браузеров также поддерживает аутентификацию gssapi. Это Safari, Chrome и Firefox в Mac OS, Chrome и Firefox в Linux, Firefox в Windows (для последнего требуется интеграция с MIT Kerberos for Windows). Описание настройки Kerberos в браузерах выходит за рамки данной статьи. При настроенном браузере и имеющемся билете Kerberos вход на страницы FreeIPA и Ipsilon происходит без ввода пароля. Интеграция произвольных веб-сайтовДоступ на любой сайт под управлением веб-сервера Apache можно ограничить при помощи пакета ipsilon-client. Для установки пакета необходимо создать файл конфигурации репозитория, как описано выше, и установить пакет командой:
Предположим, нужно ограничить доступ к странице https://site.corp.example.com/site. Для этого нужно выполнить команду:
В результате выполнения этой команды в каталоге /etc/httpd/saml2/site.corp.example.com будет создано несколько файлов, включая файл metadata.xml. Следующий этап – настройка поставщика услуг на Ipsilon. Для этого нужно перейти на страницу добавления нового поставщика услуг, как описано выше, заполнить произвольным образом поля названия и описания ресурса, в поле перехода указать ссылку https://site.corp.example.com/site, а в поле ввода метаданных скопировать содержимое полученного на первом шаге файла metadata.xml. Теперь, если в браузере открыть ссылку https://site.corp.example.com/site, пользователь будет перенаправлен на страницу аутентификации Ipsilon для ввода пароля. Если доступ к ресурсу должен быть предоставлен не всем пользователям организации, а только участникам определенной группы, эту группу можно задать в файле конфигурации модуля Apache mod_auth_mellon в виде переменной окружения REMOTE_USER_GROUP со значением в виде имени группы. Более подробно это описано в документации mod_auth_mellon и выходит за рамки данной статьи. Кроме описанного, существует множество других способов интеграции веб-приложений с FreeIPA – более подробно с ними можно ознакомиться на странице документации FreeIPA. В настоящее время в нашей компании c FreeIPA интегрировано большинство внутренних и внешних сервисов и поставщиков услуг, планируется перевод с OAuth2 и локальной авторизации на SAML нескольких оставшихся. В результате внедрения корпоративной системы управления идентификационной информацией были достигнуты следующие цели:
Комментарии отсутствуют
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|