Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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

Сервер:

ОС: Windows server 2019

доменное имя: server.astradomain.ad

ip: 10.0.2.15

Клиент:

ОС: РЕД ОС

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

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

Измените имя сервера, если это необходимо. Его можно задать в окне менеджера сервера:

Добавим службу Active Dirrectory и DNS на сервер. Для этого откроем окно добавления ролей в менеджере сервера:


В окне для выбора сервисов установим галочки "Active Directory Domain Services" и "DNS Server":

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

После завершения установки сервисов вам надо перейти к настройке домена. Для этого откройте меню уведомлений и выберите пункт "Promote this server to a domain controller":

На первой вкладке укажите опцию для создания нового домена и укажите его название:


Введите пароль сброса:


На следующей вкладке оставляем все как есть., т.к. наш сервер сам является DNS сервером:

 


На следующих трёх вкладках также оставляем все как есть:


Перед запуском процесса установки ознакомимся с уведомлениями об ошибках.. И если необходимо, устраняем возникшие проблемы. В нашем случае уведомления не являются критичными:


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

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

Откроем утилиту управления пользователями и компьютерами домена:


Для удобства можно создать отдельную дирректорию Domain Users, где будем создавать доменных пользователей:

Добавим нового пользователя user:


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

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

Установите драйверы для работы с Рутокеном на сервер. Их можно получить тут. После этого можно приступить к настройке центра сертификации и выдачи сертификатов для пользователей. Это можно сделать по данной инструкции. Настройку авторизации с помощью сертификатов можно воспроизвести по этой инструкции.


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

Его можно получить здесь:

Сохранить необходимо в формате BASE64.

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

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

Необходимо отредактировать файл /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 и установите:

sudo rpm -i librtpkcs11ecp-2.6.1.0-1.x86_64.rpm


Настройка DNS

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

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

sudo hostnamectl set-hostname client.astradomain.ad


Узнайте название вашего соединения. Они могут отличаться.

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

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


Вводим IP клиента (тк на сервере не установлен DHSP) и DNS


***Необходимо перезагрузить компьютер***

***Необходимо перезагрузить компьютер***


Узнаем какие пакеты еще необходимы для подключения к домену

realm discover astradomain.ad


Список необходимых для работы пакетов будет выведен в следующем формате

required-package: pkg1

required-package: pkg2

required-package: pkg3


Доустановим отсутствующие пакеты

sudo dnf install -y pkg1 pkg2 pkg3 ...


Если в домене есть пользователь 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
SSL,S/MIME,JAR/XPI

Enter Password or Pin for "Rutoken ECP <no label>":
AD-ROOT CT,C,C
Rutoken ECP <no label>:te-Rutoken-0329dc84-5937-4b1e-adaf-5cbfe977cda0_E u,u,u


Добавляем модуль Рутокен к 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]
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 = +<mate-screensaver>

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


Корректируем конфиг 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
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.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

        }

***Необходимо перезагрузить компьютер***











  • No labels