Настройка доменного клиента для работы с ОС RedOS


После выполнения всех действий по инструкции "7.5. Настройка доверенных отношений Avanpost DS с MS Active Directory" можно переходить к настройке доверенных отношений на рабочих станциях.

Для настройки рабочих станций под управлением ОС RedOS в домене Avanpost DS для работы с MS AD требуется подключиться к ним по SSH и выполнить шаги:

ВНИМАНИЕ:

В инструкции приведены команды для двух операционных систем: REDOS 8REDOS 7

Для шагов с отличающимися в зависимости от ОС действиями указаны команды для обоих ОС. Необходимо выполнять команды только для используемой вами ОС.

Шаг 1. Перевести SELinux в режим "permissive" и отключить службу "iptables" (только для RedOS 7).

Для этого необходимо выполнить команды:

RedOS 8
НЕ выполняем данный шаг на RedOS 8
RedOS 7
sudo sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config
sudo systemctl stop iptables && sudo systemctl disable iptables

Шаг 2. Установить необходимые пакеты.

Для этого необходимо выполнить команды:

RedOS 8
sudo dnf install authselect-compat nss-pam-ldapd kstart
RedOS 7
sudo dnf install authselect-compat nss-pam-ldapd sssd-proxy
sudo wget https://dl.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/k/kstart-4.2-7.el7.x86_64.rpm
sudo rpm -i kstart-4.2-7.el7.x86_64.rpm

Шаг 3. Ввести рабочую станцию в домен Avanpost DS.

Для этого необходимо выполнить действия согласно инструкции "6.7. Введение в домен рабочих станций".

Рисунок 99. Пример успешного введения станции в домен

Шаг 4. Остановить службы "sssd" и "nslcd".

Для этого необходимо выполнить команду:

sudo systemctl stop sssd nslcd

Шаг 5. Проверить провайдер и функции authselect.

Для этого необходимо:

5.1. Проверить, что в качестве провайдера используется "sssd" и включены необходимые функции, с помощью команды:

sudo authselect current

ВАЖНО:

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

Пример правильно настроенного autheselect
$ sudo authselect current 

Идентификатор профиля: sssd
Включенные функции:
- with-mkhomedir
- with-silent-lastlog
- with-fingerprint
- with-mdns4
- with-pamaccess

5.2. Если какая-либо из функций выключена, то включить ее одной из команд:

Пример добавления отсутствующих параметров
sudo authselect enable-feature with-mkhomedir
sudo authselect enable-feature with-silent-lastlog
sudo authselect enable-feature with-fingerprint 
sudo authselect enable-feature with-mdns4
sudo authselect enable-feature with-pamaccess

Шаг 6. Внести изменения в конфигурационные файлы authselect.

Для этого необходимо:

6.1. Открыть для редактирования конфигурационный файл "/etc/authselect/system-auth". 

sudo nano /etc/authselect/system-auth

6.2. Добавить строки в файл "/etc/authselect/system-auth".

Строки для добавления в "/etc/authselect/system-auth"
auth        sufficient                                   pam_ldap.so
account     sufficient                                   pam_ldap.so
password    sufficient                                   pam_ldap.so
session     sufficient                                   pam_ldap.so

ВАЖНО:

Указанные строки требуется добавлять в строго определенные места файла "/etc/authselect/system-auth" по следующему алгоритму:

Каждую строку нужно поместить в блок со строками с таким же свойством (auth, account, password или session) сразу после строки с параметром "pam_unix.so".

Пример готового /etc/authselect/system-auth 
# Generated by authselect
# Do not modify this file manually, use authselect instead. Any user changes will be overwritten.
# You can stop authselect from managing your configuration by calling 'authselect opt-out'.
# See authselect(8) for more details.

auth        required                                     pam_env.so
auth        required                                     pam_faildelay.so delay=2000000
auth        sufficient                                   pam_fprintd.so
auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular
auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
auth        sufficient                                   pam_unix.so nullok
auth        sufficient                                   pam_ldap.so

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_access.so
account     required                                     pam_unix.so
account     sufficient                                   pam_ldap.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 local_users_only
password    sufficient                                   pam_unix.so yescrypt shadow nullok use_authtok
password    sufficient                                   pam_ldap.so
password    [success=1 default=ignore]                   pam_localuser.so
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
session     [success=1 default=ignore]                   pam_succeed_if.so service in crond quiet use_uid
session     required                                     pam_unix.so
session     sufficient                                   pam_ldap.so
session     optional                                     pam_sss.so

6.3. Открыть для редактирования конфигурационный файл "/etc/authselect/password-auth". 

sudo nano /etc/authselect/password-auth

6.4. Добавить строки в файл "/etc/authselect/password-auth".

Строки для добавления в /etc/authselect/password-auth 
auth        sufficient                                   pam_ldap.so
account     sufficient                                   pam_ldap.so
password    sufficient                                   pam_ldap.so
session     sufficient                                   pam_ldap.so

ВАЖНО:

Указанные строки требуется добавлять в строго определенные места файла "/etc/authselect/password-auth" по следующему алгоритму:

Каждую строку нужно поместить в блок со строками с таким же свойством (auth, account, password или session) сразу после строки с параметром "pam_unix.so".

Пример готового файла /etc/authselect/password-auth 
# Generated by authselect
# Do not modify this file manually, use authselect instead. Any user changes will be overwritten.
# You can stop authselect from managing your configuration by calling 'authselect opt-out'.
# See authselect(8) for more details.

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        sufficient                                   pam_unix.so nullok
auth        sufficient                                   pam_ldap.so
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_access.so
account     required                                     pam_unix.so
account     sufficient                                   pam_ldap.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 local_users_only
password    sufficient                                   pam_unix.so yescrypt shadow nullok use_authtok
password    sufficient                                   pam_ldap.so
password    [success=1 default=ignore]                   pam_localuser.so
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
session     [success=1 default=ignore]                   pam_succeed_if.so service in crond quiet use_uid
session     required                                     pam_unix.so
session     sufficient                                   pam_ldap.so
session     optional                                     pam_sss.so

6.5. Открыть для редактирования конфигурационный файл "/etc/authselect/fingerprint-auth". 

sudo nano /etc/authselect/fingerprint-auth

6.6. Добавить строки в файл "/etc/authselect/fingerprint-auth".

Строки для добавления в /etc/authselect/fingerprint-auth
account     sufficient                                   pam_ldap.so
session     sufficient                                   pam_ldap.so

ВАЖНО:

Указанные строки требуется добавлять в строго определенные места файла "/etc/authselect/fingerprint-auth" по следующему алгоритму:

Каждую строку нужно поместить в блок со строками с таким же свойством (auth, account, password или session) сразу после строки с параметром "pam_unix.so".

Пример готового файла: /etc/authselect/fingerprint-auth
# Generated by authselect
# Do not modify this file manually, use authselect instead. Any user changes will be overwritten.
# You can stop authselect from managing your configuration by calling 'authselect opt-out'.
# See authselect(8) for more details.
 
auth        required                                     pam_env.so
auth        [success=done default=bad]                   pam_fprintd.so
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    required                                     pam_deny.so
 
session     optional                                     pam_keyinit.so revoke
session     required                                     pam_limits.so
-session    optional                                     pam_systemd.so
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

6.7. Открыть для редактирования конфигурационный файл "/etc/pam.d/sssd-shadowutils". 

sudo nano /etc/pam.d/sssd-shadowutils

6.8. Добавить строки в файл "/etc/pam.d/sssd-shadowutils".

Строки для добавления в /etc/pam.d/sssd-shadowutils
auth        sufficient                                   pam_ldap.so
account     sufficient                                   pam_ldap.so

ВАЖНО:

Указанные строки требуется добавлять в строго определенные места файла "/etc/pam.d/sssd-shadowutils" по следующему алгоритму:

Каждую строку нужно поместить в блок со строками с таким же свойством (auth, account, password или session) сразу после строки с параметром "pam_unix.so".

Пример готового файла /etc/pam.d/sssd-shadowutils
#%PAM-1.0
auth        [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_ldap.so
account     required      pam_permit.so

6.9. Открыть для редактирования конфигурационный файл "/etc/pam.d/runuser". 

sudo nano /etc/pam.d/runuser

6.10. Добавить строки в файл "/etc/pam.d/runuser".

Строки для добавления в /etc/pam.d/runuser
session         sufficient      pam_ldap.so

ВАЖНО:

Указанные строки требуется добавлять в строго определенные места файла "/etc/pam.d/runuser" по следующему алгоритму:

Каждую строку нужно поместить в блок со строками с таким же свойством (auth, account, password или session) сразу после строки с параметром "pam_unix.so".

Пример готового файла /etc/pam.d/runuser
#%PAM-1.0
auth            sufficient      pam_rootok.so
session         optional        pam_keyinit.so revoke
session         required        pam_limits.so
session         required        pam_unix.so
session         sufficient      pam_ldap.so

Шаг 7. Настроить конфигурационный файл "/etc/nsswitch.conf".

Для этого необходимо:

7.1. Открыть для редактирования конфигурационный файл "/etc/nsswitch.conf". 

sudo nano /etc/nsswitch.conf

7.2. Указать в конфигурационном файле "/etc/nsswitch.conf" параметр "ldap" во всех свойствах с параметром "sss".

Пример /etc/nsswitch.conf
# Generated by authselect
# Do not modify this file manually, use authselect instead. Any user changes will be overwritten.
# You can stop authselect from managing your configuration by calling 'authselect opt-out'.
# See authselect(8) for more details.

# In order of likelihood of use to accelerate lookup.
passwd:     files sss systemd ldap
shadow:     files sss ldap
group:      files sss systemd ldap
hosts:      files myhostname dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] ldap
services:   files sss ldap
netgroup:   files sss ldap
automount:  files sss ldap

aliases:    files
ethers:     files
gshadow:    files
networks:   files dns
protocols:  files
publickey:  files
rpc:        files

Шаг 8. Настроить службу "sssd".

Для этого необходимо:

8.1. Открыть для редактирования конфигурационный файл "/etc/sssd/sssd.conf".

sudo nano /etc/sssd/sssd.conf

8.2. Изменить значение параметра "id_provider" в блоке "domain/ВАШ.ДОМЕН" на "proxy".

id_provider = proxy

8.3. Добавить строки в блок "domain/ВАШ.ДОМЕН":

Строки для добавления
proxy_lib_name = ldap
proxy_pam_target = sssdproxyldap
enumerate = true
Пример /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
reconnection_retries = 3
services = nss, pam, sudo
domains = AVANPOST.LOCAL

