Аутентификация клиентов при помощи LDAP на сервере Ubuntu 12.04

LDAP (или Lightweight Directory Access Protocol) – это протокол, позволяющий хранить данные аутентификации в одном централизованном месте. В предыдущей статье было показано, как настроить сервер LDAP на Ubuntu 12.04.

Данная статья поможет настроить удалённую аутентификацию клиентских машин.

Примечание: Для выполнения руководства нужны предварительно настроенный сервер Ubuntu 12.04 и установленный сервер LDAP. Также понадобится ещё один сервер Ubuntu 12.04, который будет использован в качестве клиента.

Установка пакетов клиента

На клиентскую машину нужно установить несколько пакетов для корректной поддержки аутентификации LDAP.

Чтобы загрузить эти пакеты из стандартного репозитория Ubuntu, используйте следующие команды:

sudo apt-get update
sudo apt-get install libpam-ldap nscd

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

  • Uniform Resource Identifier сервера LDAP: ldap://IP-адрес-сервера-LDAP.
  • Будет предложено изменить начальную строку ldapi:/// на ldap://, прежде чем продолжить вводить данные.
  • Distinguished name of the search base: Это значение должно совпадать с тем, что было внесено в файл /etc/phpldapadmin/config.php на сервере LDAP. Найдите в файле server, base, array (в предыдущем руководстве это были значения dc=test,dc=com).
  • LDAP version to use: 3
  • Make local root Database admin: Yes
  • Does the LDAP database require login? No
  • LDAP account for root: Это значение тоже должно совпадать с тем, что было внесено в файл /etc/phpldapadmin/config.php на сервере LDAP. Найдите в файле login, bind_id (в предыдущем руководстве это были значения cn=admin,dc=test,dc=com).
  • LDAP root account password: пароль root-пользователя

Если вы допустили ошибку и хотите её исправить, можете вернуться в это меню при помощи команды:

sudo dpkg-reconfigure ldap-auth-config

Настройка клиента

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

Для начала отредактируйте файл /etc/nsswitch.conf. Он позволяет настроить изменение учетных данных LDAP при запуске пользователями определённых команд аутентификации.

sudo nano /etc/nsswitch.conf

Найдите в файле строки passwd, group и shadow и отредактируйте их следующим образом:

passwd:         ldap compat
group:          ldap compat
shadow:         ldap compat

Затем нужно добавить некоторые значения в настройки PAM.

PAM (или Pluggable Authentication Modules) – это система, которая соединяет приложения, обеспечивающие аутентификацию в тех приложениях, которые требуют проверки подлинности.

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

Отредактируйте файл /etc/pam.d/common-session:

sudo nano /etc/pam.d/common-session

В конец файла добавьте строку:

session required    pam_mkhomedir.so skel=/etc/skel umask=0022

Это создаст на клиентской машине домашний каталог при подключении пользователя LDAP, у которого нет такого каталога.

Чтобы обновить настройки, перезапустите сервис:

sudo /etc/init.d/nscd restart

Права доступа

Как помните, во время настройки сервера LDAP была создана группа admin. Это название выбрано не случайно. Оно совпадает с названием группы, созданной на машине Ubuntu по умолчанию.

Пользователи LDAP, добавленные в группу admin, получают доступ к команде sudo согласно настройкам файла /etc/sudoers.

Отредактируйте этот файл:

sudo visudo

Найдите строку:

%admin ALL=(ALL) ALL

Все записи, начинающиеся с символа %, обозначают группу, а не пользователя. Чтобы отключить доступ пользователей к команде sudo или передать права доступа только определённым пользователям, закомментируйте эту строку:

#%admin ALL=(ALL) ALL

Вход пользователя LDAP

Теперь клиентская машина настроена и может подключиться в качестве пользователя LDAP. Этот пользователь не должен существовать на клиентском компьютере.

В новом окне терминала создайте SSH-подключение к клиентскому компьютеру, используя учетные данные пользователя LDAP.

Примечание: Рекомендуется оставить исходное окно терминала на случай ошибок в конфигурации.

ssh LDAP_user@LDAP_client_IP_Address

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

pwd

Команда вернёт домашний каталог, созданный при входе этого пользователя.

Попробуйте выйти и войти снова как другой пользователь LDAP. На сервере появится ещё один домашний каталог пользователя:

ls /home
user1  user2

Если пользователь входит в группу admin, и вы не отключили доступ к sudo в предыдущем разделе, то тот пользователь сможет запускать команды с sudo.

Запустите команду passwd, чтобы изменить пароль. Как видите, сервер LDAP позволяет изменить учётные данные:

passwd
Enter login(LDAP) password:

Ограничение доступа по группам

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

Откройте для редактирования с правами root:

sudo nano /etc/pam.d/common-auth

В конце файла нужно указать, что система PAM должна проверять файлы доступа, прежде чем пропустить пользователя.

auth    required    pam_access.so

Сохраните и закройте файл.

Файл, к которому обращается PAM за информацией о доступе – /etc/security/access.conf. Откройте его:

sudo nano /etc/security/access.conf

В конец этого файла нужно добавить правило.

Символ тире в начале строки значит, что это ограничение. Между символами двоеточия указывается само правило.

В данном случае правило касается всех пользователей, кроме root и членов группы admin.  Группы указываются в скобках.

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

-:ALL EXCEPT root (admin):ALL EXCEPT LOCAL

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

Заключение

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

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

Tags: , ,

1 комментарий

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