- Установка и использование FreeIPA на CentOS
- Подготовка сервера
- Время
- Имя сервера
- Брандмауэр
- SELinux
- Установка и запуск FreeIPA
- Настройка и подключение клиента
- DNS
- Время
- Подключение к домену
- Работа с учетными записями
- Командная строка
- Веб-интерфейс
- Проверка
- Редактирование учетных записей
- Подробная информация
- Примеры команд
- Работа с группами
- Работа с сертификатами
Установка и использование FreeIPA на CentOS
Обновлено: 24.12.2022 Опубликовано: 27.07.2019
Используемые термины: FreeIPA, CentOS. В инструкции разберем пример установки сервера FreeIPA (аналог Microsoft Active Directory, Samba DC) на Linux CentOS (также протестировано на Rocky Linux). В качестве клиентов будем использовать дистрибутивы на базе RPM (Red Hat, CentOS, . ) и deb (Debian, Ubuntu, . ).
Подготовка сервера
Для подготовки сервера безопасности с доступом к данным по LDAP необходим сервер с правильно настроенным временем. Также необходимо правильно настроить межсетевой экран и систему безопасности SELinux.
Время
* в данном примере используется московское время. Затем устанавливаем и запускаем утилиту для синхронизации времени chrony.
Имя сервера
Брандмауэр
- 53 — запросы DNS. Не обязателен, если мы не планируем использовать наш сервер в качестве сервера DNS.
- 80 и 443 — http и https для доступа к веб-интерфейсу управления.
- 88 и 464 — kerberos и kpasswd.
- 123 — синхронизация времени.
- 389 и 636 — ldap и ldaps соответственно.
SELinux
Отключаем SELinux командами:
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
Установка и запуск FreeIPA
Установка выполняется из репозитория. Команды немного отличаются в зависимости от версии CentOS.
а) для Rocky Linux / CentOS 8:
* первая команда установит модуль DL1 Stream-репозитория. Вторая — сам freeipa.
Если мы хотим использовать наш сервер еще и как DNS, то устанавливаем:
После выполняем конфигурирование сервиса:
Отвечаем на первый вопрос, хотим ли мы использовать и сконфигурировать DNS-сервер BIND:
Do you want to configure integrated DNS (BIND)? [no]: yes
* в случае, если мы не хотим, чтобы сервер DNS был установлен вместе с сервером IPA, просто нажимаем Enter.
На остальные запросы можно ответить по умолчанию, нажав 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
* 53: bind
UDP Ports:
* 88, 464: kerberos
* 53: bind
* 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.
. и так как порты мы уже настраивали, переходим ко второму шагу — проверим, что система может выдать билет:
. после вводим пароль администратора, который указывали при конфигурировании FreeIPA.
Проверяем, что билет получен:
Ответ должен быть, примерно, следующим:
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
Клиентские компьютеры должны быть настроены на использование DNS-сервера, который мы сконфигурировали на сервере FreeIPA во время его установки. В сетевых настройках указываем использовать наш сервер ipa для разрешения имен:
- Пример настройки сети в CentOS / Rocky Linux
- Настройка сети с помощью netplan (Debian, Ubuntu).
- В устаревающих системах на основе deb настройка выполняется в файле /etc/network/interfaces (опция dns-nameservers) или /etc/resolv.conf (опция nameserver).
Время
Для корректной работы и подключения необходимо проверить настройки времени.
В первую очередь, укажем часовой пояс:
timedatectl set-timezone Europe/Moscow
* командой timedatectl list-timezones можно посмотреть список всех часовых поясов.
Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.
а) если на системе Ubuntu / Debian:
б) если на системе Rocky Linux / CentOS / Red Hat:
systemctl enable chronyd —now
Подключение к домену
а) на компьютеры с Red Hat / CentOS:
yum install freeipa-client
б) на компьютеры с Debian / Ubuntu:
apt-get install freeipa-client
Для Debian 9 приходится использовать дополнительный репозиторий:
wget -qO — https://apt.numeezy.fr/numeezy.asc | apt-key add —
echo -e ‘deb http://apt.hgb.fr jessie main’ >> /etc/apt/sources.list
Обновляем список и устанавливаем:
apt-get install freeipa-client
Выполним конфигурирование клиента:
Система на основе данных из DNS попробует определить настройки и либо попросит ввести наш домен (если не сможет найти данные автоматически):
DNS discovery failed to determine your DNS domain
Provide the domain name of your IPA server (ex: example.com): dmosk.local
. либо отобразить настройки в консоли, например:
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.
The ipa-client-install command was successful
. сразу проверим, что клиент может получать билет от сервера:
. и вводим пароль от пользователя admin.
Проверяем, что билет получен:
Ответ должен быть, примерно, следующим:
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
Работа с учетными записями
Создадим пользователя. Для этого рассмотрим пример использования командной строки и веб-интерфейса.
Командная строка
Создаем нового пользователя командой:
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
Примет более полной команды для создания пользователя:
ipa user-add dmosk —first=Дмитрий —last=Моск —cn=»Моск Дмитрий» —displayname=»Моск Дмитрий» —email=master@dmosk.ru —password
* в данном примере мы использовали дополнительные поля:
Веб-интерфейс
Открываем браузер и переходим по адресу имени сервера — в нашем примере, https://ipa-server.dmosk.local. Закрываем всплывающее окно с запросом пароля. В появившейся странице авторизации вводим логин admin и его пароль.
Откроется страница управления пользователями:
На панели справа (над списком пользователей) кликаем по Добавить:
В открывшемся окне заполняем поля для создания пользователя и нажимаем по Добавить:
Проверка
На компьютере с клиентом вводим команду для проверки:
. и вводим пароль от созданной учетной записи:
Password for dmosk@DMOSK.LOCAL:
При вервом входе система попросит поменять пароль на новый:
Password expired. You must change it now.
Enter new password:
Enter it again:
Редактирование учетных записей
Редактирование выполняется командой:
Например, поменять пароль можно командой:
ipa user-mod username —password
* в данном примере будет запрошен новый пароль для учетной записи username.
Подробная информация
Получить информацию мы можем о любой сущьности в LDAP с помощью командной строки.
ipa user-find user_name —all
* первая команда вернет информацию по всем пользователям, вторая — по конкретному (в данном примере user_name).
* первая команда вернет информацию по всем группам, вторая — только для admins.
Примеры команд
Рассмотрим отдельно примеры работы с FreeIPA посредством командной строки.
Работа с группами
1. Создание группы безопасности:
ipa group-add —desc=’Group for managers departmen’ managers
* создаем группу безопасности managers.
2. Добавить пользователя в группу:
ipa group-add-member managers —users=user1,user2,user3
* добавим в группу managers пользователей user1, user2 и user3.
ipa group-mod —rename=admins users
* в данном примере мы переименуем группу users в группу admins.
Работа с сертификатами
1. Выпустить сертификат для компьютера (выполняется на компьютере, который присоединен к freeipa):
ipa-getcert request -k /etc/pki/tls/certs/freeipa.key -f /etc/pki/tls/certs/freeipa.crt -r
* в данном примере будет сформирован запрос на получение сертификата и сохранен в каталог /etc/pki/tls/certs.
Если в нащей системе работает SELinux, попытка создать сертификат в другом каталоге закончится ошибкой The parent of location «/foo/bar/» could not be accessed due to insufficient permissions. Для решения проблемы, мы должны задать контекст безопасности cert_t:
semanage fcontext -a -t cert_t «/foo/bar(/.*)?»
* где /foo/bar — полный путь до каталога, в котором мы хотим разместить сертификаты.
И применяем политику:
После этого наша команда ipa-getcert request должна отработать корректно.
2. Посмотреть список запросов на сертификат с узла можно командой:
3. Удалить запрос можно командой:
ipa-getcert stop-tracking -i