Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Настройка аутентификации пользователей – openldap и ubuntu на практике

Где работаем: ldap-client

Перейдём к настройке клиентской рабочей станции. Для начала установим необходимые пакеты:

#  apt-get install ldap-utils libnss-ldapd libpam-ldapd

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

Прежде чем делать запросы к LDAP-серверу, проверим параметры клиента в /etc/ldap/ldap.conf:

BASE  dc=example,dc=comURI  ldap://ldap-srv.example.comTLS_CACERT /etc/ssl/certs/rootca.crtTLS_REQCERT demandTLS_CRLFILE /etc/ssl/rootca.crlTIMELIMIT 15TIMEOUT  20

Конечно, для того, чтобы всё заработало, сертификат нашего Certificate Authority (rootca.crt) и CRL-файл (rootca.crl) должны быть на месте.

Проверим работоспособность простым запросом. Результат опустим (Вы должны увидеть всё DIT):

$  ldapsearch -xZZLLLWD cn=nssproxy,ou=users,dc=example,dc=com
Enter LDAP Password:
dn: dc=example,dc=com
...

Поправим конфигурацию нашей локальной службы имён LDAP в файле /etc/nslcd.conf. Измените значение директивы bindpw на пароль записи cn=nssproxy,ou=users,dc=example,dc=com, который мы задавали ранее:

uid nslcdgid nslcduri ldap://ldap-srv.example.combase dc=example,dc=combinddn cn=nssproxy,ou=users,dc=example,dc=combindpw пароль.пользователя.nssproxyrootpwmoddn cn=admin,dc=example,dc=combase group ou=groups,dc=example,dc=combase passwd ou=users,dc=example,dc=combase shadow ou=users,dc=example,dc=combind_timelimit 5timelimit 10idle_timelimit 60ssl start_tlstls_reqcert allowtls_cacertfile /etc/ssl/certs/rootca.crtnss_initgroups_ignoreusers bin,daemon,games,lp,mail,nobody,nslcd,root,sshd,sync,uucpnss_initgroups_ignoreusers sys,man,news,proxy,www-data,backup,list,irc,gnats,landscape

Краткое описание использованных директив:

Поменяем права доступа к nslcd.conf, потому что теперь в нём хранится информация для аутентификации:

#  chmod 600 /etc/nslcd.conf
#  chown nslcd:nslcd /etc/nslcd.conf

Проверим содержимое /etc/nsswitch.conf:

passwd:         compat ldapgroup:          compat ldapshadow:         compat ldaphosts:          files dnsnetworks:       filesprotocols:      db filesservices:       db filesethers:         db filesrpc:            db filesnetgroup:       nis ldap

Убедимся в том, что демон nslcd запускается при старте системы и перезапустим его:

#  update-rc.d nslcd defaults
 System start/stop links for /etc/init.d/nslcd already exist.
#  service nslcd restart
 * Starting LDAP connection daemon nslcd  [ OK ]

Убедимся, что в системе ldap-clientНЕТ учётной записи с именем nssproxy. Следующая команда должна выполняться без результата:

$  grep nssproxy /etc/passwd

Убедимся так же, что кэширующий демон службы имён загружается при старте системы и перезапустим его:

#  update-rc.d nscd defaults
 System start/stop links for /etc/init.d/nscd already exist.
#  service nscd restart
 * Restarting Name Service Cache Daemon nscd
   ...done.

Сделаем пару запросов к LDAP-серверу, используя настроенную нами систему:

$  getent passwd test.user
test.user:x:1101:1101:Test User:/home/test.user:/bin/bash
$  getent group test.group
test.group:*:1101:

Для того, чтобы проверить доступность информации о пароле потребуется выполнить getent от имени пользователя root:

#  getent shadow test.user
test.user:*:15140:0:99999:7:::0

Не беспокойтесь, хэш пароля мы видеть не должны.

Отлично, всё работает! Вышеприведённые результаты команд означают, что система ldap-client может осуществлять поиск по данным пользователей  и групп в нашем каталоге OpenLDAP.

Создадим домашний каталог нашего тестового пользователя и установим для него права доступа:

#  mkdir /home/test.user
#  chown test.user:test.group /home/test.user

Запустим в отдельном терминале вывод журнала аутентификации:

#  tail -f /var/log/auth.log

В другом терминале выполним:

$  su - test.user

Мы должны получить приглашение командной строки пользователя test.user.

Теперь попробуем зайти на машину ldap-client по сети с использованием ssh под учётной записью test.user.

Демон ssh в конфигурации по-умолчанию должен работать с поддержкой PAM (и, соответственно, поддерживать аутентификацию через LDAP). Но на всякий случай приведём рабочую конфигурацию /etc/ssh/sshd_config:

Port 22Protocol 2HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_keyHostKey /etc/ssh/ssh_host_ecdsa_keyHostKey /etc/ssh/ssh_host_ed25519_keyUsePrivilegeSeparation yesKeyRegenerationInterval 3600ServerKeyBits 1024LogLevel INFOLoginGraceTime 120PermitRootLogin without-passwordStrictModes yesRSAAuthentication yesPubkeyAuthentication yesIgnoreRhosts yesRhostsRSAAuthentication noHostbasedAuthentication noPermitEmptyPasswords noChallengeResponseAuthentication noX11Forwarding yesX11DisplayOffset 10PrintMotd noPrintLastLog yesTCPKeepAlive yesAcceptEnv LANG LC_*Subsystem sftp /usr/lib/openssh/sftp-serverUsePAM yesAddressFamily inetAllowGroups sysadmin test.groupSyslogFacility AUTHPRIVPasswordAuthentication yesAllowTcpForwarding noClientAliveInterval 120ClientAliveCountMax 2

Часть файла до пустой строки — конфигурация по-умолчанию. Далее — добавленное нами. Обратите внимание на строку с директивой AllowGroups. С помощью неё мы ограничиваем список групп пользователей, которые могут быть аутентифицированы через ssh. За информацией по остальным директивам обратитесь к документации.

Проверим работу с использованием какой-нибудь третьей машины. Например, выполним на нашем DNS-сервере (dns-srv):

$  ssh [email protected]
Password:
test.user@ldap-client:~$

Вывод последней команды сокращён. Если появляется приглашение командной строки, значит всё в порядке!

Где работаем: ldap-srv

Давайте заглянем в /var/log/slapd.log на нашем сервере. Мы можем обнаружить там следующие строки:

ldap-srv slapd[1304]: <= mdb_equality_candidates: (objectClass) not indexed
ldap-srv slapd[1304]: <= mdb_equality_candidates: (uid) not indexed

С помощью следующей команды мы можем убедиться, что в нашем каталоге пока нет никаких индексов:

$  ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b olcDatabase={1}mdb,cn=config olcDbIndex
Enter LDAP Password:
dn: olcDatabase={1}mdb,cn=config

Это значит, что в нашей базе данных надо создать индексы для атрибутов из журнала  /var/log/slapd.log. Поэтому создадим ещё один LDIF-файл 5-posixAccount.indexes.ldif и запишем в него:

dn: olcDatabase={1}mdb,cn=configchangetype: modifyadd: olcDbIndexolcDbIndex: default pres,eq-add: olcDbIndexolcDbIndex: uid-add: olcDbIndexolcDbIndex: cn,sn pres,eq,sub-add: olcDbIndexolcDbIndex: objectClass eq-add: olcDbIndexolcDbIndex: memberUid eq-add: olcDbIndexolcDbIndex: uniqueMember eq-add: olcDbIndexolcDbIndex: uidNumber-add: olcDbIndexolcDbIndex: gidNumber eq

Зачем мелочиться? Укажем по-больше индексируемых атрибутов. И загрузим конфигурацию в наш каталог:

$  ldapadd -xZZWD cn=admin,dc=example,dc=com -f posixAccount.indexes.ldif
Enter LDAP Password:
modifying entry "olcDatabase={1}mdb,cn=config"

Проверим результат изменений:

$  ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b olcDatabase={1}mdb,cn=config olcDbIndex
Enter LDAP Password:
dn: olcDatabase={1}mdb,cn=config
olcDbIndex: default pres,eq
olcDbIndex: uid
olcDbIndex: cn,sn pres,eq,sub
olcDbIndex: objectClass eq
olcDbIndex: memberUid eq
olcDbIndex: uniqueMember eq
olcDbIndex: uidNumber
olcDbIndex: gidNumber eq

Отлично! Теперь в журнале /var/log/slapd.log не должно быть ошибок.

Аутентификация с использованием ldap в linux

В Linux поиск информации о пользовательских аккаунтах осуществляется в абстрактных «базах данных» passwd, groups и shadow, доступ к которым предоставляет так называемый Переключатель Сервисов Имён (Name Service Switch), являющийся интерфейсной прослойкой между пользовательскими приложениями и реальными формами представления данных об обьектах.

Таким образом, NSS позволяет абстрагироваться от конкретного представления данных и берёт на себя взаимодействие с необходимыми службами по понятным им протколам. Собственно авторизацию пользователя в системе обеспечивает служба PAM (Подключаемые Модули Аутентификации), которая в соответствии со своим названием имеет модульную архитектуру, позволяющую максимально гибко проектировать процесс аутентификации, объединяя модули по принципу стэка.

Настройка жесткого диска


Это можно сделать вручную (пункт Manual), однако для большинства случаев подойдет и дефолтный вариант –

Guide – use entire disk and set up LVMLVM (Logical Volume Manager) – подсистема, позволяющая объединить несколько дисков в один, а затем разбить его удобным образом.

Далее инсталлятор предлагает нам выбрать диск и предупреждает, что после подтверждения диск будет отформатирован

Необходимо указать схему разбиения. Я выбираю пункт по-умолчанию All files in one partition

После инсталлятор просит подтверждения применяемого разделения и предупреждает о форматировании диска, выбираем Yes

Инсталлятор предлагает нам указать некоторую информацию о нас

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

