Управление доступом общих пользователей FreeBSD (пробовали с OpenLDAP, не работает) (открыты для других предложений)

Вопрос или проблема

У меня есть большое количество серверов (все на FreeBSD). Мне нужно создать общую систему управления доступом для них (когда новые разработчики присоединяются, я хочу добавить их данные доступа на 1 сервер и больше нигде). Я думаю (подобно LDAP), что должен быть общий сервер, на котором я имею систему управления доступом пользователей (например, LDAP). Когда новый пользователь, который еще не входил на сервер, пытается войти в систему, на этом этапе система, на которую пользователь хочет войти, проверяет в общей системе управления доступом пользователей, а затем выполняет аутентификацию и позволяет пользователю войти.

Необходимые функции:

  1. Поддержка публичного/приватного ключа для входа (контроль/валидация со стороны общей системы управления доступом пользователей)
  2. Поддержка двухфакторной аутентификации (Google Authenticator) (контроль/валидация со стороны общей системы управления доступом пользователей)
  3. Доступ пользователя должен контролироваться на 2 уровне.
    1. Пользователь не существует в общем сервере → попытка входа должна завершиться неудачей.
    2. Пользователь существует, но не имеет прав на вход на конкретный сервер → попытка входа на заблокированный сервер должна завершиться неудачей.
  4. Если я создам новый сервер, не добавляя пользователей вручную, аутентификация пользователей должна работать с общего сервера (даже их создание в каталоге должно быть автоматическим, каким-то образом)
  5. Если я добавлю нового пользователя на общий сервер, то этот пользователь должен иметь возможность войти на любой из серверов.

Пожалуйста, подскажите, как мне поступить. Я пытаюсь настроить OpenLDAP, но не могу, так как нет подходящего пошагового руководства. Любое другое предложение также приветствуется. Я изложил свои требования и хотел бы видеть их выполненными тем или иным образом.

Я пытался настроить клиент OpenLDAP на FreeBSD с использованием образа OpenLDAP Docker (настроенный на сервере Ubuntu, так как Docker имеет некоторые ограничения для запуска на FreeBSD) в качестве общего сервера, но не нашел руководства по пошаговому процессу. Также я не нашел никакого руководства по добавлению 2FA в OpenLDAP.

Ответ или решение

Управление доступом пользователей в FreeBSD с использованием OpenLDAP: полное руководство

Введение

Для организации централизованного управления пользовательским доступом в рамках множества серверов FreeBSD стоит рассмотреть использование OpenLDAP. Данное решение позволяет добавлять пользователей и управлять их правами доступа с одного центрального сервера, обеспечивая тем самым удобство и простоту администрирования. В этой статье мы рассмотрим основные шаги для реализации OpenLDAP в вашем окружении, а также интеграцию двухфакторной аутентификации (2FA) и использования SSH ключей.

Шаг 1: Установка OpenLDAP на сервере

  1. Установка пакетов на FreeBSD

    На сервере, который будет использоваться в качестве LDAP-сервера, выполните установку необходимых пакетов:

    pkg install openldap-server openldap-client
  2. Настройка OpenLDAP

    Создайте основной файл конфигурации LDAP:

    mkdir -p /usr/local/etc/openldap
    cp /usr/local/etc/openldap/slapd.conf.sample /usr/local/etc/openldap/slapd.conf

    В файле slapd.conf настройте базовую DN и другие важные параметры. Например:

    database    bdb
    suffix      "dc=example,dc=com"
    rootdn      "cn=admin,dc=example,dc=com"
    rootpw      {SSHA}ваш_пароль
  3. Запуск сервиса

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

    service slapd start
  4. Создание базы данных пользователей

    Подготовьте LDIF файл, который будет содержать данные вашей иерархии пользователей. Например:

    dn: dc=example,dc=com
    objectClass: dcObject
    dc: example
    
    dn: cn=admin,dc=example,dc=com
    objectClass: organizationalRole
    cn: admin
    
    dn: ou=users,dc=example,dc=com
    objectClass: organizationalUnit
    ou: users

    Импортируйте его в LDAP:

    ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f путь_к_файлу.ldif

Шаг 2: Настройка клиентов OpenLDAP на сервере FreeBSD

  1. Установка клиента

    На каждом сервере FreeBSD, который будет использоваться как клиент, установите необходимые пакеты:

    pkg install openldap-client
  2. Настройка конфигурации клиента

    Скопируйте файл конфигурации клиента и настройте его под ваши нужды:

    cp /usr/local/etc/openldap/ldap.conf.sample /usr/local/etc/openldap/ldap.conf

    В файле ldap.conf укажите адрес вашего LDAP-сервера и базу:

    BASE    dc=example,dc=com
    URI     ldap://ip_адрес_серверa
  3. Настройка PAM и NSS

    Для аутентификации через LDAP потребуется настроить PAM и NSS, добавив соответствующие строки в файлы /etc/nsswitch.conf и /etc/pam.d/.

    Пример конфигурации nsswitch.conf:

    passwd:     files ldap
    group:      files ldap
    shadow:     files ldap

    Для PAM добавьте в файл /etc/pam.d/system следующее:

    auth    required    pam_unix.so
    auth    required    pam_ldap.so

Шаг 3: Интеграция двухфакторной аутентификации (2FA)

Для реализации двухфакторной аутентификации можно использовать Google Authenticator. Вам потребуются дополнительные пакеты:

pkg install google-authenticator
  1. Настройка PAM для 2FA

    В файл /etc/pam.d/system добавьте следующее:

    auth required pam_google_authenticator.so
  2. Настройка пользователей

    На каждом сервере, где нужны права доступа, каждый пользователь должен инициализировать Google Authenticator:

    google-authenticator

Это обеспечит генерацию QR-кода, который пользователь может отсканировать в приложении для 2FA, а также сгенерирует временные ключи.

Шаг 4: Управление доступом на уровне сервера

Для контроля доступа вам нужно реализовать механизм проверки прав пользователя на уровне сервера. Это можно сделать с использованием LDAP атрибутов и правил в конфигурации сервера.

  1. Создание атрибутов доступа

    Храните информацию о том, какие пользователи имеют доступ к каким серверам в LDAP, добавив соответствующие атрибуты в LDAP записи пользователей.

  2. Модернизация процессов аутентификации

    В каждом сервере при аутентификации пользователя проверяйте его права доступа к текущему серверу. Если пользователь не имеет доступа, завершайте сессию.

Заключение

Использование OpenLDAP для управления пользователями в сети из нескольких серверов FreeBSD предлагает гибкое и централизованное решение. С помощью 2FA и SSH ключей можно значительно повысить уровень безопасности доступа. Если у вас возникнут трудности на каком-либо этапе, всегда можно обратиться к документации OpenLDAP или специальным форумам, где много профессионалов готовы помочь.

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

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

Капча загружается...