Описание стенда
Сервер:
ОС: Windows server 2019
...
ip: 10.0.2.15
Клиент:
ОС: РЕД ОС
Настройка сервера
Установка сервиса Active Directory
Info |
---|
При необходимости измените имя сервера. Это необходимо сделать до выполнения его настройки. |
...
- Добавление сервисов.
- Настройка домена.
- Добавление новых пользователей.
- Установка центра сертификации 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 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
...
Вводите компьютер в домен
Через графический интерфейс
Откройте Главное меню — Параметры — Расширенная конфигурация сети.
...
Удаление тикета
Проверка аутентификации под пользователем в домене без Рутокена
su ad_user@astradomain.ad
|
...
Залогиньтесь локальным пользователем для дальнейшей настройки:
Настройка клиента для аутентификации в домене с помощью Рутокена
При необходимости удалите старую базу и создайте новую:
...
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
}
|
...