...
ОС: Windows server 2019
доменное имя: server.astradomain.ad
ip: 10.0.2.15
Клиент:
ОС: РЕД ОС
...
Необходимо отредактировать файл /etc/sudoers
su sudo nano /etc/sudoers |
И добавить в него строчку User ALL=(ALL) ALL
...
Далее логинимся под пользователем и продолжаем работу из-под него.
su user |
Далее необходимо установить следующие пакеты:
sudo dnf update sudo dnf upgrade sudo dnf install ccid opensc pam_pkcs11 gdm-plugin-smartcard p11-kit install join-to-domain sudo dnf install -y realmd PackageKit sudo dnf install -y krb5-workstation sudo dnf install -y nss-tools opensc krb5-pkinit |
Загрузите модуль librtpkcs11ecp.so и установите:
|
Настройка DNS
Через консоль
Меняем имя клиента в нашем домене astradomain.ad на client
|
Узнайте название вашего соединения. Они могут отличаться.
CON_NAME="enp0s3" |
Название интерфейса, которое использует ваше соединение.
INT_NAME="Ethernet" |
Адрес dns сервера
DNS_SERVER_IP=10.0.2.15 |
Отключаем соединение
sudo nmcli con down "$CON_NAME" |
Настраиваем сетевую карту соединения - по умолчанию $INT_NAME
sudo nmcli con mod "$CON_NAME" connection.interface-name $INT_NAME |
Настраиваем DNS - вместо DNS_SERVER_IP указать IP-адрес сервера DNS. При необходимости указываем адрес локального сервера DNS.
sudo nmcli con mod "$CON_NAME" ipv4.dns "$DNS_SERVER_IP 10.0.2.15" sudo nmcli con mod "$CON_NAME" ipv4.ignore-auto-dns yes |
Включаем сетевое соединение
sudo nmcli con up "$CON_NAME" |
Вводим компьютер в домен
sudo join-to-domain.sh |
Через графический интерфейс
...
Узнаем какие пакеты еще необходимы для подключения к домену
realm discover astradomain.ad |
Список необходимых для работы пакетов будет выведен в следующем формате
...
Если в домене есть пользователь ad_user, к которому можно подключиться с помощью пароля, то можно осуществить проверку настройки получив тикет для него
kinit ad_user@ASTRADOMAIN.AD |
Проверка получения тикета осуществляется командой
klist |
Удаление тикета
kdestroy |
Проверка аутентификации под пользователем в домене без Рутокена
su ad_user@astradomain.ad |
Логинимся локальным пользователем для дальнейшей настройки
su user |
Настройка клиента для аутентификации в домене с помощью Рутокена
Удаляем старую базу если есть, и создаем новую
sudo rm -fr /etc/pki/nssdb sudo mkdir /etc/pam_pkcs11/nssdb sudo chmod 777 /etc/pam_pkcs11/nssdb sudo certutil -N -d /etc/pam_pkcs11/nssdb --empty-password sudo modutil -dbdir /etc/pam_pkcs11/nssdb -add "Rutoken PKCS11" -libfile /usr/lib64/librtpkcs11ecp.so |
Устанавливаем корневой сертификат в /etc/pki/ca-trust/source/anchors/
Следующая команда используется из директории, в которой находится корневой сертификат
sudo cp ca_cert.cer /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust force-enable sudo update-ca-trust extract sudo certutil -d /etc/pam_pkcs11/nssdb -A -n 'AD-ROOT' -t CT,CT,CT -a -i /etc/pki/ca-trust/source/anchors/ca_cert.cer |
Проверяем видимость сертификатов. Должен запросить ПИН-код Рутокен и выдать сертификат с карточки с правами u,u,u и корневой сервера
sudo certutil -L -d /etc/pam_pkcs11/nssdb -h all Certificate Nickname Trust Attributes Enter Password or Pin for "Rutoken ECP <no label>": |
Добавляем модуль Рутокен к p11-kit
sudo nano /usr/share/p11-kit/modules/Rutoken.module |
________________________________
module:/usr/lib64/librtpkcs11ecp.so
________________________________
...
Делаем модуль Рутокен по умолчанию для p11-tools
sudo modutil -default "Rutoken PKCS11" -dbdir /etc/pam_pkcs11/nssdb -mechanisms RSA:DSA:RC4:DES |
Редактируем pam_pkcs11
sudo nano /etc/pam_pkcs11/pam_pkcs11.conf |
pam_pkcs11 { nullok = false; debug = true; use_first_pass = false; use_authtok = false; card_only = false; wait_for_card = false; use_pkcs11_module = rutokenecp; # Aktiv Rutoken ECP pkcs11_module rutokenecp { module = /usr/lib64/librtpkcs11ecp.so; slot_num = 0; support_thread = true; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = signature; } use_mappers = ms; mapper_search_path = /usr/lib64/pam_pkcs11; mapper ms { debug = false; module = internal; ignorecase = true; ignoredomain = true; domain = "ASTRADOMAIN.AD"; } } |
Настраиваем PAM стандартным средством RHEL authselect.
sudo authselect select sssd with-smartcard with-mkhomedir --force |
Как должен выглядеть /etc/pam.d/system-auth
sudo nano /etc/pam.d/system-auth |
auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular auth [default=2 ignore=ignore success=ok] pam_localuser.so auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_sss.so try_cert_auth auth sufficient pam_unix.so nullok try_first_pass auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient |
pam_usertype.so issystem account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required |
pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_oddjob_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so |
Как должен выглядеть /etc/pam.d/password-auth
sudo nano /etc/pam.d/password-auth |
auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular auth [default=1 ignore=ignore success=ok] pam_localuser.so auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_sss.so try_cert_auth auth sufficient pam_unix.so nullok try_first_pass auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient |
pam_usertype.so issystem account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required |
pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_oddjob_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so |
Настройка SSSD
sudo nano /etc/sssd/sssd.conf |
Как должен выглядеть/etc/sssd/sssd.conf:
[sssd] [domain/astradomain.ad] # Кэширование аутентификационных данных, необходимо при недоступности домена id_provider = ad # Включает/Отключает режим полных имён пользователей при входе # Определение домашнего каталога для доменных пользователей # Параметр access_provider = simple Определяет список доступа на основе имен пользователей или групп. # Включает/Отключает перечисление всех записей домена, операция(id или getent) может занимать длительное время при enumerate = true в больших инфраструктурах # Параметр ignore_group_members может ускорить авторизацию в домене если домен имеет большое количество пользователей, групп и вложенных OU # Поиск ссылок может привести к снижению производительности в средах, которые их интенсивно используют. # Включает/Отключает динамические обновления DNS, если в статусе sssd ошибка "TSIG error with server: tsig verify failure", то установите dyndns_update = false #[nss] [pam] [certmap/files/ms] |
Корректируем конфиг Kerberos
sudo nano /etc/krb5.conf |
Сам файл должен выглядеть следующим образом:
includedir /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] # dns_lookup_realm = false # Отключить поиск kerberos-имени домена через DNS dns_lookup_kdc = true # Включить поиск kerberos-настроек домена через DNS ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false # spake_preauth_groups = edwards25519 default_ccache_name = FILE:/tmp/krb5cc_%{uid} default_realm = ASTRADOMAIN.AD pkinit_kdc_hostname = SERVER.ASTRADOMAIN.AD pkinit_anchors = DIR:/etc/pki/ca-trust/source/anchors/ pkinit_identities = PKCS11:librtpkcs11ecp.so pkinit_eku_checking = none canonicalize = True default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5 [realms] ASTRADOMAIN.AD = { kdc = server.astradomain.ad # Primary Domain Controller admin_server = server.astradomain.ad # Primary Domain Controller default_domain = astradomain.ad # Domain name } [domain_realm] .astradomain.ad = ASTRADOMAIN.AD astradomain.ad = ASTRADOMAIN.AD [appdefaults] pam = { debug = true } |
***Необходимо перезагрузить компьютер***
...