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

Как настроить централизованную аутентификацию Linux с помощью FreeIPA в CentOS 7


Введение

FreeIPA — это решение для обеспечения безопасности с открытым исходным кодом для Linux, которое обеспечивает управление учетными записями и централизованную аутентификацию, аналогично Microsoft Active Directory. FreeIPA построен на основе нескольких проектов с открытым исходным кодом, включая 389 Directory Server, MIT Kerberos и SSSD.

У FreeIPA есть клиенты для CentOS 7, Fedora и Ubuntu 14.04/16.04. Эти клиенты упрощают добавление машин в ваш домен IPA. Другие операционные системы могут проходить аутентификацию на FreeIPA с помощью SSSD или LDAP.

В этом руководстве мы будем устанавливать сервер FreeIPA на сервер CentOS 7. Затем вы можете настроить клиентские машины, позволяя пользователям FreeIPA входить в систему со своими учетными данными IPA.

После того, как вы выполните это руководство, вы сможете настроить клиент FreeIPA в CentOS 7.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Один сервер CentOS 7 с оперативной памятью не менее 1 ГБ. По умолчанию CentOS 7 использует только пользователя root. Поскольку мы будем использовать FreeIPA для управления пользователями, нет необходимости вручную добавлять другого пользователя. Вы можете просто следовать этому руководству как пользователь root.
  • На вашем сервере включен брандмауэр, который вы можете настроить, следуя шагу брандмауэра в руководстве Дополнительные рекомендуемые шаги для CentOS 7. Это настоятельно рекомендуется, поскольку FreeIPA обрабатывает конфиденциальные учетные данные пользователя.
  • Полностью зарегистрированный домен для использования сервером и клиентами. Вы можете приобрести один на Freenom.
  • Следующие записи DNS настроены для вашего сервера. Вы можете следовать этому руководству по имени хоста, чтобы узнать, как их добавить.
    • Запись A с именем вашего сервера (например, ipa.example.com), указывающая на IPv4-адрес вашего сервера.
    • Запись AAAA с именем вашего сервера, указывающим на IPv6-адрес вашего сервера, если вы хотите, чтобы ваш сервер был доступен через IPv6.

    При необходимости текстовый редактор nano устанавливается с помощью yum install nano. CentOS поставляется с текстовым редактором vi по умолчанию, но nano может быть более удобным для пользователя.

    Шаг 1 — Подготовка сервера IPA

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

    Для начала имя хоста вашего сервера должно совпадать с вашим полным доменным именем (FQDN) для правильной работы FreeIPA. В этом руководстве мы будем использовать ipa.example.com в качестве полного доменного имени.

    Вы можете установить имя хоста при создании сервера или установить его из командной строки после создания сервера с помощью команды hostname:

    1. hostname ipa.example.org

    Теперь обновите репозиторий пакетов с помощью yum.

    1. yum update

    Далее откройте необходимые порты для FreeIPA в брандмауэре.

    1. firewall-cmd --permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp}

    Перезагрузите брандмауэр, чтобы изменения вступили в силу.

    1. firewall-cmd --reload

    Наконец, вам нужно убедиться, что DNS-имена разрешаются правильно. Для этого вы можете использовать команду dig. Установите пакет bind-utils, чтобы получить dig и другие утилиты для тестирования DNS.

    1. yum install bind-utils

    Затем используйте dig, чтобы проверить запись A.

    1. dig +short ipa.example.org A

    Это должно вернуть your_server_ipv4.

    Если у вас включен IPv6, вы можете проверить запись AAAA таким же образом.

    1. dig +short ipa.example.org AAAA

    Это должно вернуть your_server_ipv6.

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

    1. dig +short -x your_server_ipv4
    2. dig +short -x your_server_ipv6

    Оба они должны возвращать ipa.example.com.

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

    Шаг 2 — Настройка DNS

    Все машины, на которых работает FreeIPA, должны использовать полные доменные имена (FQDN) в качестве своих имен хостов, которые мы настроили на предыдущем шаге. Кроме того, имя хоста каждого сервера должно разрешаться в его IP-адрес, а не в localhost.

    Примечание. Если вы настраиваете FreeIPA на сервере в вашей локальной сети, вместо этого используйте частные IP-адреса.

    В DigitalOcean вы можете увидеть общедоступные IP-адреса вашего сервера на панели управления. Вы также можете найти IP-адреса серверов с помощью команды ip.

    1. ip addr show

    Это должно привести к выводу, подобному следующему:

    Output
    . . . 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 111.111.111.111/18 brd 111.111.111.255 scope global eth0 valid_lft forever preferred_lft forever inet6 1111:1111:1111:1111::1111:1111/64 scope global valid_lft forever preferred_lft forever . . .

    Адрес IPv4 появляется сразу после inet, а адрес IPv6, если он включен, появляется после inet6. Вы также можете увидеть дополнительные частные IP-адреса, если у вас включена частная сеть; вы можете игнорировать эти адреса. Чтобы различать общедоступные и частные IP-адреса, обратите внимание, что частные IPv4-адреса будут находиться в следующих диапазонах: 192.168.*.*, 10.*.*.* или 172.16.*.* до 172.31.*.*. Частные адреса IPv6 всегда начинаются с префикса fe80::.

    Теперь нам нужно изменить файл хоста, чтобы указать имя хоста сервера на его внешний IP-адрес. Файл hosts, /etc/hosts, сопоставляет доменные имена с IP-адресами локально на машине. Откройте этот файл с помощью nano или вашего любимого текстового редактора.

    1. nano /etc/hosts

    Найдите строку с именем хоста вашего сервера после 127.0.0.1:

    . . .
    # The following lines are desirable for IPv4 capable hosts
    127.0.0.1 ipa.example.com ipa.example.com
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4.localdomain4 localhost4
    . . .
    

    Измените 127.0.01 на IPv4-адрес вашего сервера.

    . . .
    # The following lines are desirable for IPv4 capable hosts
    your_server_ipv4 ipa.example.com ipa.example.com
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4.localdomain4 localhost4
    . . .
    

    Если у вас включен IPv6, вам также потребуется отредактировать сопоставление IPv6, изменив строку ::1 на ваше имя хоста.

    ...
    # The following lines are desirable for IPv6 capable hosts
    ::1 ipa.example.com ipa.example.com
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ...
    

    Измените ::1 на IPv6-адрес вашего сервера.

    ...
    # The following lines are desirable for IPv6 capable hosts
    your_server_ipv6 ipa.example.com ipa.example.com
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ...
    

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

    По умолчанию при каждой загрузке системы. CentOS использует конфигурацию в /etc/cloud/templates/hosts.redhat.tmpl для создания /etc/hosts. Чтобы сделать это изменение конфигурации постоянным, нам нужно будет внести аналогичные изменения и в этот файл.

    Откройте файл.

    1. nano /etc/cloud/templates/hosts.redhat.tmpl

    Измените строку 127.0.0.1 $ {fqdn} $ {hostname}, чтобы использовать IPv4-адрес вашего сервера.

    ...
    # The following lines are desirable for IPv4 capable hosts
    your_server_ipv4 ${fqdn} ${hostname}
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4.localdomain4 localhost4
    ...
    

    Аналогичным образом измените строку ::1 $ {fqdn} $ {hostname}, чтобы использовать свой IPv6-адрес, если вы его используете.

    ...
    # The following lines are desirable for IPv6 capable hosts
    your_server_ipv6 ${fqdn} ${hostname}
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ...
    

    Выйдите и сохраните файл.

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

    Шаг 3 — Настройка генератора случайных чисел

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

    Сначала установите rngd.

    1. yum install rng-tools

    Затем включите его.

    1. systemctl start rngd

    Убедитесь, что служба автоматически запускается при загрузке.

    1. systemctl enable rngd

    Наконец, убедитесь, что rngd запущен.

    1. systemctl status rngd

    Вывод должен включать active (running) зеленого цвета.

    Когда все зависимости настроены и функционируют, мы можем перейти к установке самого серверного программного обеспечения FreeIPA.

    Шаг 4 — Установка сервера FreeIPA

    Мы можем перейти к установке ipa-server, самого пакета сервера FreeIPA.

    1. yum install ipa-server

    Затем запустите команду установки FreeIPA. Это запустит скрипт, который предложит вам параметры конфигурации и установит FreeIPA.

    1. ipa-server-install

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

    Installation script prompt
    Do you want to configure integrated DNS (BIND)? [no]: no

    Затем вам нужно будет ввести имя хоста сервера, имя домена и имя области Kerberos. Kerberos — это протокол аутентификации, который FreeIPA использует за кулисами для аутентификации хост-компьютеров. Настоятельно рекомендуется использовать ваше доменное имя в качестве области Kerberos. Использование другой схемы именования вызовет проблемы с интеграцией FreeIPA с Active Directory и может вызвать другие проблемы.

    Предупреждение. Не используйте корневой домен (example.com) в качестве доменного имени IPA. Это может вызвать проблемы с DNS.

    Installation script prompt
    Server host name [ipa.example.org]: ipa.example.org Please confirm the domain name [example.org]: ipa.example.org Please provide a realm name [EXAMPLE.ORG]: IPA.EXAMPLE.ORG

    Затем создайте пароль для менеджера каталогов LDAP. Это необходимо для функциональности LDAP FreeIPA. Затем пароль администратора IPA, который будет использоваться при входе в FreeIPA в качестве администратора. Здесь настоятельно рекомендуется использовать безопасные случайно сгенерированные пароли, так как от них зависит безопасность всей вашей системы.

    Подтвердите конфигурацию. После этого запустится установщик.

    Installation script prompt
    Continue to configure the system with these values? [no]: yes

    Процесс установки может занять несколько минут в зависимости от скорости вашего сервера.

    Теперь, когда у нас есть завершенная установка сервера, нам нужно его протестировать.

    Шаг 5 — Проверка функций сервера FreeIPA

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

    1. kinit admin

    Если все работает правильно, вам будет предложено ввести пароль администратора IPA, введенный в процессе установки. Введите его и нажмите ENTER.

    Затем убедитесь, что сервер IPA работает правильно.

    1. ipa user-find admin

    Это должно распечатать следующее:

    Output
    -------------- 1 user matched -------------- User login: admin Last name: Administrator Home directory: /home/admin Login shell: /bin/bash Principal alias: admin@IPA.EXAMPLE.COM UID: 494800000 GID: 494800000 Account disabled: False ---------------------------- Number of entries returned 1 ----------------------------

    Мы также должны иметь доступ к веб-интерфейсу по адресу https://ipa.example.com.

    Примечание. Сертификат TLS будет недоверенным. Пока мы просто обходим предупреждения. В будущем вы можете использовать свой любимый центр сертификации, чтобы получить действительный сертификат TLS. После того, как вы его получите, вам нужно будет загрузить свой сертификат ЦС (обычно ca.crt), файл сертификата (ваш_домен.crt), и файл ключа ( ваш_домен.key) на сервер.

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

    1. ipa-cacert-manage -p your_directory_manager_password -n httpcrt -t C,, install ca.crt

    Затем установите сертификат сайта и ключ.

    1. ipa-server-certinstall -w -d your_domain.key your_domain.crt

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

    В веб-интерфейсе войдите в систему как администратор. Имя пользователя будет admin, а пароль будет паролем администратора IPA, который вы установили ранее. В верхней части страницы будет написано «Аутентификация…», а затем вы попадете на главную страницу IPA, которая выглядит следующим образом:

    Наконец, давайте изучим некоторые функции FreeIPA, добавив нового пользователя.

    Шаг 6 — Настройка пользователей IPA

    FreeIPA имеет очень обширный набор функций управления пользователями и политик. Как и обычные пользователи Unix, пользователи FreeIPA могут входить в группы. Либо группам, либо отдельным пользователям может быть разрешен или запрещен доступ к хостам (клиентским машинам) или группам хостов (группам хостов) на основе политик. FreeIPA также может управлять доступом к sudo; группам или пользователям может быть предоставлен доступ sudo к хостам или группам хостов.

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

    Чтобы добавить пользователя, перейдите на вкладку «Идентификация» и нажмите «Пользователи». Это отобразит таблицу пользователей. Нажмите кнопку + Добавить над таблицей, чтобы добавить нового пользователя. Заполните необходимые поля (например, имя и фамилию) в открывшейся форме, затем нажмите «Добавить», чтобы добавить пользователя как есть, или «Добавить и изменить», чтобы настроить дополнительные сведения.

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

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

    Новым пользователям будет предложено изменить свой пароль при первом входе в систему IPA. Это работает в графическом интерфейсе IPA, а также через SSH. Одной из полезных функций является возможность добавления ключей SSH. Пользователь может загрузить свои общедоступные SSH-ключи и распространить их на компьютеры IPA, что позволит войти в систему без пароля. Затем пользователь может удалить ключ SSH в любое время, не беспокоясь о том, что он все еще присутствует на отдельных серверах.

    Заключение

    Теперь, когда у вас есть работающий сервер FreeIPA, вам понадобится это руководство для клиента CentOS 7 FreeIPA, чтобы сделать это. Кроме того, FreeIPA — это сервер LDAP. Любая служба, поддерживающая аутентификацию LDAP, может быть настроена для аутентификации на вашем сервере FreeIPA.

    Вы можете настраивать пользователей, группы и политики доступа через графический интерфейс FreeIPA или через интерфейс командной строки. Правила Sudo могут предоставить относительно простой способ управления корневым доступом. Для более крупных развертываний рекомендуется настроить несколько серверов IPA с репликацией. Наконец, если вы хотите подключиться к среде Windows, вы можете установить доверие к серверу Active Directory.

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