[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
memcache_timeout = 5

[pam]
reconnection_retries = 3

[sudo]

[domain/AVANPOST.LOCAL]
entry_cache_timeout = 5
ldap_user_name = cn
debug_level = 9
cache_credentials = False
id_provider = proxy
auth_provider = krb5
chpass_provider = krb5
access_provider = simple

proxy_lib_name = ldap
proxy_pam_target = sssdproxyldap
enumerate = true

dns_discovery_domain = default.avanpost.local 

ldap_uri = _srv_
ldap_schema = rfc2307bis
ldap_referrals = False

ldap_sudo_search_base = ou=sudoers,dc=system
ldap_sudo_full_refresh_interval=86400
ldap_sudo_smart_refresh_interval=3600

ldap_search_base = dc=avanpost,dc=local
ldap_user_search_base = dc=avanpost,dc=local
ldap_user_object_class = krbPrincipal

ldap_search_timeout = 60
ldap_network_timeout = 60
ldap_opt_timeout = 60

ldap_access_filter = (host=ALL)

ldap_force_upper_case_realm = True

ldap_id_use_start_tls = False

ldap_sasl_mech = GSSAPI
ldap_sasl_authid = host/cl08.avanpost.local@AVANPOST.LOCAL

#ldap_default_bind_dn = cn=redos7,ou=hosts,dc=avanpost,dc=local
#ldap_default_authtok_type = obfuscated_password
#ldap_default_authtok = AAAQAC1KoRjLa4r8BW0uxfw6yeU98ftcPyLS/aSg/XdPLVGb/QHbFVJufkAye16gVVdDK9y8ahVvfyVG9HYXPwTkymwAAQID

krb5_realm = AVANPOST.LOCAL
krb5_canonicalize = False
krb5_server = _srv_
krb5_kpasswd = _srv_

Шаг 9. Настроить службу "nslcd".

Для этого необходимо:

9.1. Открыть для редактирования конфигурационный файл "/etc/nslcd.conf". 

sudo nano /etc/nslcd.conf

9.2. Изменить параметры в файле "/etc/nslcd.conf" по шаблону:

Шаблон /etc/nslcd.conf
uid nslcd
gid ldap
uri ldap://[FQDN КД Avanpost DS] # FQDN или IP контроллера домена Avanpost DS
base dc=[Домен2ур],dc=[Домен1ур] # Base DN для поиска объектов
sasl_mech GSSAPI
sasl_realm [REALM] # REALM домена Avanpost DS
krb5_ccname /tmp/[FQDN РС].tkt # FQDN введенной в домен рабочей станции
filter group (objectclass=posixGroup)
map passwd uid krbPrincipalName

Заменить в строке 3 [FQDN КД Avanpost DS] на свой FQDN или IP контроллера домена Avanpost DS;

Заменить в строке 4 [Домен1ур] на свой домен первого уровня, а [Домен2ур] — на свой домен второго уровня;

Заменить в строке 6 [REALM] на свой REALM домена Avanpost DS;

Заменить в строке 7 [FQDN РС] на свой FQDN рабочей станции.

Пример /etc/nslcd.conf
uid nslcd
gid ldap
uri ldap://192.168.1.23/
base dc=avanpost,dc=local
sasl_mech GSSAPI
sasl_realm AVANPOST.LOCAL
krb5_ccname /tmp/cl08.avanpost.local.tkt
filter group (objectclass=posixGroup)
map passwd uid krbPrincipalName

Шаг 10. Настроить службу "k5start".

Для обновления тикетов Kerberos в crontab требуется добавить автозапуск скрипта.

Для этого необходимо:

10.1. Создать директорию "/opt/avanpost" и скрипт "/opt/avanpost/k5start_script.sh".

sudo mkdir /opt/avanpost
sudo touch /opt/avanpost/k5start_script.sh && nano /opt/avanpost/k5start_script.sh

10.2. Поместить в "/opt/avanpost/k5start_script.sh" содержимое по шаблону:

Шаблон /opt/avanpost/k5start_script.sh
#!/bin/bash
/usr/bin/k5start -b -p /var/run/nslcd/k5start_nslcd.pid -o nslcd -g ldap -m 600 -f /etc/krb5.keytab -K 60 -u host/[FQDN РС] -k /tmp/[FQDN РС].tkt

Заменить в строке 2 [FQDN РС] на свой FQDN рабочей станции.

Пример /opt/avanpost/k5start_script.sh
#!/bin/bash
/usr/bin/k5start -b -p /var/run/nslcd/k5start_nslcd.pid -o nslcd -g ldap -m 600 -f /etc/krb5.keytab -K 60 -u host/cl08.avanpost.local -k /tmp/cl08.avanpost.local.tkt

Примечание:

Параметр "-u host/cl-rd-01.avanpost.local" - указывает на полный FQDN рабочей станции.

Параметр "-k /tmp/cl-rd-01.avanpost.local.tkt" - указывает путь к файлу, в который будет сохранен тикет, так же, к этому файлу будет обращаться NSLCD за тикетами.

10.3. Разрешить запуск скрипта "/opt/avanpost/k5start_script.sh".

sudo chmod +x /opt/avanpost/k5start_script.sh

10.4. Запустить crontab.

sudo crontab -e

10.5. Добавить настройку запуска скрипта "/opt/avanpost/k5start_script.sh" и сохранить.

@reboot /opt/avanpost/k5start_script.sh
* */12 * * * /opt/avanpost/k5start_script.sh 

10.6. Проверить настройку crontab.

sudo crontab -l
Пример корректной настройки
[root@cl-rd-01 ~]# sudo crontab -l
@reboot /opt/avanpost/k5start_script.sh
* */12 * * * /opt/avanpost/k5start_script.sh

Шаг 11. Запустить службы "sssd" и "nslcd", добавить службу "nslcd" в автозапуск.

Для этого необходимо выполнить команды:

sudo systemctl start sssd
sudo systemctl enable --now nslcd

Шаг 12. Очистить кэш.

Для этого необходимо выполнить команду:

sudo sss_cache -E

Шаг 13. Перезагрузить рабочую станцию.

Для этого необходимо выполнить команду:

sudo reboot -i

Шаг 14. Проверить работу DNS серверов.

Для этого необходимо выполнить команды по шаблону:

Шаблон команд
dig srv _ldap._tcp.[REALM ADS] | grep 389
dig srv _ldap._tcp.[REALM MS AD] | grep 389

Заменить [REALM ADS] на свой REALM домена Avanpost DS;

Заменить [REALM MS AD] на свой REALM домена MS AD;

Пример команд
dig srv _ldap._tcp.avanpost.local | grep 389
dig srv _ldap._tcp.windomen.adds | grep 389

Рисунок 100. Пример вывода команд

Шаг 15. Авторизоваться на рабочей станции под доменным и под доверенным пользователем.

Для этого необходимо выполнить команды по шаблону и ввести пароли по запросу:

Шаблон команд
su - [Username ADS]@[REALM ADS]
su - [Username MS AD]@[REALM MS AD]

Заменить [Username ADS] на свой username пользователя из домена Avanpost DS;

Заменить [REALM ADS] на свой REALM домена Avanpost DS;

Заменить [Username MS AD] на свой username пользователя из домена MS AD;

Заменить [REALM MS AD] на свой REALM домена MS AD;

Пример команд
su - lipov@AVANPOST.LOCAL  #Заходим под доменным юзером Avanpost DS
su - admin@windomen.adds   #Заходим под доменным юзером MS AD

Рисунок 101. Пример успешных авторизаций

Внимание:

Логин для авторизации на рабочей станции указывается по шаблону: username@REALM

Для авторизации под пользователями, находящимися в домене Avanpost DS, требуется вводить REALM в верхнем регистре, например: "user@AVANPOST.LOCAL".

Для авторизации на рабочей станции под пользователем из доверенного домена MS AD следует указывать REALM в том регистре, который используется для домена в MS AD. 

Рассмотрим примеры:

Рисунок 102. Пример домена в MS AD в нижнем регистре

В данном случае используется нижний регистр, значит REALM для входа следует указывать в нижнем регистре: "user@co.avanpost.com".


Рисунок 103. Пример домена в MS AD в комбинированном регистре

В данном случае используется комбинированный регистр, значит REALM для входа следует указывать также: "user@TRUST01.local".

Если авторизации под доменным пользователем, созданном в Avanpost DS, и под доверенным пользователем, созданном в MS AD, успешны, настройка доверенных отношений на рабочей станции завершена.

Обсуждение