Подробный гайд по 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, пользователь сможет выполнять разрешённые команды.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.