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

Compare with Current View Page History

« Previous Version 9 Next »

Данный способ интеграции основан на запуске отдельного сервиса, который занимается маршрутизацией запросом от WNAM ко внутренним компонентам или доменам. При его использовании вам не понадобится настраивать nginx, samba или другие инструменты. После установки работой с конфигурационными файлами займется сам сервис. Он написан на python3 и требует для своей работы ряда библиотек (преимущественно поддержки протокола LDAP). Его работа в режиме веб-сервиса обеспечивается инструментарием flask. 

Внимание: вы можете настроить взаимодействие сервиса авторизации WNAM с доменом как на том же сервере, где работает ПО WNAM, как и на любом другом соседнем Linux-сервере. 

Схема взаимодействия компонентов представлена на рисунке:




Для сервера, не имеющего выхода в Интернет, существует вариант оффлайн-инсталляции, при котором все *.deb и python-пакеты ставятся из заранее подготовленного архива.


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

apt install python3-flask python3-dnspython python3-ldap3 python3-pyasn1 python3-pyasn1-modules python3-six python3-gssapi krb5-user libkrb5-dev python3-pycryptodome winbind python3-apscheduler sudo libcurl4-nss-dev python3-cryptography libgpgme-dev python3-apt python3-pip

Затем запросите и получите у нашей службы техподдержки интеграционный модуль, он поставляется в виде архива. Распакуйте:

mkdir -p /home/wnam/adctool/logs
tar zxvf adctool.tgz -C /home/wnam
chown -R wnam:wnam /home/wnam/adctool

cd /home/wnam/adctool
pip3 install -r requirements.txt

Задайте права на нужные файлы:

cat > /etc/sudoers.d/wnam << SUDO
wnam ALL = NOPASSWD: /usr/bin/net
wnam ALL = NOPASSWD: /usr/bin/wbinfo
wnam ALL = NOPASSWD: /usr/bin/systemctl
SUDO

chmod +x /home/wnam/adctool/*.py

chmod a+s /usr/bin/wbinfo 

chmod a+s /usr/bin/ntlm_auth

chown wnam /etc/samba/smb.conf

Создайте systemd-скрипт для нового сервиса:

cat > /etc/systemd/system/adctool.service << EOF
[Unit]
Description="WNAM Active Directory tools service"
After=network.target

[Service]
WorkingDirectory=/home/wnam/adctool
ExecStart=/usr/bin/flask run
Restart=on-failure
SuccessExitStatus=143
RestartSec=10
User=wnam
Group=wnam
StandardOutput=append:/home/wnam/adctool/logs/application.log
StandardError=append:/home/wnam/adctool/logs/console.log

[Install]
WantedBy=multi-user.target

EOF

Посмотрите, и возможно отредактируйте конфигурационный файл /home/wnam/adctool/.flaskenv:

FLASK_APP=ad_tools.py
FLASK_RUN_HOST=0.0.0.0 # можно убрать по завершению тестов
FLASK_RUN_PORT=9080
FLASK_DEBUG=True # можно убрать по завершению тестов 

Посмотрите, и возможно отредактируйте конфигурационный файл /home/wnam/adctool/config.json:

{
"kcache_refresh": 3600,
"root_path": "/home/wnam/adctool"
}

Включите сервис, и запустите его

systemctl enable adctool
systemctl start adctool

Посмотрите в лог-файле /home/wnam/adctool/logs/console.log результат запуска сервиса, нет ли явных ошибок.

Перейдите в административный интерфейс WNAM, в раздел "Конфигурация - Корпоративная авторизация - Службы Active Directory - NEW". Вы увидите окно, которое показывает:

  • Статус взаимодействия с интеграционной службой adctool, с возможностью отправки команды на её перезапуск
  • Список подключенных доменов, с информацией:
    • Название домена, имя контроллера домена
    • Типы и статус интеграционных сервисов (LDAP и NTLM-коннекторы)
    • Число доменных групп, найденных и отмеченных к дальнейшему использованию в профилях аутентификации

При нажатии на кнопку "Подключить новый домен" откроется окно с вводом параметров:

Внимание! Укажите верные учетные данные администратора, который будет подключать сервер WNAM к домену (желательно с ролью доменного администратора).

Эти учетные данные используются один раз, и не будут сохранены.

В результате подключения сервер WNAM будет введен в домен, как обычная работая станция, два раза:

  • Под именем сервера, например WNAM-15, для целей NTLM-взаимодействия (используя samba/winbind)
  • Под именем сервера с постфиксом "-ADC", например WNAM-15-ADC, для целей LDAP-взаимодействия (используя python/ldap3)

Внимание! Для корректной работы LDAP-подключения необходимо, чтобы ваш контроллер домена поддерживал TLS-соединение по протоколу LDAP. Для этого обратитесь к документации вендора майкрософт.

Внимание! В настоящий момент поддерживается только одно (первое) NTLM подключение, и несколько одновременных LDAP. Это связано с особенностью сборки пакета winbind, имеющегося в Linux-дистрибутивах. Он не позволяет работать одновременно с несколькими доменами без дополнительных ухищрений. Данная ситуация планируется к исправлению в 2023 году.

Внимание! Оба механизма взаимодействия используют надежную авторизацию, основанную на автоматически обновляемых KERBEROS-тикетах. При проведении запросов к контроллеру домена применяется машинная авторизация вашего WNAM сервера, и не используются никакие служебные пользовательские учетные записи.

Если подключение к домену прошло успешно, вы увидите новую строку в таблице, с информацией о статусе доменного подключения.

Клик на строку открывает окно с информацией о группах домена, и различных действиях с ним:

Вы можете загрузить список групп домена по кнопке "Обновить список групп", причем для больших доменов можно воспользоваться фильтром:

В полученном списке вы можете отметить интересующие вас группы чекбоксами, и сохранить его. Отмеченные группы появляются в окнах выбора групп в, например, профилях аутентификации.

Также вы можете загрузить список атрибутов LDAP-объекта типа "Пользователь", для чего воспользуйтесь вкладкой "Атрибуты" и кнопкой "Получить...":

Загрузив список атрибутов, отметьте желаемые чекбоксами, и сохраните:

Вы также можете проверить механизм авторизации учетной записи по одному или другому протоколу, с использованием пары "логин-пароль":

Если тестовая проверка работает, вы можете начать применять эту систему доменной интеграции в других настройках интерфейса WNAM.

  • No labels