Описание стенда
Сервер:
ОС: Windows server 2019
доменное имя: server,astradomain.ad
ip: 10.0.2.15
Клиент:
ОС: Red OS Муром
доменное имя: redos.astradomain.ad
Настройка сервера
Установка сервиса Active Directory
Измените имя сервера, если это необходимо. Его можно задать окне менеджера сервера:
Добавим службу Active Dirrectory и DNS на сервер. Для этого откроем окно добавления ролей в менеджере сервера:
В окне выбора сервисов укажем "Active Directory Domain Services" и "DNS Server":
Во всех остальных пунктах соглашаемся с установкой.
После завершения установки сервисов вам перейдем к настройке домена/ Для этого откройте меню уведомлений и выберете пункт "Promote this server to a domain controller":
В первой вкладке укажите опцию создания нового домена и укажите его название:
Укажите пароль сброса:
Cследующую вкладку оставляем нетронутой. Т.к. наш сервер сам является DNS сервером:
Следующие три вкладки можно оставить нетронутыми:
Читаем предупреждения перед установкой. И если необходимо, устраняем возникшие проблемы. В нашем случае предупреждения не являются критичными:
После установки Active Directory сервер перезагрузится. Если настройка прошла успешно, то нас попросят войти в аккаунт на этот раз доменного пользователя:
Добавление новых пользователей:
Откроем утилиту управления пользователями и компьютерами домена:
Для удобства можно создать отдельную дирректорию Domain Users, где будем создавать доменных пользователей:
Добавим нового пользователя user:
Аналогичным образом добавьте остальных пользователей, которые должны быть в домене.
Info | ||
---|---|---|
| ||
Для аутетнтификации пользователей через linux машины. Помимо токенов с ключами и сертификатов пользователей, вам также необходимо направить им корневой сертификат УЦ. Его можно получить здесь: |
Установка центра сертификации Active Directory:
Установите драйвера для работы с Рутокеном на сервер. Их можно получить тут. После этого можно приступить к настройке центра сертификации и выдачи сертификатов для пользователей. Это можно сделать по данной инструкции. Настройка авторизации с помощью сертификатов можно воспроизвести по этой инструкции.
Настройка клиента Linux
Настройка подключения к домену
В первую очередь настроим подключение к домену. Это можно сделать с помощью следующей последовательности команд:
Code Block | ||||
---|---|---|---|---|
| ||||
######################################################### ############## Меняем доменное имя клиента ############## ######################################################### # Меняем имя клиента в нашем домене astradomain.ad на client sudo hostnamectl set-hostname redos.astradomain.ad # После данного этапа потребуется перезагрузка ######################################################### ### Настройка подключения. Изменяем адрес DNS сервера ### ######################################################### # узнайте название вашего соединения. Они могут отличаться CON_NAME="Проводное соединение 1" # название интерфейса, которое использует ваше соединение INT_NAME="eth0" # адрес dns сервера DNS_SERVER_IP=10.0.2.37 # отключаем соединение 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. В нашем случае в качестве DNS сервера выступал сам сервер FreeIPA. Поэтому был указан его IP адрес sudo nmcli con mod "$CON_NAME" ipv4.dns "$DNS_SERVER_IP 8.8.8.8" sudo nmcli con mod "$CON_NAME" ipv4.ignore-auto-dns yes # включаем сетевое соединение sudo nmcli con up "$CON_NAME" # Проверка подключения ping server.astradomain.ad ######################################################### ############# Установка необходимых пакетов ############# ######################################################### # для пользователей систем с менеджером пакетов yum sudo yum install -y realmd # для пользователей систем с менеджером пакетов apt-get sudo apt-get install -y realmd # Узнаем какие пакеты еще необходимы для подключения к домену realm discover astradomain.ad # Список необходимых для работы пакетов будет выведен в следующем формате # required-package: pkg1 # required-package: pkg2 # required-package: pkg3 # ... # Доустановим отсутствующие пакеты # для пользователей систем с менеджером пакетов yum sudo yum install -y pkg1 pkg2 pkg3 ... # для пользователей систем с менеджером пакетов apt-get sudo apt-get install -y pkg1 pkg2 pkg3 ... ######################################################### ################# Подключение к домену ################## ######################################################### # Подключимcя к домену # Пользователь user должен обладать правами подключения устройств в домен. sudo realm join astradomain.ad --user=user # Установим пакет krb5-user # для пользователей систем с менеджером пакетов yum sudo yum install -y krb5-pkinit # для пользователей систем с менеджером пакетов apt-get sudo apt-get install -y krb5-user # Если в домене есть пользователь user, к которому можно подключиться с помощью пароля, то можно осуществить проверку настройки получив тикет для него kinit user@astradomain.ad # Проверка получения тикета klist # Удаляем тикет kdestroy |
Настройка автоматического создания домашней директории
Когда доменный пользователь аутентифицируется в системе необходимо чтобы для него автоматически создавался домашний каталог.
Для систем основанных на Debian
Это можно сделать в настройках pam. Для этого в файле /etc/pam.d/common-session активируем модуль pam_mkhomedir.so, после pam_sss.so. Содержимое файла будет будет выглядеть следующем образом:
Code Block | ||||
---|---|---|---|---|
| ||||
... session required pam_unix.so session optional pam_sss.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 ... |
Для систем основанных на Red Hat
Это можно сделать в настройках pam. Для этого в файле /etc/pam.d/system-auth активируем модуль pam_mkhomedir.so, после pam_sss.so. Содержимое файла будет будет выглядеть следующем образом:
Code Block | ||||
---|---|---|---|---|
| ||||
... session required pam_unix.so session optional pam_sss.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 ... |
Проверка аутентификации под пользователем в домене без Рутокена:
Если в домене есть пользователь user, под которым можно аутентифицироваться без смарт-карты, то можно проверить предыдущую надстройку аутентифицируясь под ним. Для начала можно попробовать аутнетифицироваться через командную строку:
Code Block | ||||
---|---|---|---|---|
| ||||
su user@astradomain.ad |
Настройка клиента для аутентфиикации в домене с помощью Рутокена
Упрощенная настройка
Для упрощенной настройки можно воспользоваться утилитой для работы с токенами. Описание упрощенной настройки можно прочитать тут (TODO).
Ручная настройка
Установка необхоимых пакетов для работу:
Code Block | ||||
---|---|---|---|---|
| ||||
# для пользователей систем с менеджером пакетов yum sudo yum install -y nss-tools opensc # для пользователей систем с менеджером пакетов apt-get sudo apt-get install -y libnss3-tools opensc |
Для ручной настройки также потребуется установить библиотеку librtpkcs11ecp. Ее можно получить тут. Установим данную библиотеку.
Code Block | ||||
---|---|---|---|---|
| ||||
# Установка пакета для систем основанных на red hat sudo rpm -i librtpkcs11ecp-2.0.5.1-1.x86_64.rpm # Установка пакета для Debian систем sudo dpkg -i librtpkcs11ecp-2.0.5.1-1.x86_64.deb |
Добавление корневого сертификата и сертификатов токена в БД
Инициализируем БД:
Code Block | ||||
---|---|---|---|---|
| ||||
mkdir /etc/pki/nssdb sudo certutil -N -d /etc/pki/nssdb --empty-password |
Добавление корневого сертификата в БД:
Code Block | ||||
---|---|---|---|---|
| ||||
sudo certutil -d /etc/pki/nssdb -A -n 'CA-ROOT-CERT' -t CT,CT,CT -a -i /path/to/ca_cert.pem |
Добавление сертификатов с Рутокена:
Code Block | ||||
---|---|---|---|---|
| ||||
sudo modutil -dbdir /etc/pki/nssdb -add "Rutoken PKCS11" -libfile librtpkcs11ecp.so |
Проверку того, что сертификаты добавились в БД можно осуществить с помощью команды
Code Block | ||||
---|---|---|---|---|
| ||||
# перезапустите сервис pcscd на случай, если он выключен sudo systemctl restart pcscd # проверяем наличие сертификатов в БД sudo certutil -L -d /etc/pki/nssdb -h all |
Настройка SSSD
Для того, чтобы аутентификация корректно работала на лок скрине. В настройках sssd нужно указать название сервиса, использующегося при аутентфиикации через лок скрин, чтобы сделать его доверенным. У каждой графической оболочки свое название данного сервиса. Узнать название вашей графической оболочки можно с помощью команды:
Code Block | ||||
---|---|---|---|---|
| ||||
echo $XDG_CURRENT_DESKTOP |
Вот список соответствий названий графических оболочек и сервиса, используемого лок скрином. Данный список не является полным
MATE → mate-screensaver
X-Cinnamon → cinnamon-screensaver
fly → <Отсутствует>
KDE → kde
Сконфигурируем SSSD. Для этого отредактируем файл /etc/sssd/sssd,conf. Он должен выглядеть примерно следующим образом:
Code Block | ||||
---|---|---|---|---|
| ||||
[sssd] domains = astradomain.ad config_file_version = 2 services = nss, pam [domain/astradomain.ad] ad_domain = astradomain.ad krb5_realm = ASTRADOMAIN.AD realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad # Если хотим подключаться к пользователям домена не вводя имя домена use_fully_qualified_names = False # Для активации входа по смарт-картам [pam] pam_cert_auth = True # Указываем название сервиса, используемого лок скрином. Если сервис отсуствует, то данную строку не используют pam_p11_allowed_services = +<service_name> |
Перезапустим сервис SSSD
Code Block | ||||
---|---|---|---|---|
| ||||
sudo systemctl restart sssd |
Настройка Kerberos
Скопируем корневой сертификат в директорию /etc/pki/tls/certs/.
Code Block | ||||
---|---|---|---|---|
| ||||
sudo cp /path/to/ca_cert.pem /etc/pki/tls/certs/ |
Для настройки Kerberos изменим содержимое файла /etc/krb5.conf. Секция [libdefaults] должна содержать следующее:
Code Block | ||||
---|---|---|---|---|
| ||||
... [libdefaults] ... # Путь до дерриктории с корневым сертификатов с постфиксом .pem pkinit_anchors = DIR:/etc/pki/tls/certs/ # Адресс KDC pkinit_kdc_hostname = server.astradomain.ad # Пропускаем проверку EKU сертификата pkinit_eku_checking = kpServerAuth default_ccache_name = KEYRING:persistent:%{uid} # Имя домена по умолчанию default_realm = ASTRADOMAIN.AD # Путь д сертификатов и ключей pkinit_identities = PKCS11:librtpkcs11ecp.so # Для совместимости с AD canonicalize = True ... |
Проверка настройки с помощью получения тикета для пользователя user, который аутентифицируется по Рутокену
Code Block | ||||
---|---|---|---|---|
| ||||
# Получения тикета. Должно быть предложено ввести ПИН код токена kinit user # Проверка получения тикета klist # Сброс тикета kdestroy |
Попытка аутентфиикация по смарт-карте
Попробуйте аутентифицироваться под доменным пользователем user по смарт-карте в системе:
Code Block | ||||
---|---|---|---|---|
| ||||
su user |
Если аутентификаия не прошла успешно, то попробуйте изменить конфигурацию pam модулей, иначе можете пропустить данную часть
Настройка pam модулей.
Для аутентификации пользователя в системе с помощью смарт-карты необходимо изменить содержимое pam модулей
Для систем основанных на Debian
Файл /etc/pam.d/common-auth должен содержать следующие строки:
Code Block | ||||
---|---|---|---|---|
| ||||
... auth [success=2 default=ignore] pam_sss.so forward_pass auth [success=1 default=ignore] pam_unix.so try_first_pass nullok_secure ... |
Для систем основанных на Red Hat
Файл /etc/pam.d/system-auth должен содержать следующие строки:
Code Block | ||||
---|---|---|---|---|
| ||||
... auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass ... |
Аутентфикации через гритер
Проверьте аутентфикацию через гритер через лок скрин