После чего, основываясь на указанные нами данные в предыдущем шаге, генерирует доменное имя. Его можно изменить, тогда нам понадобится ввести полное доменное имя. Рекомендуется выбирать поддомен домена DNS, которым мы управляем. Например, если мы зарегистрировали домен livelinux.org, мы можем использовать ldap.livelinux.org. ldap в данном случае – имя хоста.Выделенная база LDAP определяется автоматически.

На скриншоте представлено конечное имя домена

Начался процесс инициализации

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

По завершении установки нас приветствует окно настройки домена. На этом этапе нам нужно определить роль домена.

Для этого есть четыре опции:

Для создания нового домена, выбираем первую опцию –

Create a new UCS domain

, далее мы сможем посмотреть процесс создания домена

Первый запуск, подтверждение почты и обновление системы

После установки системы нас ждет инструкция по открытию

Web Management Interface

в браузере

Открываю браузер и пишу в адресной строке 192.168.0.103

где 192.168.0.103 — ip адрес сервера, который мы назначили при установке

Браузер предупреждает меня о небезопасности сайта, после чего я попадаю на главную страницу

Настройка контейнера nginx для авторизации в active directory (ldap)

Мы проверили работу демона аутентфикации nginx-ldap-auth, теперь можно перейти к настройке Nginx. В данной статье, покажу, как настроить авторизацию для docker registry с учетной записью Active Directory. Nginx будем запускать в docker контейнере. Создадйте Dockerfile:

FROM nginx
COPY nginx-ldap-auth.conf /etc/nginx/conf.d/nginx-ldap-auth.conf

В директории с Dockerfile создадйте файл конфигурации nginx-ldap-auth.conf. Содержание файла:

Следующий пункт – выбор языка установки

Поддерживаемые языки: английский, французский и немецкий. Выбираем

Russian

. Установка продолжится на английском, но это необходимый шаг, т.к. следующий пункт (

Select your location

) предлагает страны на выбор, основываясь на выбранном нами языке

Установка пароля для root пользователя


Инсталлятор предупреждает нас о том, что пароль должен быть надежным. Он может содержать буквы, цифры и знаки препинания. Минимальная длина – 8 символов. На скриншоте активирован чек-бокс

Show Password in Clear

, отображающий вводимый мною пароль

Пользователь создан. авторизуемся под ним в nextcloud

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Nextcloud встречает нас разделом Все файлы, где хранятся предустановленные по умолчанию файлы

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

Мы видим окно, в котором нас предупреждают о том, что компания собирает статистику о наших действиях в магазине


Жмем

Continue

. Рекомендуется поставить галочку напротив пункта

Do not show this message again

, чтобы не наблюдать при каждом входе данное сообщение

Основные настройки ldap

Перейдите в Администрирование » Приложения и активируйте Единый вход. Затем нажмите Настройки и выберите LDAP в списке.


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

В случае, если нам необходимо удалить файлы

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

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

Вам предлагается обзор конфигурации

Инсталлятор предлагает сохранить конфигурацию. Если все устраивает –

Continue

Инсталлятор просит подтвердить предстоящие изменения – Yes

Устранение неполадок


Во время тестирования соединения или обработки пользовательских данных при входе в систему, вы можете столкнуться с ошибками соединения, привязки имени пользователя и пр.

После чего начинаем установку

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Где мы выбираем следующие пункты

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Наш файл загрузился

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Следующий этап – подтверждение настроек

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

После чего начинается процесс применения финальных настроек

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Finish! установка univention успешно завершена

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Вводим свою почту

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Начинаем обновление системы жмем software update

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

В открывшемся окне install release update

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Ищем приложение nextcloud

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Приложение установлено

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Задаем ему пароль

Univention Corporate Server (UCS) — установка простого и удобного LDAP сервера с web-панелью и его связка с Nextcloud / Хабр

Выбор местоположения

Поскольку мы выбрали русский язык, в данном списке нам предлагают выбрать

Russian Federation

Непосредственно процесс установки

Инсталлятор предупреждает нас, что страница будет перезагружена после завершения обновления

Выбор раскладки клавиатуры

Из-за предыдущих шагов нам предлагают русскую раскладку, меняем на

American English

Первый пункт – выбор типа установки.


Выбираем самый оптимальный вариант –

Start with default settings

Расширенные настройки ldap

Если у вас определенная конфигурация вашего LDAP сервера, перейдите к Расширенным настройкам, где вы можете управлять следующим:

Создание пользователя и первый запуск nextcloud

Для создания нового пользователя необходимо перейти в категорию

Настройка и запуск сервиса аутентификации nginx-ldap-auth

Для запуска сервиса nginx-ldap-auth будем использовать docker. Для начала нужно клонировать репозиторий с сервисом с github:

На следующем этапе нам предлагают выбрать программные компоненты, которые мы хотим включить в первоначальную установку


На текущем этапе, оставляем все по умолчанию.

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

Авторизуемся под пользователем

Настройка часового пояса

Мой выбор –

Moscow

Похожее:  Токен Авторизации / Хабр

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *