Установка и использование FreeIPA на CentOS

Обновлено и опубликовано Опубликовано:

Используемые термины: FreeIPACentOS.

В инструкции разберем пример установки сервера FreeIPA (аналог Microsoft Active Directory, Samba DC) на Linux CentOS. В качестве клиентов будем использовать дистрибутивы на базе RPM (Red Hat, CentOS, ...) и deb (Debian, Ubuntu, ...).

Подготовка сервера

Для подготовки сервера безопасности с доступом к данным по LDAP необходим сервер с правильно настроенным временем. Также необходимо правильно настроить межсетевой экран и систему безопасности SELinux.

Время

Установим часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере используется московское время.

Затем устанавливаем и запускаем утилиту для синхронизации времени chrony.

yum install chrony

systemctl enable chronyd

systemctl start chronyd

Имя сервера

Для корректной работы сервера, необходимо, задать ему полное доменное имя (FQDN). Выполняем команду:

hostnamectl set-hostname ipa-server.dmosk.local

* где ipa-server.dmosk.local — имя сервера, которое будет использоваться.

Брандмауэр

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

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

firewall-cmd --reload

Установка и запуск FreeIPA

Установка выполняется из репозитория командой:

yum install ipa-server ipa-server-dns

После выполняем конфигурирование сервиса:

ipa-server-install

На первый вопрос, хотим ли мы использовать и сконфигурировать DNS-сервер BIND отвечаем утвердительно:

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

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

Когда система запросит пароль для Directory Manager, необходимо придумать и ввести его дважды:

Directory Manager password: 
Password (confirm): 

... будет создана учетная запись для подключения к LDAP.

Затем также нужно придумать и задать пароль для IPA admin:

IPA admin password: 
Password (confirm):

... будет создана учетная запись IPA Administrator для первого пользователя FreeIPA с правами администратора.

Для настройки DNS на первый запрос, хотим ли мы настроить перенаправления, отвечаем да:

Do you want to configure DNS forwarders? [yes]:

Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если нас это устроит, оставляем значение по умолчанию:

Do you want to configure these servers as DNS forwarders? [yes]:

... также можно добавить дополнительные серверы:

Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8

Также оставляем значение по умолчанию для попытки найти обратные зоны:

Do you want to search for missing reverse zones? [yes]

После система выведет информацию о конфигурации и попросит ее подтвердить — вводим yes:

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

Начнется процесс конфигурации. После его завершения мы увидим подсказку со следующими шагами:

Next steps:
        1. You must make sure these network ports are open:
                TCP Ports:
                  * 80, 443: HTTP/HTTPS
                  * 389, 636: LDAP/LDAPS
                  * 88, 464: kerberos
                UDP Ports:
                  * 88, 464: kerberos
                  * 123: ntp

        2. You can now obtain a kerberos ticket using the command: 'kinit admin'
           This ticket will allow you to use the IPA tools (e.g., ipa user-add)
           and the web user interface.

... и так как порты мы уже настраивали, переходим ко второму шагу — проверим, что система может выдать билет:

kinit admin

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

Проверяем, что билет получен:

klist

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

Ticket cache: KEYRING:persistent:0:0
Default principal: admin@DMOSK.LOCAL

Valid starting       Expires              Service principal
23.07.2019 08:53:02  24.07.2019 08:52:55  krbtgt/DMOSK.LOCAL@DMOSK.LOCAL

* где DMOSK.LOCAL — домен в моей системе. В данном примере мы получили билет для пользователя admin.

Настройка и подключение клиента

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

systemctl restart network || systemctl restart networking

Устанавливаем клиента.

а) на компьютеры с Red Hat / CentOS:

yum install freeipa-client

б) на компьютеры с Debian / Ubuntu:

apt-get install freeipa-client

Выполним конфигурирование клиента:

ipa-client-install --mkhomedir

... система на основе данных из DNS попробует определить настройки и отобразить их в консоли, например:

Discovery was successful!
Client hostname: freeipa-client.dmosk.local
Realm: DMOSK.LOCAL
DNS Domain: DMOSK.LOCAL
IPA Server: ipa-server.dmosk.local
BaseDN: dc=dmosk,dc=local

Если эти настройки верны, отвечаем положительно на запрос Continue to configure the system with these values?

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

Система спросит, от какого пользователя производить настройку — вводим admin:

User authorized to enroll computers: admin

... и пароль:

Password for admin@DMOSK.LOCAL:

