Подготовка ВМ с РЕД ОС 8 к вводу в домен и авторизации по JaCarta
Для подготовки ВМ с РЕД ОС 8 к вводу в домен и авторизации по JaCarta необходимо поочередно выполнить действия:
- Подготовить ВМ и подключить к домену.
- Настроить доверие PKI и компоненты JaCarta.
- Настроить доменную аутентификацию по сертификату.
- Настроить обязательный вход.
Шаг 1: Подготовка ВМ и подключение к домену
-
Перейти в терминал и установить необходимые пакеты с помощью команды:
dnf install pcsc-lite pcsc-lite-ccid pcsc-tools opensc pam_pkcs11 p11-kit p11-kit-trust realmd adcli sssd sssd-tools oddjob oddjob-mkhomedir samba-common samba-common-tools krb5-workstation krb5-pkinit nss-tools chrony gnutls authselect -
Открыть конфигурационный файл
/etc/chrony.confи добавить строку:server 3.ru.pool.ntp.org iburst -
Перезапустить сервис chrony:
systemctl restart chronyd -
Изменить DNS-сервер для используемого подключения NetworkManager через GUI-интерфейс или с помощью команды:
nmcli connection modify "{{ item }}" ipv4.ignore-auto-dns yes ipv4.dns "{{ AD-DC ip}}"где {{ item }} — имя активного соединения в NetworkManager.
{{ AD-DC ip }} — IP-адрес контроллера домена.Получить имя активного соединения в NetworkManager можно с помощью команды:
nmcli -t -f NAME connection show --active -
Перезапустить NetworkManager:
systemctl restart NetworkManager -
Присоединить ВМ к домену с помощью команд:
hostnamectl set-hostname <новое имя ВМ>.<имя домена> realm discover <имя домена> realm join --verbose --user='<УЗ администратора AD>@<Kerberos realm>' <имя домена>Пароль учетной записи администратора AD ввести в интерактивном запросе команды
realm join. -
Перезагрузить ВМ.
- На ВМ установить Space Agent VDI.
Шаг 2: Настройка доверия PKI и компонентов JaCarta
-
Создать каталоги
pam_pkcs11для сертификатов и списков отзыва с владельцемrootи правами0755:install -d -o root -g root -m 0755 /etc/pam_pkcs11/cacerts /etc/pam_pkcs11/crls -
Скопировать сертификаты Корневого УЦ и Подчиненного УЦ в директории:
/etc/pki/ca-trust/source/anchors//etc/pam_pkcs11/cacerts/
-
Скопировать список отзывов подчинённого УЦ в директории:
/etc/pki/ca-trust/source/anchors//etc/pam_pkcs11/crls
-
Выполнить команды:
update-ca-trust extract /usr/bin/pkcs11_make_hash_link /etc/pam_pkcs11/cacerts /usr/bin/pkcs11_make_hash_link /etc/pam_pkcs11/crls -
Установить единый клиент JaCarta согласно документации производителя.
-
Выполнить команду:
systemctl enable --now pcscd.socket -
Создать директорию для nssdb с правами на чтение и выполнение для пользователей, но с правом записи только для
root:install -d -o root -g root -m 0755 /etc/pki/nssdb -
Если директория уже существовала, принудительно проверить и исправить ее владельца и права:
chown root:root /etc/pki/nssdb chmod 0755 /etc/pki/nssdb stat -c 'mode=%a owner=%U:%G path=%n' /etc/pki/nssdbРезультат проверки должен содержать:
mode=755 owner=root:root path=/etc/pki/nssdb
-
Если SQL-база NSS еще не создана, инициализировать ее без пароля командами:
if ! certutil -L -d sql:/etc/pki/nssdb >/dev/null 2>&1; then certutil -N -d sql:/etc/pki/nssdb --empty-password fi -
Добавить библиотеку JaCarta в SQL-базу nssdb при помощи команды:
modutil -dbdir sql:/etc/pki/nssdb -add "Jacarta PKCS11" -libfile /usr/lib64/libjcPKCS11-2.so -
Добавить в nssdb сертификаты Корневого и Подчиненного УЦ при помощи команд:
certutil -d sql:/etc/pki/nssdb -A -n 'AD-ROOT' -t CT,CT,CT -a -i /etc/pki/ca-trust/source/anchors/<сертификат корневого УЦ> certutil -d sql:/etc/pki/nssdb -A -n 'AD-SUBCA' -t CT,CT,CT -a -i /etc/pki/ca-trust/source/anchors/<сертификат подчиненного УЦ> -
Добавить в директорию
/usr/share/p11-kit/modulesфайл Jacarta.module.Содержимое файла Jacarta.module:
module:/usr/lib64/libjcPKCS11-2.so
-
Сделать модуль JaCarta по умолчанию в nssdb командой:
modutil -default "Jacarta PKCS11" -dbdir sql:/etc/pki/nssdb -mechanisms RSA:DSA:RC4:DES -
Проверить созданную SQL-базу NSS, добавленные сертификаты и модуль JaCarta командами:
certutil -L -d sql:/etc/pki/nssdb modutil -dbdir sql:/etc/pki/nssdb -listВ выводе
certutilдолжны присутствовать сертификаты AD-ROOT и AD-SUBCA, а в выводеmodutil— модуль "Jacarta PKCS11" с библиотекой/usr/lib64/libjcPKCS11-2.so.
Шаг 3: Настройка доменной аутентификации по сертификату
-
Внести правки в файл
/etc/pam_pkcs11/pam_pkcs11.conf. Файл необходимо привести к виду, представленному ниже.Файл
/etc/pam_pkcs11/pam_pkcs11.confpam_pkcs11 { nullok = true; debug = false; card_only = true; use_first_pass = false; try_first_pass = false; use_authtok = false; use_pkcs11_module = jacarta; screen_savers = gnome-screensaver,xscreensaver,kscreensaver,mate-screensaver; pkcs11_module jacarta { module = /usr/lib64/libjcPKCS11-2.so slot_num = 0; ca_dir = /etc/pam_pkcs11/cacerts; nss_dir = /etc/pki/nssdb; crl_dir = /etc/pam_pkcs11/crls; cert_policy=ca, signature; } use_mappers = cn, uid, pwent, null; mapper_search_path = /usr/$LIB/pam_pkcs11; mapper pwent { debug = false; ignorecase = false; module = internal; # module = /usr/$LIB/pam_pkcs11/pwent_mapper.so; } mapper null { debug = false; # module = /usr/$LIB/pam_pkcs11/null_mapper.so; module = internal ; # select behavior: always match, or always fail default_match = false; # on match, select returned user default_user = nobody ; } mapper cn { debug = false; module = internal; # module = /usr/$LIB/pam_pkcs11/cn_mapper.so; ignorecase = true; mapfile = file:///etc/pam_pkcs11/cn_map; } mapper uid { debug = false; module = internal; # module = /usr/$LIB/pam_pkcs11/uid_mapper.so; ignorecase = false; mapfile = "none"; } } -
Внести правки в файл
/etc/sssd/sssd.conf. Файл необходимо привести к виду, представленному ниже.Файл
/etc/sssd/sssd.conf
В качестве имени домена и имени контроллера домена необходимо использовать имена существующей инфраструктуры.[sssd] domains = example.com config_file_version = 2 services = nss, pam #certificate_verification = no_ocsp [domain/example.com] ad_domain = example.com ad_server = dc.example.com krb5_realm = EXAMPLE.COM case_sensitive = False realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad access_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True ad_gpo_access_control = disabled dns_resolver_timeout = 10 use_fully_qualified_names = False fallback_homedir = /home/%u@%d enumerate = false ldap_referrals = false dyndns_update = true dyndns_refresh_interval = 43200 dyndns_update_ptr = true dyndns_ttl = 3600 dyndns_auth = GSS-TSIG krb5_renewable_lifetime = 7d krb5_renew_interval = 300s [nss] [pam] pam_cert_auth = True debug_level = 10 p11_child_timeout = 60 pam_cert_db_path = /etc/pki/tls/certs/ca-bundle.crt pam_p11_allowed_services = +gdm-smartcard, +mate-screensaver, +glint-service [certmap/EXAMPLE.COM/nt_principal] maprule = (|(userPrincipalName={subject_nt_principal})(samAccountName={subject_nt_principal.short_name})) domains = EXAMPLE.COM -
После сохранения файла
/etc/sssd/sssd.confнеобходимо назначить владельцаrootи права0600с помощью команд ниже. Запуск SSSD не происходит, если конфигурационный файл доступен для чтения другим пользователям.chown root:root /etc/sssd/sssd.conf chmod 0600 /etc/sssd/sssd.conf -
Проверить конфигурацию и применить ее с помощью команд:
sssctl config-check systemctl enable --now oddjobd.service sssd.service systemctl restart sssd.service systemctl status sssd.service --no-pager -l -
Проверить разрешение доменного пользователя:
getent passwd '<имя пользователя>@<имя домена>'Команда должна вернуть учетную запись доменного пользователя. Если вывода нет, перед переходом к включению обязательной аутентификации по смарт-карте необходимо проверить состояние SSSD, DNS и членство ВМ в домене.
-
Внести правки в файл
/etc/krb5.conf. Файл необходимо привести к виду, представленному ниже.Файл
/etc/krb5.confincludedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt pkinit_kdc_hostname = dc.example.com pkinit_identities = PKCS11:/usr/lib64/libjcPKCS11-2.so pkinit_eku_checking = none default_ccache_name = FILE:/tmp/krb5cc_%{uid} canonicalize = true [realms] EXAMPLE.COM = { kdc = dc.example.com admin_server = dc.example.com default_domain = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM [appdefaults] pam = { debug = true }В качестве имени домена и имени контроллера домена необходимо использовать имена из существующей инфраструктуры.
Шаг 4: Настройка обязательного входа
-
Для пользователя, который будет проходить авторизацию по протоколу GLINT, необходимо выполнить команды:
gpasswd --add '<имя пользователя>@<имя домена>' space_usbip loginctl enable-linger '<имя пользователя>@<имя домена>' -
Проверить членство пользователя в группе и состояние linger с помощью команд:
id '<имя пользователя>@<имя домена>' loginctl show-user '<имя пользователя>@<имя домена>' -p Linger -
Убедиться, что установлен MATE:
command -v mate-sessionПри отсутствии MATE создать файл настройки рабочего стола и выбрать MATE в качестве графической сессии для GLINT:
sudo touch /etc/sysconfig/desktop sudo sed -i '/^PREFERRED=/d' /etc/sysconfig/desktop printf '%s\n' 'PREFERRED="$(type -p mate-session)"' | sudo tee -a /etc/sysconfig/desktop >/dev/nullПроверить добавленную строку командой:
grep '^PREFERRED=' /etc/sysconfig/desktop -
Проверить текущий режим SELinux с помощью команд:
getenforce grep '^SELINUX=' /etc/selinux/configЕсли SELinux находится в режиме
Enforcing, перевести его вPermissiveс помощью команд:setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/configВнимание
Если SELinux находится в режиме
Disabled, не использовать данную инструкцию для переключения. Переход изDisabledвPermissiveтребует отдельной процедуры с восстановлением меток файловой системы и перезагрузкой. РежимDisabledне блокирует доступ SSSD и PC/SC к JaCarta. -
Если
glint-launcherне может запуститьXorgиз-за запретаXwrapper, в/etc/X11/Xwrapper.configдобавить строку:allowed_users = anybody -
Выполнить команду, которая включает обязательный вход по смарт-карте и блокировку при ее извлечении:
authselect select sssd with-smartcard with-smartcard-required with-smartcard-lock-on-removal with-mkhomedir --force -
Проверить примененный профиль с помощью команд:
authselect check authselect current -
Перезагрузить ВМ.