Site icon 8HOST.COM

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

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

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

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

Требования

yum install nano

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

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

Имя хоста сервера должно совпадать с FQDN.

Примечание: В данном руководстве используется условный FQDN ipa.example.com

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

hostname ipa.example.org

Обновите список пакетов:

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:

yum install bind-utils

Чтобы проверить А-запись:

dig +short ipa.example.org A
your_server_ipv4

Если вы включили поддержку IPv6, проверьте запись АААА:

dig +short ipa.example.org AAAA
your_server_ipv6

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

dig +short -x your_server_ipv4
dig +short -x your_server_ipv6

Эти команды должны вернуть ipa.example.com.

2: Настройка DNS

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

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

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

ip addr show
. . .
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::.

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

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. Найдите строку:

...
# 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 именем хоста.

...
# 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/hosts на основе конфигурации /etc/cloud/templates/hosts.redhat.tmpl. Внесите аналогичные поправки в этот файл.

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
...

Если вы настроили поддержку IPv6, замените строку ::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
...

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

3: Установка генератора случайных чисел

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

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

yum install rng-tools

Запустите его:

systemctl start rngd

Включите сервис, чтобы генератор запускался вместе с сервером:

systemctl enable rngd

Убедитесь, что rngd запущен:

systemctl status rngd

В выводе должна быть строка:

active (running)

Итак, все зависимости установлены. Теперь можно установить программное обеспечение FreeIPA.

4: Установка сервера FreeIPA

Установите пакет FreeIPA с помощью команды:

yum install ipa-server

Запустите установку FreeIPA. Следующая команда запустит сценарий, который запросит у вас некоторые данные и установит FreeIPA.

ipa-server-install

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

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

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

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

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 и пароль администратора IPA, который будет использоваться при аутентификации в FreeIPA в качестве администратора. Здесь настоятельно рекомендуется использовать сложные уникальные пароли (можно сгенерировать случайные пароли), поскольку от них зависит безопасность всей системы.

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

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

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

Теперь нужно протестировать установку.

5: Тестирование сервера FreeIPA

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

kinit admin

Если все работает правильно, вам будет предложено ввести пароль администратора IPA. Введите пароль и нажмите Enter.

Убедитесь, что сервер IPA работает:

ipa user-find admin

На экране должен появиться вывод:

--------------
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 (обычно файл называется ca.crt), файл сертификата (your_domain.crt) и файл ключа (your_domain.key) на сервер. После этого установите CA с помощью пароля менеджера каталогов, который вы установили ранее. Чтобы команда не сохранялась в истории оболочки, поставьте пробел в начале.

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

Установите сертификат и ключ сайта:

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

После этого перезапустите сервер.

Откройте веб-интерфейс и войдите в систему как пользователь admin. В поле Username введите admin, а в Password – пароль администратора IPA, который вы установили ранее. В верхней части страницы будет фраза «Authenticating…», а затем вы попадете на главную страницу IPA.

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

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

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

Попробуйте добавить новых пользователей.

Откройте вкладку Identity и нажмите Users. На экране появится таблица пользователей. Нажмите кнопку + Add, чтобы добавить нового пользователя. Заполните форму. Нажмите Add, чтобы просто добавить пользователя. Чтобы создать пользователя и настроить дополнительные сведения о нём, нажмите Add and edit.

Дополнительные сведения можно просмотреть, нажав на пользователя в таблице.

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

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

Заключение

Сервер FreeIPA полностью готов к работе. Теперь вы можете добавить клиентские машины.

Читайте также: Настройка клиента FreeIPA на сервере Ubuntu 16.04

В системах Ubuntu и CentOS есть установочные сценарии клиента FreeIPA.

Кроме того, FreeIPA является сервером LDAP. Сервер FreeIPA  может выполнять аутентификацию любого сервиса, поддерживающего аутентификацию LDAP.

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

Чтобы подключиться к среде Windows, вы можете настроить взаимодействие с сервером Active Directory.

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