FreeIPA — это интегрированный домен для Linux: каталог 389 Directory Server, Kerberos, DNS на BIND, центр сертификации Dogtag и клиент SSSD собраны в один продукт с общим интерфейсом. Вместо того чтобы отдельно поднимать LDAP, отдельно KDC и вручную связывать их с PAM, администратор получает единую базу пользователей, групп, хостов и правил доступа. В 2026 году схема остаётся востребованной там, где нужен собственный домен без Windows Server: вход по SSH, sudo-правила, автомонтирование домашних каталогов и сертификаты для внутренних сервисов.

Из чего состоит FreeIPA

Каталог хранит записи пользователей, групп, хостов и политик. Kerberos выдаёт билеты и подтверждает подлинность сторон. BIND обслуживает зону домена и SRV-записи, по которым клиенты находят KDC и LDAP. Dogtag выпускает сертификаты для служб и хостов, а SSSD на клиенте кеширует учётные записи и правила, поэтому вход возможен даже при кратковременной недоступности сервера.

Все компоненты ставятся одним пакетом и управляются командой ipa: схема данных и сроки действия билетов согласованы из коробки.

Что понадобится до установки

Сервер должен иметь постоянное имя вида ipa.example.local, настроенный прямой и обратный DNS и синхронизированное время. Kerberos чувствителен к расхождению часов: обычно достаточно chrony с погрешностью в несколько секунд. Домен example.local в примерах замените на свой; для внутренней зоны он подходит, а для публичной используйте зарегистрированное имя.

hostnamectl set-hostname ipa.example.local
hostname -f
chronyc tracking
getent hosts ipa.example.local

hostname -f должен вернуть полное имя, а getent hosts — адрес сервера, а не 127.0.1.1. Если в /etc/hosts осталась строка с коротким именем, исправьте её: установщик проверяет соответствие и откажется работать при ошибке.

Установка сервера

На Rocky Linux или AlmaLinux пакеты берутся из штатных репозиториев, на Fedora — тоже. Команда установки интерактивна и запрашивает пароли Directory Manager и администратора Kerberos; не передавайте их в историю оболочки.

sudo dnf install -y ipa-server ipa-server-dns
sudo ipa-server-install --setup-dns --auto-forwarders \
  --domain example.local --realm EXAMPLE.LOCAL \
  --hostname ipa.example.local

Установщик создаст экземпляр 389 DS, KDC, зону DNS с автоматическим обновлением, HTTP-сервис и CA. Если DNS обслуживается на другом сервере, уберите --setup-dns и заранее создайте SRV-записи _kerberos._udp, _ldap._tcp и _kerberos._tcp. Без них клиенты не найдут домен и будут показывать ошибку вида «Cannot contact any KDC».

По окончании проверьте службы и получите билет:

sudo ipactl status
kinit admin
klist
ipa user-find admin

ipactl status перечисляет все компоненты: Directory, KDC, kadmin, httpd, ca, named. Если один из них не поднялся, смотрите journalctl -u named и /var/log/ipaserver-install.log.

Подключение клиента

На рабочей станции или сервере достаточно пакета ipa-client. Клиент настроит SSSD, Kerberos, PAM и, при желании, создаст домашние каталоги при первом входе.

sudo dnf install -y ipa-client
sudo ipa-client-install --domain=example.local \
  --server=ipa.example.local --mkhomedir
id admin
sudo systemctl status sssd

Если домен не резолвится, укажите --server и проверьте /etc/resolv.conf. Команда id admin покажет пользователя из каталога, а sssctl domain-status example.local — состояние подключения к серверам.

Пользователи, группы и правила доступа

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

ipa group-add admins --desc="Администраторы Linux"
ipa user-add ivan --first=Ivan --last=Petrov \
  --email=ivan@example.local --shell=/bin/bash
ipa group-add-member admins --users=ivan
ipa user-show ivan --all

Пароль задаётся отдельно командой ipa passwd ivan; при первом входе система попросит его сменить. Учётные записи отключают через ipa user-disable без удаления истории.

Доступ к хостам ограничивают правила HBAC. По умолчанию действует разрешающее правило allow_all, поэтому после создания своей политики его отключают.

ipa hbacrule-add ssh_admins
ipa hbacrule-add-user ssh_admins --groups=admins
ipa hbacrule-add-host ssh_admins --hosts=web01.example.local
ipa hbacrule-add-service ssh_admins --hbacsvcs=sshd
ipa hbacrule-disable allow_all

Правила sudo устроены похоже: правило, пользовательская группа, хост и разрешённая команда. SSSD кеширует правила, поэтому проверяйте изменения на тестовом хосте. Сбросить кеш помогает sudo sss_cache -E и перезапуск sssd.

Kerberos в повседневной работе

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

kinit ivan
klist
kvno HTTP/web01.example.local
ipa-getkeytab -s ipa.example.local \
  -p HTTP/web01.example.local -k /etc/httpd/conf/krb5.keytab
kdestroy

Для SSH с Kerberos в /etc/ssh/sshd_config включают GSSAPIAuthentication yes, а на клиенте — GSSAPIAuthentication yes и GSSAPIDelegateCredentials yes. Тогда вход идёт по уже имеющемуся билету, без пароля и без ключей. Это удобно, но требует синхронизации времени и корректных DNS-записей.

Файл keytab доступен только службе: права 600 и отдельный владелец. Копию не хранят в репозитории — при компрометации принципал перевыпускают.

Диагностика и обслуживание

Первое место проверки — SSSD: journalctl -u sssd -f и уровень отладки в /etc/sssd/sssd.conf. Второе — Kerberos: kinit -V admin показывает, на каком шаге получение билета остановилось. Третье — LDAP: запрос от имени администратора подтверждает, что каталог отвечает.

kinit -V admin
ldapsearch -Y GSSAPI -H ldap://ipa.example.local \
  -b "cn=users,cn=accounts,dc=example,dc=local" uid=ivan
sssctl user-checks ivan
sudo ipa-backup

ipa-backup сохраняет каталог, конфигурацию и ключи CA; храните копию вне сервера и проверяйте восстановление на стенде. Для отказоустойчивости ставят реплику: ipa-replica-install на втором хосте с собственным именем и DNS. Репликация охватывает и данные, и PKI, но не заменяет резервные копии.

Чек-лист внедрения

  • Полное имя сервера, прямой и обратный DNS, синхронизация времени.
  • Отдельный сервисный аккаунт для автоматизации, без прав администратора домена.
  • Правила HBAC и sudo вместо локальных исключений.
  • Реплика в другом сегменте и регулярные ipa-backup.
  • Мониторинг срока действия сертификатов CA и билетов служб.

Итог

FreeIPA даёт Linux-инфраструктуре единый домен: пользователи, группы, Kerberos, DNS и политика доступа живут в одном каталоге и управляются одними командами. Начинайте с корректного DNS и времени, затем подключайте клиентов, затем переносите HBAC и sudo с локальных файлов. Такой порядок избавляет от большинства проблем, которые выглядят как «Kerberos не работает», а на деле являются ошибкой разрешения имён.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте