После выполнения всех действий по инструкции "1.3.16. Настройка доверенных отношений Avanpost DS с MS Active Directory" можно переходить к настройке доверенных отношений на рабочих станциях.
Для настройки рабочих станций под управлением ОС Astra в домене Avanpost DS для работы с MS AD требуется подключиться к ним по SSH и выполнить шаги:
Шаг 1. Установить необходимые пакеты.
Если установлен графический интерфейс FLY, устанавливается пакет "astra-ad-sssd-client".
Если графический интерфейс НЕ установлен, то устанавливается пакет "sssd".
Для этого необходимо выполнить команды:
sudo apt update sudo apt install astra-ad-sssd-client sudo apt install krb5-kinit nslcd nslcd-utils libnss-ldapd libpam-ldapd libsasl2-modules-gssapi-heimdal
Внимание:
При установке пакета "nslcd" будет предложено установить значения. На данном шаге можно нажать "Enter", оставив значения по умолчанию.
Шаг 2. Добавить репозитории яндекс, отключить стандартные репозитории и установить пакет "kstart".
Для этого необходимо:
2.1. Установить пакеты основных центров сертификации из стандартных репозиториев Astra Linux.
sudo apt install ca-certificates
2.2. Создать новый файл "/etc/apt/sources.list.d/debian.list" и открыть его для редактирования.
sudo nano /etc/apt/sources.list.d/debian.list
2.3. Добавить в файл "/etc/apt/sources.list.d/debian.list" две записи о новых репозиториях.
deb https://mirror.yandex.ru/debian/ bullseye main contrib non-free deb-src https://mirror.yandex.ru/debian/ bullseye main contrib non-free
2.4. Добавить ключи репозиториев.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 605C66F00D6C9793 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6ED0E7B82643E131 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9
2.5. Открыть для редактирования файл "/etc/apt/sources.list".
sudo nano /etc/apt/sources.list
2.6. Закомментировать все репозитории в файле "/etc/apt/sources.list" (как минимум на время настройки).
#deb cdrom:[OS Astra Linux 1.7.5 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free #deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free #deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
2.7. Очистить сохраненные списки пакетов, содержащие информацию из ранее использовавшихся репозиториев.
sudo rm -rf /var/lib/apt/lists/* sudo apt update
2.8. Установить пакет "kstart".
sudo apt install kstart
Шаг 3. Ввести рабочую станцию в домен Avanpost DS.
Для этого необходимо выполнить действия согласно инструкции "1.3.7. Введение в домен рабочих станций".
Рисунок 99. Пример успешного введения станции в домен
Шаг 4. Остановить службы "sssd" и "nslcd".
Для этого необходимо выполнить команду:
sudo systemctl stop sssd nslcd
Шаг 5. Настроить службу "nslcd".
Для этого необходимо:
5.1. Сделать бэкап конфигурационных файлов службы "nslcd".
mv /etc/systemd/system/nslcd.service /etc/systemd/system/nslcd.service_BAK mv /etc/init.d/nslcd /etc/init.d/nslcd_old
5.2. Создать новый конфигурационный файл "/etc/systemd/system/nslcd.service".
nano /etc/systemd/system/nslcd.service
Примечание:
Для создания конфигурационного файла можно также воспользоваться командой:
sudo systemctl edit --full nslcd
5.3. Поместить в файл "/etc/systemd/system/nslcd.service" содержимое:
[Unit] Documentation=man:systemd-sysv-generator(8) SourcePath=/etc/init.d/nslcd Description=LSB: LDAP connection daemon Before=multi-user.target Before=multi-user.target Before=multi-user.target Before=graphical.target Before=mail-transport-agent.target Before=x-display-manager.target Before=am-utils.service Before=apache2.service Before=atd.service Before=autofs.service Before=citadel.service Before=courier-ldap.service Before=courier-mta.service Before=courier-mta-ssl.service Before=courier-pop.service Before=courier-pop-ssl.service Before=cron.service Before=cyrus-imapd.service Before=dovecot.service Before=exim4.service Before=gdm3.service Before=kdm.service Before=kolab-cyrus-common.service Before=mail-transport-agent.service Before=masqmail.service Before=nullmailer.service Before=sendmail.service Before=slim.service Before=wdm.service Before=xdm.service After=remote-fs.target After=time-sync.target After=nss-lookup.target After=network-online.target After=slapd.service After=krb5-kdc.service After=heimdal-kdc.service After=heimdal-kcm.service After=shishi-kdc.service Wants=network-online.target [Service] Type=forking Restart=always RestartSec=3 TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes SuccessExitStatus=5 6 ExecStart=/etc/init.d/nslcd start ExecStop=/etc/init.d/nslcd stop [Install] WantedBy=multi-user.target
5.4. Создать новый конфигурационный файл "/etc/init.d/nslcd".
nano /etc/init.d/nslcd
5.5. Поместить в файл "/etc/init.d/nslcd" содержимое:
#! /bin/sh # /etc/init.d/nslcd script for starting and stopping nslcd # Copyright (C) 2006 West Consulting # Copyright (C) 2006, 2008, 2009, 2010, 2011, 2012, 2013 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA ### BEGIN INIT INFO # Provides: nslcd # Required-Start: $remote_fs $syslog $time # Required-Stop: $remote_fs $syslog # Should-Start: $named $network slapd krb5-kdc heimdal-kdc heimdal-kcm shishi-kdc # Should-Stop: $network # X-Start-Before: $mail-transport-agent $x-display-manager am-utils apache2 atd autofs citadel courier-ldap courier-mta courier-mta-ssl courier-pop courier-pop-ssl cron cyrus-imapd dovecot exim4 gdm3 kdm kolab-cyrus-common mail-transport-agent masqmail nullmailer sendmail slim wdm xdm # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: LDAP connection daemon # Description: nslcd is a LDAP connection daemon that is used to # do LDAP queries for the NSS and PAM modules. ### END INIT INFO PATH=/bin:/usr/bin:/sbin:/usr/sbin NSLCD_NAME=nslcd NSLCD_BIN=/usr/sbin/$NSLCD_NAME NSLCD_DESC="LDAP connection daemon" NSLCD_CFG=/etc/nslcd.conf NSLCD_STATEDIR=/run/nslcd NSLCD_PIDFILE=$NSLCD_STATEDIR/nslcd.pid [ -x "$NSLCD_BIN" ] || exit 0 [ -f "$NSLCD_CFG" ] || exit 0 . /lib/lsb/init-functions # default options for k5start K5START_BIN=/usr/bin/k5start K5START_DESC="Keep alive Kerberos ticket" K5START_START="" K5START_PIDFILE=$NSLCD_STATEDIR/k5start_nslcd.pid K5START_USER=$(sed -n 's/^uid[[:space:]]*\([^[:space:]]*\)[[:space:]]*$/\1/ip' $NSLCD_CFG) K5START_GROUP=$(sed -n 's/^gid[[:space:]]*\([^[:space:]]*\)[[:space:]]*$/\1/ip' $NSLCD_CFG) K5START_MODE=600 K5START_KEYTAB=/etc/krb5.keytab K5START_CCREFRESH=60 K5START_PRINCIPAL="host/$(hostname -f)" K5START_CCFILE=$(sed -n 's/^krb5_ccname[[:space:]]*\(FILE:\)\?\([^:[:space:]]*\)[[:space:]]*$/\2/ip' $NSLCD_CFG) # check if we should use k5start by default (sasl_mech should be GSSAPI and # krb5_ccname should be found) if [ -x "$K5START_BIN" ] && \ grep -q '^sasl_mech[[:space:]]*GSSAPI[[:space:]]*$' $NSLCD_CFG && \ [ -n "$K5START_CCFILE" ] then K5START_START="yes" fi # read defaults [ -f /etc/default/$NSLCD_NAME ] && . /etc/default/$NSLCD_NAME k5start_start() { if [ "$K5START_START" = "yes" ] then log_daemon_msg "Starting $K5START_DESC" "k5start" start-stop-daemon --start \ --pidfile $K5START_PIDFILE \ --exec $K5START_BIN -- \ -b -p $K5START_PIDFILE \ -o $K5START_USER \ -g $K5START_GROUP \ -m $K5START_MODE \ -f $K5START_KEYTAB \ -K $K5START_CCREFRESH \ -u $K5START_PRINCIPAL \ -k $K5START_CCFILE log_end_msg $? fi } k5start_stop() { if [ "$K5START_START" = "yes" ] then log_daemon_msg "Stopping $K5START_DESC" "k5start" start-stop-daemon --stop --oknodo --retry 10 --pidfile $K5START_PIDFILE log_end_msg $? # remove any left behind files [ -n "$K5START_PIDFILE" ] && rm -f $K5START_PIDFILE [ -n "$K5START_CCFILE" ] && rm -f $K5START_CCFILE fi } k5start_status() { if [ "$K5START_START" = "yes" ] then status_of_proc -p "$K5START_PIDFILE" "$K5START_BIN" "k5start" fi } case "$1" in start) # set up state directory [ -d "$NSLCD_STATEDIR" ] || ( mkdir -m 755 "$NSLCD_STATEDIR" ; \ chown nslcd:nslcd "$NSLCD_STATEDIR" ) # start k5start if needed k5start_start # start nslcd log_daemon_msg "Starting $NSLCD_DESC" "$NSLCD_NAME" start-stop-daemon --start --oknodo \ --pidfile $NSLCD_PIDFILE \ --startas $NSLCD_BIN log_end_msg $? ;; stop) # stop nslcd log_daemon_msg "Stopping $NSLCD_DESC" "$NSLCD_NAME" start-stop-daemon --stop --oknodo --retry 10 \ --pidfile $NSLCD_PIDFILE \ --name "$NSLCD_NAME" log_end_msg $? [ -n "$NSLCD_PIDFILE" ] && rm -f $NSLCD_PIDFILE # stop k5start k5start_stop ;; restart|force-reload) [ -d "$NSLCD_STATEDIR" ] || ( mkdir -m 755 "$NSLCD_STATEDIR" ; \ chown nslcd:nslcd "$NSLCD_STATEDIR" ) log_daemon_msg "Restarting $NSLCD_DESC" "$NSLCD_NAME" start-stop-daemon --stop --quiet --retry 10 \ --pidfile $NSLCD_PIDFILE \ --name "$NSLCD_NAME" [ -n "$NSLCD_PIDFILE" ] && rm -f $NSLCD_PIDFILE k5start_stop k5start_start start-stop-daemon --start \ --pidfile $NSLCD_PIDFILE \ --startas $NSLCD_BIN log_end_msg $? ;; status) if [ -f "$NSLCD_PIDFILE" ] then if $NSLCD_BIN --check then log_success_msg "$NSLCD_NAME running (pid `cat $NSLCD_PIDFILE`)" exit 0 else log_success_msg "$NSLCD_NAME stopped" exit 1 fi else log_success_msg "$NSLCD_NAME stopped" exit 3 fi k5start_status ;; *) log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}" exit 1 ;; esac
5.6. Разрешить исполнение новых файлов.
sudo chmod +x /etc/init.d/nslcd && sudo chmod +x /etc/systemd/system/nslcd.service
5.7. Перезапустить демона.
sudo systemctl daemon-reload
5.8. Открыть для редактирования конфигурационный файл "/etc/nslcd.conf".
nano /etc/nslcd.conf
5.9. Изменить параметры в файле "/etc/nslcd.conf" по шаблону:
uid nslcd gid nslcd uri ldap://[FQDN КД Avanpost DS] # FQDN контроллера домена 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 рабочей станции.
uid nslcd gid nslcd uri ldap://192.168.1.11:389/ base dc=avanpost,dc=local sasl_mech GSSAPI sasl_realm AVANPOST.LOCAL krb5_ccname /tmp/cl09.avanpost.local.tkt filter group (objectclass=posixGroup) map passwd uid krbPrincipalName
5.10. Открыть для редактирования конфигурационный файл "/etc/default/nslcd".
nano /etc/default/nslcd
5.11. Изменить параметры в файле "/etc/default/nslcd" по шаблону:
K5START_START="yes" K5START_KEYTAB=[ПУТЬ до keytab] # Путь до файла keytab, обычно /etc/krb5.keytab K5START_PRINCIPAL="[FQDN РС]" # FQDN рабочей станции
Заменить в строке 2 [ПУТЬ до keytab] на путь до файла keytab, обычно "/etc/krb5.keytab"
Заменить в строке 3 [FQDN РС] на свой FQDN рабочей станции.
K5START_START="yes" K5START_KEYTAB=/etc/krb5.keytab K5START_PRINCIPAL="host/cl09.avanpost.local"
Шаг 6. Настроить конфигурационный файл "/etc/nsswitch.conf".
Для этого необходимо:
6.1. Открыть для редактирования конфигурационный файл "/etc/nsswitch.conf".
nano /etc/nsswitch.conf
6.2. Указать параметр "ldap" в конфигурационном файле "/etc/nsswitch.conf" по примеру:
passwd: files sss ldap group: files sss ldap shadow: files sss ldap gshadow: files ldap hosts: files mdns4_minimal [NOTFOUND=return] dns ldap networks: files ldap protocols: db files ldap services: db files sss ldap ethers: db files ldap rpc: db files ldap netgroup: nis sss ldap automount: sss
Шаг 7. Настроить службу "sssd".
Для этого необходимо:
7.1. Открыть для редактирования конфигурационный файл "/etc/sssd/sssd.conf".
nano /etc/sssd/sssd.conf
7.2. Изменить значение параметра "id_provider" в блоке "domain/ВАШ.ДОМЕН" на "proxy".
id_provider = proxy
7.3. Добавить строки в блок "domain/ВАШ.ДОМЕН":
proxy_lib_name = ldap proxy_pam_target = sssdproxyldap enumerate = true
[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/cl09.avanpost.local@AVANPOST.LOCAL #ldap_default_bind_dn = cn=cl09,ou=hosts,dc=avanpost,dc=local #ldap_default_authtok_type = obfuscated_password #ldap_default_authtok = AAAQAKTOWDWVgMb1NyDGgWcpxKui7xQ5LF96VUN/kEPewwUUKX3I9h3heGmghngF1hMXUDXjyDJa3xj7MZ/MC0rDQq4AAQID krb5_realm = AVANPOST.LOCAL krb5_canonicalize = False krb5_server = _srv_ krb5_kpasswd = _srv_
Шаг 8. Очистить кэш.
Для этого необходимо выполнить команду:
sss_cache -E
Шаг 9. Запустить службы "sssd" и "nslcd", добавить службу "nslcd" в автозапуск.
Для этого необходимо выполнить команды:
sudo systemctl start sssd sudo systemctl enable --now nslcd
Шаг 10. Проверить работу 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. Пример вывода команд
Шаг 11. Авторизоваться на рабочей станции под доменным и под доверенным пользователем.
Для этого необходимо выполнить команды по шаблону и ввести пароли по запросу:
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, успешны, настройка доверенных отношений на рабочей станции завершена.