Начнется процесс конфигурации — после его завершения:

...
Configured /etc/openldap/ldap.conf
NTP enabled
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring DMOSK.LOCAL as NIS domain.
Client configuration complete.

... сразу проверим, что клиент может получать билет от сервера:

kinit admin

...  и вводим пароль от пользователя admin.

Проверяем, что билет получен:

klist

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

Ticket cache: KEYRING:persistent:0:0
Default principal: admin@DMOSK.LOCAL

Valid starting       Expires              Service principal
25.07.2019 23:39:56  26.07.2019 23:39:52  krbtgt/DMOSK.LOCAL@DMOSK.LOCAL

Клиент настроен.

Создание пользователей

Создадим пользователя. Для этого рассмотрим пример использования командной строки и веб-интерфейса.

Командная строка

Авторизуемся на FreeIPA:

kinit admin

Создаем нового пользователя командой:

ipa user-add dmosk --first=Дмитрий --last=Моск --password

* где dmosk — логин; first — имя пользователя; last — фамилия; password — ключ для запроса пароля.

... после ввода команды система запросит пароль для создаваемого пользователя — вводим его дважды.

Мы должны увидеть сводку по параметрам для созданного пользователя:

Добавлен пользователь «dmosk»
-----------------------------
  Логин пользователя: dmosk
  Имя: Дмитрий
  Фамилия: Моск
  Полное имя: Дмитрий Моск
  Отображаемое имя: Дмитрий Моск
  Инициалы: ДМ
  Домашний каталог: /home/dmosk
  GECOS: Дмитрий Моск
  Оболочка входа: /bin/sh
  Principal name: dmosk@DMOSK.LOCAL
  Principal alias: dmosk@DMOSK.LOCAL
  User password expiration: 20190725205853Z
  Электронный адрес: dmosk@dmosk.local
  UID: 1798800001
  ID группы: 1798800001
  Пароль: True
  Member of groups: ipausers
  Kerberos ключей доступно: True

Веб-интерфейс

Открываем браузер и переходим по адресу имени сервера — в нашем примере, https://ipa-server.dmosk.local. Закрываем всплывающее окно с запросом пароля. В появившейся странице авторизации вводим логин admin и его пароль.

Откроется страница управления пользователями:

Управление пользователями в веб интерфейса FreeIPA

На панели справа (над списком пользователей) кликаем по Добавить:

Кнопка Добавить в веб-интерфейсе FreeIPA

В открывшемся окне заполняем поля для создания пользователя и нажимаем по Добавить:

Заполняем данные для создания пользователя

Проверка

На компьютере с клиентом вводим команду для проверки:

kinit dmosk

... и вводим пароль от созданной учетной записи:

Password for dmosk@DMOSK.LOCAL: 

При вервом входе система попросит поменять пароль на новый:

Password expired.  You must change it now.
Enter new password: 
Enter it again:

SSH аутентификация через FreeIPA

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

Открываем конфигурационный файл для pam:

vi /etc/pam.d/common-session

Добавим в конец одну строку:

...
session required    pam_mkhomedir.so skel=/etc/skel umask=0022

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

Готово.

Возможные ошибки

Разберем некоторые ошибки, которые могут возникнут в процессе установки FreeIPA.

1. ipapython.admintool: ERROR    IPv6 stack is enabled in the kernel but there is no interface that has ::1 address assigned. Add ::1 address resolution to 'lo' interface. You might need to enable IPv6 on the interface 'lo' in sysctl.conf.

Ошибка появляется при попытке запустить команду ipa-server-install.

Причина: если в системе отключен IPv6 с помощью параметра в ядре net.ipv6.conf.all.disable_ipv6 или net.ipv6.conf.default.disable_ipv6, то команда выдаст ошибку, так как для локальной петли нам нужен IPv6.

Решение: открываем конфигурационный файл sysctl:

vi /etc/sysctl.d/99-sysctl.conf

Добавляем строку:

net.ipv6.conf.lo.disable_ipv6 = 0

Применяем настройки:

sysctl -p /etc/sysctl.d/99-sysctl.conf

2. Invalid hostname 'XXX', must be fully-qualified

Появляется при запуске команды ipa-server-install.

Причина: имя нашего сервера не является FQDN (полным доменным).

Решение: задаем полное имя с доменом командой:

hostnamectl set-hostname ipa-server.dmosk.local

* в данном примере у сервера будет имя ipa-server в домене dmosk.local.

# Серверы # Безопасность # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет