Подробный гайд по astra-freeipa-client: пошаговый ввод Astra Linux в домен FreeIPA - Часть 1

Подробный гайд по astra-freeipa-client: пошаговый ввод Astra Linux в домен FreeIPA, настройка SSSD, Kerberos, диагностика и решение частых проблем.

2026.09.17                  


Подробный гайд по astra-freeipa-client: пошаговый ввод Astra Linux в домен FreeIPA - Часть 1Подробный гайд по astra-freeipa-client: пошаговый ввод Astra Linux в домен FreeIPA - Часть 1

Важно:

в разных версиях Astra Linux и пакетах интеграции с FreeIPA названия отдельных флагов могут немного отличаться.

Самый точный источник для вашей системы:

man astra-freeipa-client
astra-freeipa-client --help

Если astra-freeipa-client в вашей поставке является обёрткой над стандартным ipa-client-install, большинство действий и диагностика будут общими для FreeIPA-клиента.


man astra-freeipa-client — подробный гайд



1. Назначение

astra-freeipa-client — утилита для настройки клиента на базе Astra Linux и ввода его в домен/инфраструктуру FreeIPA.

Обычно она выполняет или автоматизирует следующие шаги:

  • настраивает Kerberos-домен/область (/etc/krb5.conf);
  • настраивает SSSD (/etc/sssd/sssd.conf);
  • добавляет машину в домен FreeIPA;
  • получает ключевую таблицу хоста (/etc/krb5.keytab);
  • настраивает PAM для входа доменных пользователей;
  • при необходимости включает автоматическое создание домашних каталогов;
  • настраивает имя хоста, DNS/hostname-зависимости;
  • может настроить NTP/синхронизацию времени;
  • может удалить/отключить клиента от домена.

Фактически это инструмент для сценария:

обычная машина на Astra Linux -> клиент FreeIPA -> доменные пользователи могут входить в систему

2. Быстрый пример

Минимальный типовой запуск:

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example \
  --hostname=ws01.corp.example \
  --mkhomedir

Где:

  • corp.example — доменное имя;
  • CORP.EXAMPLE — Kerberos-realm, обычно домен заглавными буквами;
  • ipa1.corp.example — сервер FreeIPA;
  • ws01.corp.example — полное имя клиентской машины;
  • --mkhomedir — создавать домашний каталог при первом входе доменного пользователя.

Если команда поддерживается в автоматическом режиме, пример с логином/паролем может выглядеть так:

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example \
  --hostname=ws01.corp.example \
  --admin=admin \
  --password='VeryStrongPassword' \
  --mkhomedir \
  --unattended

В некоторых сборках вместо --admin используется --principal, а вместо --unattended — другой флаг. Проверяйте через --help.


3. Установка

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

sudo apt-get update
sudo apt-get install astra-freeipa-client

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

sudo apt-get install freeipa-client sssd sssd-tools krb5-user

Проверка наличия:

which astra-freeipa-client
astra-freeipa-client --help

Поиск установленного пакета:

dpkg -l | grep -Ei 'freeipa|sssd|krb5'

Поиск файла утилиты:

dpkg -L astra-freeipa-client | grep bin

Если нет страницы руководства:

apropos freeipa
ls /usr/share/man/man* | grep -i freeipa
sudo mandb

4. Подготовка клиента перед вводом в домен

Это самый важный этап. Большинство ошибок при вводе в домен связаны не с самой утилитой, а с DNS, временем, именем хоста или сетью.


4.1. Имя хоста

Клиент должен иметь полное доменное имя, например:

hostnamectl set-hostname ws01.corp.example

Проверка:

hostnamectl
hostname -f
hostname -s

Ожидаемо:

ws01.corp.example

Не должно быть:

localhost
localhost.localdomain
ws01

4.2. Файл /etc/hosts

Проверьте /etc/hosts:

cat /etc/hosts

Хороший пример:

127.0.0.1   localhost
192.168.10.25 ws01.corp.example ws01

Плохой вариант, когда основное имя резолвится только в loopback:

127.0.1.1 ws01.corp.example ws01

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


4.3. Время

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

Проверка:

date
timedatectl status

Включите синхронизацию времени:

sudo timedatectl set-ntp true

Если используется chrony:

sudo systemctl enable --now chrony
chronyc sources -v

Пример источника времени:

^* ipa1.corp.example   1   6   377    23   +0.000012s

Если chrony не установлен:



sudo apt-get install chrony

4.4. DNS

Клиент должен корректно резолвить домен и серверы FreeIPA.

Проверка:

getent hosts ipa1.corp.example
getent hosts corp.example

Если установлен dnsutils или bind9-dnsutils:

dig +short ipa1.corp.example
dig +short SRV _kerberos._udp.corp.example
dig +short SRV _ldap._tcp.corp.example

Или через host:

host ipa1.corp.example
host -t SRV _kerberos._udp.corp.example
host -t SRV _ldap._tcp.corp.example

Ожидаемо, что есть записи:

_kerberos._udp.corp.example
_kerberos._tcp.corp.example
_ldap._tcp.corp.example

Проверьте /etc/resolv.conf:

cat /etc/resolv.conf

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

nameserver 192.168.10.10
search corp.example

Если сеть управляется через NetworkManager, DNS может задаваться там:

nmcli device show
nmcli connection show

4.5. Сетевые порты

Клиенту нужен доступ к серверам FreeIPA.

Минимальный набор обычно такой:

Протокол Порт Назначение
TCP/UDP 53 DNS, если FreeIPA обслуживает домен
TCP/UDP 88 Kerberos
TCP/UDP 464 смена пароля Kerberos
TCP 389 LDAP
TCP 636 LDAPS, если используется
TCP 80 HTTP, enrollment/CA/CRL и т.п.
TCP 443 HTTPS, веб-интерфейс/сертификаты

Проверка доступности:

nc -vz ipa1.corp.example 88
nc -vz ipa1.corp.example 389
nc -vz ipa1.corp.example 443

Если nc нет:

sudo apt-get install netcat-openbsd

5. Типовой синтаксис

В обобщённом виде:

sudo astra-freeipa-client [опции]

Или:

sudo /usr/sbin/astra-freeipa-client [опции]

6. Типовые опции

Ниже — часто встречающиеся опции. Конкретный набор зависит от версии.

Опция Назначение
--help, -h показать справку
--domain=DOMAIN домен, например corp.example
--realm=REALM Kerberos realm, обычно CORP.EXAMPLE
--server=FQDN адрес/имя сервера FreeIPA
--hostname=FQDN полное имя клиентской машины
--admin или --principal учётная запись администратора для регистрации
--password пароль администратора или одноразовый пароль хоста
--mkhomedir создавать домашний каталог при первом входе
--unattended неинтерактивный режим
--force принудительное выполнение, если часть настроек уже есть
--no-ntp не настраивать NTP автоматически
--uninstall, --remove удалить клиентскую конфигурацию и вывести из домена
--debug, -d подробный вывод диагностики

Посмотреть точный список:

astra-freeipa-client --help

или:

man astra-freeipa-client

7. Практические сценарии


7.1. Интерактивный ввод в домен

Самый простой вариант — запустить без части параметров:

sudo astra-freeipa-client

Утилита может запросить:

  • домен;
  • realm;
  • сервер FreeIPA;
  • имя хоста;
  • логин администратора;
  • пароль или одноразовый пароль.

7.2. Указание домена и сервера

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example

Этого достаточно, если DNS корректно настроен и утилита сама найдёт нужные службы.


7.3. Полностью автоматический режим

Пример:

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example \
  --hostname=ws01.corp.example \
  --admin=admin \
  --password='VeryStrongPassword' \
  --mkhomedir \
  --unattended

Если в вашей версии используется --principal, то:

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example \
  --hostname=ws01.corp.example \
  --principal=admin \
  --password='VeryStrongPassword' \
  --mkhomedir \
  --unattended



7.4. Ввод с одноразовым паролем хоста

Это более безопасный сценарий для автоматизации.

На сервере FreeIPA администратор создаёт хост и получает одноразовый пароль:

ipa host-add ws01.corp.example --random --force

FreeIPA выдаст одноразовый пароль, например:

Random password: W1xyzAbCdEfG

На клиенте:

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example \
  --hostname=ws01.corp.example \
  --password='W1xyzAbCdEfG' \
  --mkhomedir

Этот способ предпочтительнее, чем передавать пароль постоянного администратора в скриптах.


7.5. Если хост уже частично был настроен

Если предыдущая попытка ввода в домен завершилась с ошибкой, сначала корректно удалите старую конфигурацию:

sudo astra-freeipa-client --uninstall

или:

sudo ipa-client-install --uninstall

Затем повторите ввод.

Если поддерживается принудительный режим:

sudo astra-freeipa-client \
  --domain=corp.example \
  --realm=CORP.EXAMPLE \
  --server=ipa1.corp.example \
  --force

8. Что меняется в системе после ввода в домен

После успешного выполнения обычно изменяются или создаются следующие файлы:

/etc/krb5.conf
/etc/sssd/sssd.conf
/etc/nsswitch.conf
/etc/ipa/default.conf
/etc/ipa/ca.crt
/etc/krb5.keytab
/etc/pam.d/common-auth
/etc/pam.d/common-session
/etc/pam.d/common-account
/etc/pam.d/common-password
/etc/hostname
/etc/hosts

Также могут быть включены службы:

systemctl status sssd

Иногда additionally:

systemctl status krb5.conf

Но krb5.conf — это файл, не служба.

Службы обычно:

systemctl list-unit-files | grep -Ei 'sssd|krb5|certmonger'

9. Проверка после ввода в домен


9.1. Проверка службы SSSD

sudo systemctl status sssd

Ожидаемо:

active (running)

Если нужно перезапустить:

sudo systemctl restart sssd

9.2. Проверка доменного пользователя

getent passwd admin@CORP.EXAMPLE
id admin@CORP.EXAMPLE

Если в конфигурации включены короткие имена, можно также:

getent passwd admin
id admin

Если use_fully_qualified_names = true, используйте полное имя:

id user@CORP.EXAMPLE

9.3. Проверка Kerberos-билета

kinit admin@CORP.EXAMPLE
klist

Пример ожидаемого вывода:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: admin@CORP.EXAMPLE

Valid starting       Expires              Service principal
16.09.2026 10:00:00  16.09.2026 20:00:00  krbtgt/CORP.EXAMPLE@CORP.EXAMPLE

9.4. Проверка через IPA-клиент

Если доступны команды ipa:

ipa user-find admin
ipa host-find ws01.corp.example
ipa host-show ws01.corp.example

9.5. Проверка через SSSD

sudo sssctl user-checks admin@CORP.EXAMPLE

Полезные команды:

sudo sss_cache -E
sudo sssctl config-check

9.6. Проверка PAM и домашнего каталога

Попробуйте вход доменного пользователя:

su - admin@CORP.EXAMPLE

или, если поддерживается короткое имя:

su - admin

Проверка домашнего каталога:

echo $HOME
pwd
ls -ld $HOME

Если домашний каталог не создаётся, см. раздел про pam_mkhomedir.


9.7. Проверка SSH

С локальной машины:

ssh admin@CORP.EXAMPLE@localhost

или:

ssh admin@CORP.EXAMPLE@ws01.corp.example

Если используется полное имя пользователя, иногда удобнее:

ssh -l admin@CORP.EXAMPLE ws01.corp.example

9.8. Проверка sudo

sudo -l
sudo -l -U admin@CORP.EXAMPLE

Если доменные правила sudo настроены во FreeIPA, пользователь сможет выполнять разрешённые команды.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта