Как настроить централизованную аутентификацию 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.

После ознакомления с этим руководством вы можете configure клиент FreeIPA в Ubuntu 16.04. или configure клиент FreeIPA в CentOS 7.

Предпосылки

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

  • Один сервер CentOS 7 с минимум 1 ГБ ОЗУ. По умолчанию CentOS 7 использует только пользователя root. Поскольку мы будем использовать FreeIPA для управления пользователями, нет необходимости добавлять другого пользователя вручную. Вы можете просто следовать этому руководству как пользователь root.

  • На вашем сервере включен брандмауэр, который вы можете настроить, следуя https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers#configuring-a-basic- брандмауэр [шаг брандмауэра в руководстве Дополнительные рекомендуемые шаги для CentOS 7]. Это настоятельно рекомендуется, поскольку FreeIPA обрабатывает конфиденциальные учетные данные пользователя.

  • Полностью зарегистрированный домен для использования на сервере и клиентах. Вы можете приобрести один на https://namecheap.com [Namecheap] или получить его бесплатно на Freenom.

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

  • Запись A с вашим именем сервера (например, + ipa. +) указывает на IPv4-адрес вашего сервера.

  • Запись AAAA с именем вашего сервера, указывающим на IPv6-адрес вашего сервера, если вы хотите, чтобы ваш сервер был доступен через IPv6.

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

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

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

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

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

hostname ipa.example.org

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

yum update

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

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}

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

firewall-cmd --reload

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

yum install bind-utils

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

dig +short ipa. A

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

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

dig +short ipa. AAAA

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

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

dig +short -x
dig +short -x

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

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

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

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

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

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 /18 brd 111.111.111.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 /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 + или вашего любимого текстового редактора.

nano /etc/hosts

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

/ и т.д. / хосты

. . .
# The following lines are desirable for IPv4 capable hosts

127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .

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

Модифицированный / etc / hosts

. . .
# The following lines are desirable for IPv4 capable hosts

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 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
Измените `+

1 +` на IPv6-адрес вашего сервера.

Модифицированный / etc / hosts

...
# The following lines are desirable for IPv6 capable hosts

::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...

Сохраните и выйдите из файла.

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

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

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

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

Модифицированный /etc/cloud/templates/hosts.redhat.tmpl

...
# The following lines are desirable for IPv4 capable hosts
${fqdn} ${hostname}
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
...
Аналогично, измените строку `+

1 $ {fqdn} $ {hostname} +`, чтобы использовать ваш IPv6-адрес, если вы его используете.

Модифицированный /etc/cloud/templates/hosts.redhat.tmpl

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

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

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

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

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

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

yum install rng-tools

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

systemctl start rngd

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

systemctl enable rngd

Наконец, убедитесь, что + rngd + работает.

systemctl status rngd

Вывод должен содержать + active (running) + зеленым цветом.

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

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

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

yum install ipa-server

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

ipa-server-install

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

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

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

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

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

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

Installation script promptContinue to configure the system with these values? [no]:

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

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

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

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

kinit admin

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

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

ipa user-find admin

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

Output--------------
1 user matched
--------------
 User login: admin
 Last name: Administrator
 Home directory: /home/admin
 Login shell: /bin/bash
 Principal alias: [email protected]
 UID: 494800000
 GID: 494800000
 Account disabled: False
----------------------------
Number of entries returned 1
----------------------------

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

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

изображение: https: //assets.digitalocean.com/articles/freeipa/sYI5paO.jpg [главная страница пользовательского интерфейса FreeIPA]

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

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

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

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

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

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

изображение: https: //assets.digitalocean.com/articles/freeipa/TcJR35O.jpg [редактирование пользователя пользовательского интерфейса FreeIPA]

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

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

Заключение

Теперь, когда у вас есть работающий сервер FreeIPA, вам потребуется configure client для аутентификации на нем. Вы можете следовать this учебник по клиенту FreeIPA для Ubuntu 16.04 или https: // www.digitalocean.com/community/tutorials/how-to-configure-a-freeipa-client-on-centos-7 раскройте этот учебник по клиенту CentOS 7 FreeIPA], чтобы сделать это. Кроме того, FreeIPA является сервером LDAP. Любая служба, поддерживающая аутентификацию LDAP, может быть настроена для аутентификации на вашем сервере FreeIPA.

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

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

Related