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 на сервер. Для этого откроем окно :

  1. Откройте окно для добавления ролей в менеджере сервера:


2. В окне для выбора сервисов

...

установите галочки

...

Active Directory Domain Services

...

и

...

DNS Server

...

:

3. Нажмите Next.

4. Во всех остальных пунктах

...

даём согласие на установку.

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

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

  1. Откройте меню уведомлений и выберите пункт "Promote this server to a domain controller":

2. На

...

вкладке

...

Deployment Configuration выберите опцию для создания нового домена и укажите его название:


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


4. На

...

вкладке DNC Options ничего не меняйте, т.к.

...

сервер сам является DNS сервером:

 


5. На следующих трёх вкладках также

...

оставьте всё как есть:


6. Перед запуском процесса установки

...

ознакомьтесь с уведомлениями об ошибках.

...

Если необходимо,

...

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


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

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

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

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


2. Для удобства

...

создайте отдельную

...

директорию Domain Users,

...

в которой будете создавать доменных пользователей:

Добавим

3. Добавьте нового пользователя

...

User:


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

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

...

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

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

Настройку авторизации с помощью сертификатов можно воспроизвести реализовать по этой инструкции.

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

  • токен с ключами и сертификатов

...

  • ;
  • корневой сертификат УЦ (его необходимо отправить пользователям).

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

Image Removed

Image Removed

Image Removed

Image Removed

Чтобы получить корневой центр УЦ:

  1. Выберите пункт меню Tools и подпункт Certification Authority.

Image Added

2. Два раза щёлкните по строке с сертификатом.

Image Added

3. В окне сертификата на вкладке Certification Path щёлкните по имени сертификата и нажмите View Certificate.

Image Added

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

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

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

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

Необходимо отредактировать Отредактируйте файл /etc/sudoers

su 

sudo nano /etc/sudoers


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


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

su user


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

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 librtpkcs11ecp-2X.6X.1X.0X-1X.x86_64.rpm


Настройка 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

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

Image Removed


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

Image Added


Выберите своё соединение, и на вкладке Параметры IPv4 введите Вводим IP клиента (тк так как на сервере не установлен DHSP) и DNS.

Image Removed

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

Image Removed

Image Removed

Image Removed

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

Image Added


Warning
Обязательно перезагрузите компьютер.


После перезагрузки, откройте Главное меню  Системные Ввод ПК в домен.

Image Added


Выберите параметр «Домен Windows/Samba»

Image Added


Далее необходимо ввести параметры для ввода компьютера в домен.

Image Added

Warning
Обязательно перезагрузите компьютер.


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

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

sudo rm -fr


Установите корневой сертификат в /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 -

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/

Следующая команда используется из директории, в которой находится корневой сертификат

A -n 'AD-ROOT' -t CT,CT,CT -a -i /etc/pki/ca-trust/source/anchors/ca_cert.cer


Проверьте, что сертификат виден на токене и в базе данных. Система должна запросить PIN-код Рутокена и выдать сертификат с карточки с правами u,u,u и корневого сервера.

sudo certutil -L

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 и корневой сервера

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

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

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

mechanisms RSA:DSA:RC4:DES


Отредактируйте pam_pkcs11

sudo nano /etc/pam_pkcs11/pam_pkcs11.conf

pam_pkcs11

________________________________

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

= true;

    ca_dir = /etc/pam_pkcs11/cacerts;

   

ca

crl_dir = /etc/pam_pkcs11/

cacerts

crls;

   

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

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       

Как должен выглядеть /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.soauth        [success=done authinfo_unavail=ignore ignore=ignore default=die

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_

cert

users_

auth

only

auth       

password    sufficient                                   pam_unix.so sha512 shadow nullok try_first_pass

auth        [default=1 ignore=ignore success=ok]         pam_usertype.so isregular

auth       

use_authtok

password    sufficient                                   pam_sss.so

forward

use_

passauth        required                                    

authtok

password    required                                     pam_deny.so

account    


session     optional                                     pam_keyinit.so revoke

session     required                                     pam_

unix

limits.so

account     sufficient                                  

-session    optional                                     pam_

localuser

systemd.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

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

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

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

echo $XDG_CURRENT_DESKTOP

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

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


Сконфигурируем SSSD. Для этого отредактируем файл /etc/sssd/sssd.conf.Настройка 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

mate-

screensaver>

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

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

        }

...

        }

Warning
Обязательно перезагрузите компьютер.



Проверьте аутентификацию после перезагрузки.

Image Added