Поиск по сайту:

Как установить и настроить OpenLDAP и phpLDAPadmin на сервере Ubuntu 14.04


Введение

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

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

В этом руководстве мы обсудим, как установить и настроить сервер OpenLDAP на сервере Ubuntu 14.04. Затем мы установим и защитим интерфейс phpLDAPadmin, чтобы обеспечить простой веб-интерфейс.

Установите LDAP и вспомогательные утилиты

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

Мы впервые используем apt в этом сеансе, поэтому мы обновим наш локальный индекс пакетов. После этого мы можем установить нужные пакеты:

sudo apt-get update
sudo apt-get install slapd ldap-utils

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

Перенастройте slapd, чтобы выбрать лучшие настройки.

Несмотря на то, что пакет был только что установлен, мы продолжим и изменим настройки по умолчанию, с которыми устанавливается Ubuntu.

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

sudo dpkg-reconfigure slapd

Есть довольно много новых вопросов, которые будут заданы, когда вы пройдете через этот процесс. Давайте рассмотрим это сейчас:

  • Пропустить конфигурацию сервера OpenLDAP? Нет
  • DNS-имя домена?
    • Этот параметр определяет базовую структуру вашего пути к каталогу. Прочтите сообщение, чтобы точно понять, как это будет реализовано.
    • На самом деле это довольно открытый вариант. Вы можете выбрать любое значение \доменного имени, даже если вы не являетесь владельцем фактического домена. Однако, если у вас есть доменное имя для сервера, вероятно, разумно использовать его.
    • Для этого руководства мы собираемся выбрать test.com для нашей конфигурации.

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

    • Как я упоминал в разделе об установке, это реальная возможность выбрать пароль администратора. Все, что вы выберете здесь, перезапишет предыдущий пароль, который вы использовали.

    На этом этапе ваш LDAP должен быть настроен достаточно разумным образом.

    Установите phpLDAPadmin для управления LDAP с помощью веб-интерфейса.

    Хотя вполне возможно администрировать LDAP через командную строку, большинству пользователей будет проще использовать веб-интерфейс. Мы собираемся установить phpLDAPadmin, который предоставляет эту функциональность, чтобы устранить некоторые трудности, связанные с изучением инструментов LDAP.

    Репозитории Ubuntu содержат пакет phpLDAPadmin. Вы можете установить его, набрав:

    sudo apt-get install phpldapadmin
    

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

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

    Настроить phpLDAPadmin

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

    Начните с открытия основного файла конфигурации с привилегиями root в текстовом редакторе:

    sudo nano /etc/phpldapadmin/config.php
    

    В этот файл нам нужно добавить детали конфигурации, которые мы настроили для нашего сервера LDAP. Начните с поиска параметра host и установите для него доменное имя вашего сервера или общедоступный IP-адрес. Этот параметр должен отражать способ, которым вы планируете обращаться к веб-интерфейсу:

    <пред>

    Далее вам нужно настроить доменное имя, которое вы выбрали для своего сервера LDAP. Помните, в нашем примере мы выбрали test.com. Нам нужно перевести это в синтаксис LDAP, заменив каждый компонент домена (все, кроме точки) значением спецификации dc.

    Все это означает, что вместо test.com мы будем писать что-то вроде dc=test,dc=com. Мы должны найти параметр, который устанавливает базовый параметр сервера, и использовать формат, который мы только что обсуждали, для ссылки на домен, который мы выбрали:

    <пред>

    Нам нужно настроить то же самое в параметре bind_id нашего входа в систему. Параметр cn уже установлен как \admin. Это правильно. Нам просто нужно снова настроить части dc, как мы делали выше:

    <пред>

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

    Мы можем скрыть их, выполнив поиск параметра hide_template_warning, раскомментировав содержащую его строку и установив для него значение \true:

    <пред>

    Это последнее, что нам нужно настроить. Вы можете сохранить и закрыть файл, когда закончите.

    Создать SSL-сертификат

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

    Поскольку интерфейс администратора общается с самим сервером LDAP в локальной сети, нам не нужно использовать SSL для этого соединения. Нам просто нужно защитить внешнее соединение с нашим браузером при подключении.

    Для этого нам просто нужно настроить самозаверяющий SSL-сертификат, который может использовать наш сервер. Это не поможет нам проверить подлинность сервера, но позволит зашифровать наши сообщения.

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

    sudo mkdir /etc/apache2/ssl
    

    Далее мы можем создать ключ и сертификат одним движением, набрав:

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
    

    Вам придется ответить на некоторые вопросы, чтобы утилита корректно заполнила поля сертификата. Единственное, что действительно имеет значение, — это приглашение с текстом Общее имя (например, полное доменное имя сервера или ВАШЕ имя). Введите доменное имя или IP-адрес вашего сервера.

    Когда вы закончите, ваш сертификат и ключ будут записаны в каталог /etc/apache2/ssl.

    Создайте файл аутентификации пароля

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

    Нужная нам утилита содержится в пакете утилит Apache. Получите его, набрав:

    sudo apt-get install apache2-utils
    

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

    Мы сохраним это в каталоге /etc/apache2. Создайте файл и укажите имя пользователя, которое вы хотите использовать, набрав:

    <пред>

    Теперь мы готовы изменить Apache, чтобы воспользоваться нашими обновлениями безопасности.

    Безопасный Apache

    Первое, что мы должны сделать, это включить модуль SSL в Apache. Мы можем сделать это, набрав:

    sudo a2enmod ssl
    

    Это активирует модуль, что позволит нам его использовать. Нам все еще нужно настроить Apache, чтобы воспользоваться этим.

    В настоящее время Apache считывает файл с именем 000-default.conf для обычных незашифрованных соединений HTTP. Нам нужно указать ему перенаправлять запросы для нашего интерфейса phpLDAPadmin на наш интерфейс HTTPS, чтобы соединение было зашифровано.

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

    Измените конфигурацию Apache phpLDAPadmin.

    Первое, что мы сделаем, это изменим псевдоним, настроенный для обслуживания наших файлов phpLDAPadmin.

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

    sudo nano /etc/phpldapadmin/apache.conf
    

    Это место, где нам нужно определиться с URL-адресом, по которому мы хотим получить доступ к нашему интерфейсу. По умолчанию используется /phpldapadmin, но мы хотим изменить это, чтобы сократить количество случайных попыток входа в систему со стороны ботов и злоумышленников.

    В этом руководстве мы будем использовать местоположение /superldap, но вы должны выбрать собственное значение.

    Нам нужно изменить строку, указывающую Псевдоним. Это должно быть в блоке IfModule mod_alias.c. Когда вы закончите, это должно выглядеть так:

    <пред>

    Когда вы закончите, сохраните и закройте файл.

    Настройка виртуального хоста HTTP

    Далее нам нужно изменить наш текущий файл Virtual Hosts. Откройте его с правами root в вашем редакторе:

    sudo nano /etc/apache2/sites-enabled/000-default.conf
    

    Внутри вы увидите довольно голый файл конфигурации, который выглядит так:

    <пред>

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

    Изменения, которые мы обсуждали, в конечном итоге будут выглядеть так. Измените элементы, выделенные красным, на свои собственные значения:

    <пред>

    Сохраните и закройте файл, когда закончите.

    Настройте файл виртуального хоста HTTPS

    Apache включает файл виртуального хоста SSL по умолчанию. Однако по умолчанию он не включен.

    Мы можем включить его, набрав:

    sudo a2ensite default-ssl.conf
    

    Это свяжет файл из каталога sites-available с каталогом sites-enabled. Теперь мы можем отредактировать этот файл, набрав:

    sudo nano /etc/apache2/sites-enabled/default-ssl.conf
    

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

    Прежде всего, снова установите значение ServerName на доменное имя или IP-адрес вашего сервера, а также измените директиву ServerAdmin:

    <пред>

    Далее нам нужно настроить директивы SSL-сертификата так, чтобы они указывали на созданный нами ключ и сертификат. Директивы уже должны существовать в вашем файле, поэтому просто измените файлы, на которые они указывают:

    <пред>

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

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

    <пред>

    Сохраните и закройте файл, когда закончите.

    Перезапустите Apache, чтобы применить все сделанные нами изменения:

    sudo service apache2 restart
    

    Теперь мы можем перейти к фактическому интерфейсу.

    Войдите в веб-интерфейс phpLDAPadmin.

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

    Мы можем получить доступ к веб-интерфейсу, посетив доменное имя нашего сервера или общедоступный IP-адрес, за которым следует настроенный нами псевдоним. В нашем случае это был /superldap:

    <пред>

    При первом посещении вы, вероятно, увидите предупреждение о SSL-сертификате сайта:

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

    Нажмите кнопку «Все равно продолжить» или любую другую аналогичную опцию, предлагаемую вашим браузером.

    Далее вы увидите запрос пароля, который вы настроили для Apache:

    Введите учетные данные, которые вы создали с помощью команды htpasswd. Вы увидите главную целевую страницу phpLDAPadmin:

    Нажмите на ссылку «Войти», которую вы видите в левой части страницы.

    Вы попадете на приглашение для входа. Логин \DN похож на имя пользователя, которое вы будете использовать. Оно содержит имя учетной записи в разделе \cn и доменное имя, которое вы выбрали для сервера, разбитого на разделы \dc, как мы описали выше.

    Он должен быть предварительно заполнен правильным значением для учетной записи администратора, если вы правильно настроили phpLDAPadmin. В нашем случае это выглядит так:

    cn=admin,dc=test,dc=com
    

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

    Вы попадете в основной интерфейс:

    Добавление организационных единиц, групп и пользователей

    На этом этапе вы вошли в интерфейс phpLDAPadmin. У вас есть возможность добавлять пользователей, организационные подразделения, группы и отношения.

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

    Поскольку этот процесс в Ubuntu 14.04 такой же, как и в Ubuntu 12.04, вы можете следовать шагам, изложенным в разделе «Добавление организационных единиц, групп и пользователей» статьи об установке LDAP для Ubuntu 12.04.

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

    Заключение

    Теперь у вас должен быть установлен и настроен OpenLDAP на вашем сервере Ubuntu 14.04. Вы также установили и настроили веб-интерфейс для управления своей структурой через программу phpLDAPadmin. Вы настроили некоторую базовую безопасность для приложения, принудительно защитив SSL и пароль для всего приложения.

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

    Джастин Эллингвуд