Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Описание стенда

Сервер:

ОС: Windows server 2019

...

ip: 10.0.2.15

Клиент:

ОС: РЕД ОС

Настройка сервера

Установка сервиса Active Directory

Info
При необходимости измените имя сервера. Это необходимо сделать до выполнения его настройки.

...

  1. Добавление сервисов.
  2. Настройка домена.
  3. Добавление новых пользователей.
  4. Установка центра сертификации Active Directory.

Шаг 1. Добавление необходимых сервисов

Добавьте на сервер сервисы Active Dirrectory и DNS:

...

4. Во всех остальных пунктах даём согласие на установку.

Шаг 2. Настройка домена

После завершения установки сервисов вам надо перейти к настройке домена:

...

После установки Active Directory сервер перезагрузится.  Если настройка прошла успешно, то на экране отобразится окно для входа в аккаунт доменного пользователя. 

Шаг 3. Добавление новых пользователей

Чтобы добавить новых пользователей:

...

4. Аналогичным образом добавьте остальных пользователей, которые должны быть в домене.

Шаг 4. Установка центра сертификации Active Directory

Info
Перед процедурой установите драйверы для работы с Рутокеном на сервер, ссылка на актуальную версию: https://www.rutoken.ru/support/download/windows/

...

4. Нажмите Copy to File и сохраните сертификат в формате BASE64.

Настройка клиента РЕД ОС

Добавление пользователя в sudo

Отредактируйте файл /etc/sudoers

...

И добавьте в него строчку User user ALL=(ALL) ALL


Далее залогиньтесь под пользователем и продолжите работу из-под него.

...

Далее установите следующие пакеты:

sudo dnf update

sudo dnf upgrade

sudo dnf

sudo dnf install ccid opensc pam_pkcs11

gdm-plugin-smartcard

p11-

kit install

kit 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 и установите:

sudo rpm -i dnf install /Путь_до_файла/librtpkcs11ecp-2X.6X.1X.0X-1X.x86_64.rpm


Настройка DNS

Через консоль

Измените имя клиента в нашем домене astradomain.ad на client

...

Вводите компьютер в домен

sudo join-to-domain.sh

Через графический интерфейс


Откройте Главное меню Параметры Расширенная конфигурация сети.

...

klist


Удаление тикета

kdestroy

Проверка аутентификации под пользователем в домене без Рутокена

su ad_user@astradomain.ad

...

Залогиньтесь локальным пользователем для дальнейшей настройки:

su user


Настройка клиента для аутентификации в домене с помощью Рутокена

При необходимости удалите старую базу и создайте новую:

...

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

Для того, чтобы аутентификация корректно работала на лок скрине. В настройках sssd нужно указать название сервиса, использующегося при аутентификации через лок скрин, чтобы сделать его доверенным. У каждой графической оболочки свое название данного сервиса. Узнать название вашей графической оболочки можно с помощью команды:

Название графической оболочки

echo $XDG_CURRENT_DESKTOP

Вот список соответствий названий графических оболочек и сервиса, используемого лок скрином. Данный список не является полным.

MATE → mate-screensaver
X-Cinnamon → cinnamon-screensaver
fly → <Отсутствует>
KDE → kde
GNOME → xdg-screensaver


Сконфигурируем SSSD. Для этого отредактируем файл /etc/sssd/sssd.conf.

sudo nano /etc/sssd/sssd.conf

Общий вид /etc/sssd/sssd.conf:

[sssd]
domains = astradomain.ad
config_file_version = 2
services = nss, pam

[domain/astradomain.ad]
ad_domain = astradomain.ad
ad_server = WIN-HAFG0T1O90S.astradomain.ad
krb5_realm = ASTRADOMAIN.AD
case_sensitive = Preserving
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

# Включает/Отключает режим полных имён пользователей при входе
use_fully_qualified_names = False

# Определение домашнего каталога для доменных пользователей
fallback_homedir = /home/%u@%d

# Параметр access_provider = simple Определяет список доступа на основе имен пользователей или групп.
#access_provider = simple
#simple_allow_users = user1@example.com, user2@example.com
#simple_allow_groups = group@example.com

# Включает/Отключает перечисление всех записей домена, операция(id или getent) может занимать длительное время при enumerate = true в больших инфраструктурах
enumerate = false

# Параметр ignore_group_members может ускорить авторизацию в домене если домен имеет большое количество пользователей, групп и вложенных OU
# Если установлено значение TRUE, то атрибут членства в группе не запрашивается с сервера ldap и не обрабатывается вызовов поиска группы.
# ignore_group_members = True

# Поиск ссылок может привести к снижению производительности в средах, которые их интенсивно используют.
# true - не рекомендуется для больших инфраструктур. Отключаем этот поиск.
#ldap_referrals = false

# Включает/Отключает динамические обновления DNS, если в статусе sssd ошибка "TSIG error with server: tsig verify failure", то установите dyndns_update = false
#dyndns_update = true
#dyndns_refresh_interval = 43200
#dyndns_update_ptr = true
#dyndns_ttl = 3600

#[nss]
# Сколько секунд nss_sss должен кэшировать перечисления (запросы информации обо всех пользователях) Default: 120
#entry_cache_timeout = 15
# Задает время в секундах, в течение которого список поддоменов будет считаться действительным. Default: 60
#get_domains_timeout = 10

[pam]
pam_cert_auth = True
debug_level = 10
pam_cert_db_path = /etc/pki/ca-trust/source/anchors/ca_cert.cer
pam_p11_allowed_services = +<matemate-screensaver>screensaver

[certmap/files/ms]
matchrule = <SAN:ntPrincipalName>.*@domain
maprule =({subject_nt_principal.short_name})

...

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 WIN-HAFG0T1O90S.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
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
preferred_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 WIN-HAFG0T1O90S.astradomain.ad # Primary Domain Controller


    admin_server = server WIN-HAFG0T1O90S.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

        }

...