Описание стенда
Сервер:
ОС: Windows server 2019
...
ip: 10.0.2.15
Клиент:
ОС: РЕД ОС
Настройка сервера
Установка сервиса Active Directory
...
Info |
---|
При необходимости измените имя сервера. Это необходимо сделать до выполнения его настройки. |
Имя сервера , если это необходимо. Его можно задать в окне менеджера сервера:
Добавим службу Active Dirrectory и DNS на сервер. Для этого откроем окно добавления ролей в менеджере сервера:
Image Removed
В окне для выбора сервисов установим галочки "Active Directory Domain Services" и "DNS Server":
Image Removed
...
Процедура установки состоит из следующих шагов:
- Добавление сервисов.
- Настройка домена.
- Добавление новых пользователей.
- Установка центра сертификации Active Directory.
Шаг 1. Добавление необходимых сервисов
Добавьте на сервер сервисы Active Dirrectory и DNS:
- Откройте окно для добавления ролей в менеджере сервера:
Image Added
2. В окне для выбора сервисов установите галочки Active Directory Domain Services и DNS Server:
Image Added
3. Нажмите Next.
4. Во всех остальных пунктах даём согласие на установку.
Шаг 2. Настройка домена
После завершения установки сервисов вам надо перейти к настройке домена. Для этого откройте :
- Откройте меню уведомлений и выберите пункт "Promote this server to a domain controller":
2. На
...
вкладке
...
Deployment Configuration выберите опцию для создания нового домена и укажите его название:
3. Введите пароль сброса:
4. На
...
вкладке DNC Options ничего не меняйте, т.к.
...
сервер сам является DNS сервером:
5. На следующих трёх вкладках также
...
оставьте всё как есть:
6. Перед запуском процесса установки
...
ознакомьтесь с уведомлениями об ошибках.
...
Если необходимо,
...
устраните возникшие проблемы. В нашем случае уведомления не являются критичными:
После установки Active Directory сервер перезагрузится. Если настройка прошла успешно, то нас попросят войти в аккаунт на этот раз доменного пользователя:на экране отобразится окно для входа в аккаунт доменного пользователя.
Шаг 3. Добавление новых пользователей
Чтобы добавить новых пользователей:Откроем
- Откройте утилиту управления пользователями и компьютерами домена:
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
Чтобы получить корневой центр УЦ:
- Выберите пункт меню 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 su
sudo nano /etc/sudoers
|
И добавить добавьте в него строчку User строчку user ALL=(ALL) ALL
Далее логинимся залогиньтесь под пользователем и продолжаем продолжите работу из-под него.
Далее необходимо установить установите следующие пакеты:
sudo dnf sudo dnf update
sudo dnf upgrade
|
sudo dnf sudo dnf install ccid opensc pam_pkcs11
|
gdm-plugin-smartcard kit install sudo dnf install -y sudo dnf install -y 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
...
Узнайте название вашего соединения. Они могут отличаться.
Название интерфейса, которое использует ваше соединение.
Адрес dns сервера
Отключаем Отключите соединение
sudo nmcli sudo nmcli con down down "$CON_NAME"
|
Настраиваем Настройте сетевую карту соединения - — по умолчанию $INT_NAME
sudo nmcli sudo nmcli con mod mod "$CON_NAME" connectionconnection.interface-name $INT_NAME
|
Настраиваем Настройте DNS - — вместо DNS_SERVER_IP указать IP-адрес сервера DNS. При необходимости указываем укажите адрес локального сервера DNS.
sudo nmcli sudo nmcli con mod mod "$CON_NAME" ipv4ipv4. dns dns "$DNS_SERVER_IP 10.0.2.15"
sudo nmcli con mod "$CON_NAME" ipv4.ignore-auto-dns yes
|
Включаем Включите сетевое соединение
sudo nmcli sudo nmcli con up up "$CON_NAME"
|
Вводим Вводите компьютер в домен
sudo join sudo join-to-domain.sh
|
Через графический интерфейс
Image Removed
Откройте Главное меню — Параметры — Расширенная конфигурация сети.
Image Added
Выберите своё соединение, и на вкладке Параметры IPv4 введите IP клиента (так как Вводим IP клиента (тк на сервере не установлен DHSP) и DNS.
Image Added
Image Removed
***Необходимо перезагрузить компьютер***
Image Removed
Image Removed
Image Removed
***Необходимо перезагрузить компьютер***
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
|
Проверка получения тикета осуществляется командой
Image RemovedImage Added
Удаление тикета
Проверка аутентификации под пользователем в домене без Рутокена
su ad_user@astradomain.ad
|
Логинимся Залогиньтесь локальным пользователем для дальнейшей настройки:
Настройка клиента для аутентификации в домене с помощью Рутокена
Удаляем При необходимости удалите старую базу если есть, и создаем новуюи создайте новую:
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
|
Проверяем видимость сертификатов. Должен запросить ПИН-код Рутокен Проверьте, что сертификат виден на токене и в базе данных. Система должна запросить PIN-код Рутокена и выдать сертификат с карточки с правами 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
________________________________
Делаем модуль Рутокен по умолчанию для p11-tools
sudo modutil -default "Rutoken PKCS11" -dbdir /etc/pam_pkcs11/nssdb -mechanisms 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 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 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 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 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_uidsession required pam_unix.so session optional pam_sss.so .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 = + <matemate- screensaver>screensaver
[certmap/files/ms] matchrule = <SAN:ntPrincipalName>.*@domain maprule =({subject_nt_principal.short_name})
|
Корректируем Измените конфиг Kerberos
Сам файл должен выглядеть следующим образомОбщий вид файла:
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